区域转换为二值图像_Matlab图像处理系列教程(一)

2e81504ec50dbc19879f3ae42a937b06.gif

小编近期为大家带来一套全面系统的MATLAB在图像处理中的应用。

灰度处理 

灰度化处理就是将一幅色彩图像转化为灰度图像的过程。彩色图像分为R,G,B三个分量,分别显示出红绿蓝等各种颜色,灰度化就是使彩色的R,G,B分量相等的过程。灰度值大的像素点比较亮(像素值最大为255,为白色),反之比较暗(像素最下为0,为黑色)。

X=imread('football.jpg'); %读取文件格式为.jpg,% 文件名为 football 的 RGB 图像的信息I=rgb2gray(X); %将 RGB 图像转换为灰度图像set(0,'defaultFigurePosition',[100,100,1000,500]); %修改图形图像位置的默认设置set(0,'defaultFigureColor', [1 1 1]); %修改图形背景颜色的设置subplot(121),imshow(X); %显示原 RGB 图像subplot(122),imshow(I); %显示转换后灰度图像

b0d0bc918c4736c69dbecd87f9bbc1c3.png

索引图像是一种把像素值直接作为RGB调色板下标的图像。索引图像可把像素值“直接映射”为调色板数值,原理就是矩阵 X 中的每个值,代表的是映射矩阵 map 的行,然后颜色既是map 中这一行的组合色调。MATLAB自带的woman信号构成的图像的像素索引矩阵和调色板矩阵。woman图像是一幅典型的索引图像。其图像矩阵大小为256×256,表示有65535个像素点构成。调色板大小为256×3,表示有256种颜色。我们看到图像索引矩阵的(1,1)单元的内容为124,也就是说这一点像素的颜色就是调色板矩阵的第125行所定义的颜色。可以看到调色板矩阵的第125行为[0.60536,0.60536,0.60536],表示RGB三个分量的比重都比较重且在图像中的地位相同。

索引图像 

RGB = imread('football.jpg'); %读取图像信息[X1,map1]=rgb2ind(RGB,64); %将 RGB 图像转换成索引图像,颜色种数 N 是 64 种 [X2,map2]=rgb2ind(RGB,0.2); %将 RGB 图像转换成索引图像,颜色种数 N 是 216 种map3= colorcube(128); %创建一个指定颜色数目的 RGB 颜色映射表X3=rgb2ind(RGB,map3);set(0,'defaultFigurePosition',[100,100,1000,500]); %修改图形图像位置的默认设置set(0,'defaultFigureColor', [1 1 1]); %修改图形背景颜色的设置figure; subplot(131),imshow(X1,map1); %显示用最小方差法转换后索引图像subplot(132),imshow(X2,map2); %显示用均匀量化法转换后索引图像subplot(133),imshow(X3,map3); %显示用颜色近似法转换后索引图像

82f87d53335ba1577432741e5616219c.png

图像二值化 

图像的二值化处理就是讲图像上的点的灰度置为0或255,也就是讲整个图像呈现出明显的黑白效果。即将256个亮度等级的灰度图像通过适当的阀值选取而获得仍然可以反映图像整体和局部特征的二值化图像。在数字图像处理中,二值图像占有非常重要的地位,特别是在实用的图像处理中,以二值图像处理实现而构成的系统是很多的,要进行二值图像的处理与分析,首先要把灰度图像二值化,得到二值化图像,这样子有利于再对图像做进一步处理时,图像的集合性质只与像素值为0或255的点的位置有关,不再涉及像素的多级值,使处理变得简单,而且数据的处理和压缩量小。为了得到理想的二值图像,一般采用封闭、连通的边界定义不交叠的区域。所有灰度大于或等于阀值的像素被判定为属于特定物体,其灰度值为255表示,否则这些像素点被排除在物体区域以外,灰度值为0,表示背景或者例外的物体区域。如果某特定物体在内部有均匀一致的灰度值,并且其处在一个具有其他等级灰度值的均匀背景下,使用阀值法就可以得到比较的分割效果。如果物体同背景的差别表现不在灰度值上(比如纹理不同),可以将这个差别特征转换为灰度的差别,然后利用阀值选取技术来分割该图像。动态调节阀值实现图像的二值化可动态观察其分割图像的具体结果。

4f7582fc31a73753e5f4548fd104026a.png

I=imread('rice.png'); %读取文件格式为.jpg,BW1=im2bw(I,0.4); %将灰度图像转换为二值图像,level 值为 0.4BW2=im2bw(I,0.6); %将灰度图像转换为二值图像,level 值为 0.6set(0,'defaultFigurePosition',[100,100,1000,500]); %修改图形图像位置的默认设置set(0,'defaultFigureColor', [1 1 1]); %修改图形背景颜色的设置figure;subplot(131),imshow(I); %显示 level=0.4 转换后的二值图像subplot(132),imshow(BW1); %显示 level=0.5 转换后的二值图像subplot(133),imshow(BW2); %显示 level=0.6 转换后的二值图像

图像滤波 

Y=filter2(h,x,’shape’)h为滤波器,x为要滤波的数据,将h放在x上移动进行模板滤波。 shape可取 full,same,valid (不写默认是same)。

I=imread('rice.png'); %读取文件格式为.jpg,H=[1 2 1;0 0 0;-1 -2 -1]; %设置 subol 算子X=filter2(H,I); %对灰度图像 G 进行 2 次滤波,实现边缘检测set(0,'defaultFigurePosition',[100,100,1000,500]); %修改图形图像位置的默认设置set(0,'defaultFigureColor', [1 1 1]); %修改图形背景颜色的设置figure,subplot(131),imshow(I);subplot(132),imshow(X,[]),colorbar(); %显示图像,并添加颜色条subplot(133),imshow(X,[]),colorbar('east');

401b5dbccf86e078940016f96ea0caac.png

二维图像纹理映射三维球体表面 

纹理映射是一种将二维图像映射到三维图形表面的技术。这种技术通过转换颜色数据使二维图像与三维图形表面保持一致。在MATLAB中的纹理映射是利用双线性渐变算法来实现图像映射的。

949b0861f4c7589aa244078095dac5b9.png

close all; %关闭当前所有图形窗口clear all; %清空工作空间变量clc; %清屏%I=imread('testpat.png'); I=imread('football.jpg'); %读取图像信息[x,y,z]=sphere; %创建三个(N+1)×(N+1)的矩阵,% 使得 surf(X,Y,Z)建立一个球体,缺省时 N 取 20set(0,'defaultFigurePosition',[100,100,1000,400]); %修改图形图像位置的默认设置set(0,'defaultFigureColor', [1 1 1]) %修改图形背景颜色的设置figure,subplot(121),warp(I); %显示图像映射到矩形平面subplot(122),warp(x,y,z,I); %将二维图像纹理映射三维球体表面grid; %建立网格

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/308588.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

7.30 KubeCon2020 | 今天下午5:40 近几年最火爆的技术峰会之分享主题.NET开发者与Kuberentes...

01最负盛名的峰会自2018 年 KubeConCloudNativeCon 首次落地中国以来,CNCF 每年都会在中国举办云原生技术大会。大会每年都能吸引来自五大洲 48 个国家的开源精英和技术大咖前来参会。阿里、华为、腾讯等你所知道的每一家大厂都是KubeCon的大会赞助商。滑动查看更多…

[MyBatisPlus]测试BaseMapper的功能测试自定义功能

测试BaseMapper的功能 添加功能 /*** 实现新增用户信息*/Testpublic void testInsert(){User user new User();user.setName("张三");user.setAge(23);user.setEmail("zhangsanxx.com");int result userMapper.insert(user);System.out.println("r…

[MyBatisPlus]通用Service接口测试通用Service

通用Service接口 说明: 通用 Service CRUD 封装IService接口,进一步封装 CRUD 采用 get 查询单行 remove 删 除 list 查询集合 page 分页 前缀命名方式区分 Mapper 层避免混淆,泛型 T 为任意实体对象建议如果存在自定义通用 Service 方法的可能&#x…

程序员修神之路--晦涩难懂的CAP,是否完全正确?

微信搜一搜架构师修行之路菜菜哥,帮忙解决一个问题是不是面试又被虐了?是的呢,这次面试官问我什么是CAP?这个可就说来话长了......01PARTCAP说到CAP,首先不能不说分布式系统,前面几篇也说过,分布…

[MyBatisPlus]雪花算法

雪花算法 背景 需要选择合适的方案去应对数据规模的增长,以应对逐渐增长的访问压力和数据量。 数据库的扩展方式主要包括:业务分库、主从复制,数据库分表。 数据库分表 将不同业务数据分散存储到不同的数据库服务器,能够支撑…

如何隐藏运行 winform 程序?

群里有个同学问了问题 如何隐藏运行 winform 程序?,提起了我的兴趣,玩玩呗?那就玩玩吧!第一版 将一个 winform 程序隐藏执行,隐藏执行的方式有很多种,第一个 demo 就用最简单的方式,…

[MyBatisPlus]常用注解_@TableName_@TableId_@TableField_@TableLogic通过全局配置配置主键生成策略

常用注解 TableName 设置实体类所对应的表名 如果全部表都有某个前缀,难道我们要通过一个一个加注解的方式来解决实体类对应表名问题吗? 我们可以通过配置文件来解决这个问题: TableId 将属性所对应的字段指定为主键 TableId的value属性 TableId的ty…

最小堆和最大堆的建立以及基本操作

前言: 堆的特性:用数组表示的完全二叉树。有序性:任一结点的关键字是其子树所有结点的最大值 (最小值) 堆的本质:就是一颗 完全二叉树 堆的数据存储: 用的是 数组 建堆时主要的操作:就是调整 对数组的元素…

字符串是单一字符的无序组合吗_Python学习笔记(八)组合数据类型

Python语言中最常用的组合数据类型有3大类, 分别是集合类型、序列类型和映射类型。集合类型是一个具体的数据类型名称,而序列类型和映射类型是一类数据类型的总称。集合类型是一个元素集合,元素之间无序,相同元素在 集合中唯一存在…

[MyBatisPlus]条件构造器wapper

wapper简介 QueryWrapper 组装查询条件 查询用户名包含a,年龄在20到30之间,邮箱信息不为null的用户信息 package com.xxxx.mybatisplus;import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.xxxx.mybatisplus.mapper.Use…

推荐:适合小白入门的Asp.Net Core 开源学习手册

前言推荐一个入门级的.NET Core开源项目,非常适合新手入门学习.NET Core。开源地址:https://github.com/windsting/little-aspnetcore-book。手册在线下载地址:https://nbarbettini.gitbooks.io/little-asp-net-core-book/content/chapters/mvc-basics/c…

从当前元素继续寻找_云漫圈 | 寻找无序数组的第k大元素

戳蓝字“CSDN云计算”关注我们哦!作者:小灰来源:程序员小灰本期封面作者:泰勒太乐————— 第二天 —————题目是什么意思呢?比如给定的无序数组如下:如果 k6,也就是要寻找第6大的元素&a…

DFS和BFS总结和代码演示(详解)

1:BFS 广度优先搜索类似于树的层次遍历过程。它需要借助一个队列来实现。如图2-1-1所示,要想遍历从v0到v6的每一个顶点,我们可以设v0为第一层,v1、v2、v3为第二层,v4、v5为第三层,v6为第四层,再…

Kestrel的ListenAnyIP和ListenLocalhost的区别

问题在上篇文章,把AAStore.ProductCatalog.Api部署到docker中运行,输入地址访问报错如下图,说明外部无法访问这个url。(当然本地开发环境测试是可以访问的)。后来修改此处options.ListenLocalhost(8081)的代码改成opti…

[MyBatisPlus]Plus分页插件的配置和使用

Plus分页插件的配置和使用 配置类 package com.xxxx.mybatisplus.config;import com.baomidou.mybatisplus.annotation.DbType; import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor; import com.baomidou.mybatisplus.extension.plugins.inner.Pagin…

控制是否展示_现场展示板管理不在于看,而在于管!

点击上方"五株科技",关注公众号,天天有精彩!一位日本专家根据研究数据宣称,如果中国的中小企业有效实行车间展示板管理,最大能够提升生产效率30%以上。通常被管理者小视的车间展示板,在专家眼中却…

龙芯完成.NET移植稳步推进生态建设

不久前,龙芯团队完成了.Net Core 3.1在龙芯上的移植。早在1年前,一位网友就告知,希望.Net能够移植到龙芯平台,因为一些政务应用场景有这方面的需求。只不过了一年,这就问题就被龙芯团队解决了。龙芯团队之所以移植.Net…

[MyBatisPlus]乐观锁和悲观锁

乐观锁和悲观锁 场景 一件商品,成本价是80元,售价是100元。老板先是通知小李,说你去把商品价格增加50元。小李正在玩游戏,耽搁了一个小时。正好一个小时后,老板觉得商品价格增加到150元,价格太高&#xf…

7月30日 举办专注于微服务的.NET Conf Focus

2020 年 7 月 30 日, 由.NET基金会和微软 将举办一个在线和为期一天的活动,包括 微软 .NET 团队的演讲者以及社区的演讲者。本次在线大会 专注.NET框架构建微服务,演讲者分享构建和部署云原生应用程序的最佳实践、模式、提示和技巧。有关更多信息和随时了…

7-8 哈利·波特的考试 (25 分)(详解+思路分析)真香啊

一:题目: 哈利波特要考试了,他需要你的帮助。这门课学的是用魔咒将一种动物变成另一种动物的本事。例如将猫变成老鼠的魔咒是haha,将老鼠变成鱼的魔咒是hehe等等。反方向变化的魔咒就是简单地将原来的魔咒倒过来念,例…