数字图像处理——第九章(形态学图像处理)

形态学,即数学形态学,主要应用是从图像中提取对于表达和描绘区域形状有意义的图像分量,使后续的识别工作能抓住目标对象最为本质(最具区分能力)的形状特征,如边界、骨架和连通区域等;同时细化、像素化和修建毛刺等技术也常常应用于图像的预处理和后处理中,成为图像增强技术的有力补充。一、预备知识数学形态学的语言是集合论。在数字图像处理的形态学运算中,常把一幅图像或者图像中一个我们感兴趣的区域称为集合,用大写字母A、B、C、D等表示;元素常指一个单个像素。用该像素在图像中的整型位置坐标z = (z1,z2)来表示。
摘要由CSDN通过智能技术生成

参考:https://blog.csdn.net/Dujing2019/article/details/90050755
参考:https://blog.csdn.net/weixin_41907390/article/details/89431368
形态学,即数学形态学,主要应用是从图像中提取对于表达和描绘区域形状有意义的图像分量,使后续的识别工作能抓住目标对象最为本质(最具区分能力)的形状特征,如边界、骨架和连通区域等;同时细化、像素化和修建毛刺等技术也常常应用于图像的预处理和后处理中,是图像增强技术的有力补充。
基本思想是用具有一定形态的结构元素去度量和提取图像中的对应形状以达到对图像分析识别的目的。
形态学图像处理的应用可以简化图像数据, 保持它们基本的形状特性,并除去不相干的结构

一、预备知识

数学形态学的语言是集合论
在数字图像处理的形态学运算中,常把一幅图像或者图像中一个我们感兴趣的区域称为集合,用大写字母A、B、C、D等表示;元素常指一个单个像素。像素在图像中的位置坐标用z = (z1,z2)来表示。z∈Z2,其中Z2为二元整数序偶对的集合。
集合的反射和平移
集合B的反射用B ̂ 表示。
在这里插入图片描述
若B是描述图像中物体的像素的集合(二维点),则B ̂ 是B中(x,y)坐标被(-x,-y)替代的点的集合。
集合B按照点z = (z1,z2)的平移,表示为(B)z,定义如下:
在这里插入图片描述
若B是描述图像中物体的像素集合(二维点),则(B)z是B中(x,y)坐标被(x + z1,y + z2)替代的点的集合。
下面用图示来更直观的描述集合的反射和平移。
在这里插入图片描述
反射和平移用来表达基于结构元(SE)的操作:研究一幅图像中感兴趣特性所用的小集合或子图像。结构元就类似于空间滤波时的卷积核(模板)。
SE中的值可以是0或1。常见的结构元结构有圆形、矩形、十字形。
当不在意SE中某些点时,该位置用‘x’标记。
结构元的原点:原点的选取与具体问题有关,当SE对称且未显示原点时,则假定原点位于对称中心处。
对图像操作时,要求结构元是矩形阵列。非矩形阵列的结构元,可通过添加最小适合数量的背景元素形成一个矩形阵列来实现。
在这里插入图片描述

二、二值形态学基本运算

2.1 腐蚀和膨胀

对大多数图像,一般相对于背景,物体的颜色(灰度)更深,二值化后物体会成为黑色,背景会变成白色。
但matlab在二值图像形态学处理中,默认情况下白色是前景(物体),用1表示,黑色的为背景,用0表示。对应的,结构元中的元素1也被当作白色处理。
腐蚀和膨胀都是针对图像的高亮区域。
腐蚀和膨胀是形态学的基础。

2.1.1 腐蚀与实现

腐蚀是使图像中的高亮区域“细化”或“收缩”。
对Z2中的集合A和B,使用B对A进行腐蚀,定义如下
在这里插入图片描述
语言描述:其中B为结构元,让B在整个Z2平面上移动,如果当B的原点平移值z点事B能完全包含与A中,则所有这样的z点构成的集合即为B对A的腐蚀图像。换句话说,就是让B的原点访问A中的每个点,寻找原点经过的位置中能使B完全被A包含的点的集合。
【将结构元素的原点覆盖在每一个二值图像的1上,只要二值图像上有0和结构元素的1重叠,那么与原点重叠的值为0】
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
像素格内的“o”表示原点,"X"表示该位置的值我们不关心。

小结
图像本身、结构元的形状和原点位置的选取都会影响腐蚀操作的结果。
腐蚀能够消融物体的边界,而具体的腐蚀结果与图像本身和结构元的形状有关:如果物体整体上大于结构元,腐蚀的结构是使物体变“瘦”一圈,这一圈到底有多大是由结构元决定的:如果物体本身小于结构元,则在腐蚀后的图像中物体将完全消失;如物体仅有部分区域小于结构元(如细小的连通),则腐蚀后物体会在细连通处断裂,分离为两部分。因此在实际应用中,可以利用腐蚀运算去除物体之间的粘连,消除图像中的小颗粒噪声。

实现
和腐蚀相关的两个常用函数: imerode 和 strel
imerode:完成图像腐蚀。调用形式如下:

I2 = imerode(I,SE)
% I:为原始图像,可以是二值或灰度图像(对应于灰度腐蚀)
% SE:是由strel函数返回的自定义或预设的结构元对象。
% I2:为腐蚀后的输出图像。

strel:为各种常见形态学运算生成结构元SE。当生成供二值形态学使用的结构元素时,调用形式如下:

SE = strel(shape,parameters)
% shape:指定了结构元的形状
% parameters:输入shape有关的参数。

参考:strel 形态学结构元
在这里插入图片描述

几个代表性的情况:

SE = strel('arbitrary',NHOOD)  % 返回一个有特定邻域NHOOD指定的结构元。其中,NHOOD为一个只包含"0"和"1" 的矩阵,规定了结构元素的形状。结构元的中心位于NHOOD矩阵的中心位置,即floor((size(NHOOD)+1)/2)。

SE = strel('disk',R)  % 返回一个半径为R的圆形结构元

SE = strel('pari',OFFSET) % 返回一个只包含2个“1”的结构元。其中1个“1”位于原点,另一个“1”相对于原点的位置有OFFSET向量指定。OFFSET是一个长度为2的向量,OFFSET(1)是x方向的偏移量,OFFSET(2)是y方向的偏移量。

SE = strel('rectangle',MN)  % 返回一个高、宽均由向量MN指定的矩形结构元。MN是一个长度为2的向量,MN(1)是结构元的高度,MN(2)是结构元的宽度。

示例:不同结构元素的腐蚀效果

img = imread('binary_img.png');

se1 = strel([0 1 0;1 1 1;0 1 0]);  % 3*3的十字结构元
image1 = imerode(img,se1);

se2 = strel('disk',10);  % 半径为3的圆形结构元
image2 = imerode(img,se2);

se3 = strel('square',3);  % 3*3的正方形结构元
image3 = imerode(img,se3);

se4 = strel('square',11);  % 5*5的正方形结构元
image4 = imerode(img,se4);

se5 = strel('square',50);  % 7*7的正方形结构元
image5 = imerode(img,se5);

figure;
subplot(2,3,1); imshow(img); title('原图');
subplot(2,3,2); imshow(image1); title('经3*3的十字结构元腐蚀');
subplot(2,3,3); imshow(image2); title('经半径为10的圆形结构元腐蚀');
subplot(2,3,4); imshow(image3); title('经3*3的正方形结构元腐蚀');
subplot(2,3,5); imshow(image4); title('经11*11的正方形结构元腐蚀');
subplot(2,3,6); imshow(image5); title('经50*50的正方形结构元腐蚀');

结果
在这里插入图片描述
imerode也可以直接处理彩色图像。

2.1.2 膨胀与实现

膨胀会“增化”或“粗化”图像的高亮区域。
在这里插入图片描述
计算B对A的膨胀,要先计算B的反射。
【实际就是将结构元素的原点与二值图像中的1重叠,将二值图像中重叠部分不是1的值变为1,完成膨胀】

图像本身、结构元的形状和原点位置的选取都会影响腐蚀操作的结果。
膨胀运算具有扩大图像和填充图像中比结构元小的成分的作用,因此在实际应用中可以利用膨胀运算连接相邻物体和填充图像中的小孔和狭窄的缝隙
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
实现
imdilate函数用于完成图像膨胀。调用形式如下:

I2 = imdilate(I,SE)
% SE:由strel函数返回的自定义或预设的结构元对象。也可以直接自定义SE。
I2 = imdilate(i,ones(3,3))  % 不使用strel,而直接自定义SE

示例:连接文字裂缝

img = imread('broken-text.tif');
imshow(img);
se1 = strel('square',2);
img1 = imdilate(img,se1);

se2 = strel([0 1 0;1 1 1;0 1 0]);
img2 = imdilate(img,se2);

figure;
subplot(1,3,1); imshow(img); title('原图');
subplot(1,3,2); 
  • 53
    点赞
  • 318
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值