- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一般来说,开运算可以使图像轮廓变得光滑,还能使狭 窄的连接断开和消除细毛刺。
以相同的结构元素先后调用imerode和imdilate 即可实现开运算。Matlab也直接提供了开运算 函数imopen: I2 = imopen(I, SE) I为原始图像 SE是由strel函数返回的自定义或预设的结构元 素
形态学图像处理
形态学即数学形态学(Mathematical Morphology)主要用于从图像中提取对表达和描 绘区域形状有意义的图像分量。 基本思想:用具有一定形态的结构元素去度量 和提取图像中的对应形状以达到对图像分析和 识别的目的 形态学图像处理的数学基础和所用语言是集合 论
形态学图像处理表现为一种邻域运算形式;
2、膨胀及其实现
对于集合A和S,使用S对A进行膨胀,记为A
S,定义为:
A S z | (S ) z A
设原有图像S,当其自身原点平移至z点时S相 对于自身的原点的映像和A有公共的交集,即 映像和A至少有一个点是重叠的,则所有这样 的z点构成的集合为S对A的膨胀图像。
相同结构元素的腐蚀与开运算比较图
I=imread('circuit.tif'); thresh=graythresh(I); % 求最优阈值 bw1=im2bw(I,thresh); % 灰度图像变为二值图像 se=strel('rectangle',[20,10]); % 定义矩形结构元素 Id=imerode(bw1,se); % 腐蚀运算 IO=imopen(bw1,se); % 开运算 subplot(1,3,1),imshow(bw1); title('原图像'); subplot(1,3,2),imshow(Id); title('矩形结构元素腐蚀'); subplot(1,3,3),imshow(IO); title('矩形结构元素开运算');
subplot(2,3,1),imshow(I),title('原图像'); subplot(2,3,2),imshow(Ib); title('3×3的正方形结构元素腐蚀'); subplot(2,3,3),imshow(Ic); title('3×3的十字结构元素腐蚀'); subplot(2,3,4),imshow(Id); title('5×5的正方形结构元素腐蚀'); subplot(2,3,5),imshow(Ie); title('3×3的圆形结构元素腐蚀'); subplot(2,3,6),imshow(If); title('5×5的圆形结构元素腐蚀');
腐蚀运算的示例
图(a)中的阴影部分为集合X,图(b)中的中的阴 影部分为结构元素S,而图(c)中黑色部分给出 了腐蚀结果。
由图可见,腐蚀将图像(区域)收缩小了。
把B的中心点与X上的点一一对应,如果B上 的所有点都包含在X的范围内,则该点保留, 否则删除。
matlab中与腐蚀相关的两个函数为 (1) imerode I2=imerode(I, SE) I为原始图像,对应为二值图像 SE为由strel函数返回的自定义或预设的结构元 素对象 (2) strel strel函数为形态学运算生成结构元素SE,当生 成供二值形态使用的结构元素时,调用形式为: SE= strel(shape, parameters)
第二种情形说明S+x与X不相关,
而第三种情形说明S+x与X只是部分相关
2. 二值图像中形态学运算
1、腐蚀及其实现
对于集合A和S,使用S对A进行腐蚀,记为A S, 定义为:
AS {z | (S ) z A}
如果当S的原点移到z点时S能够完全包含于A中, 则所有这样的z点构成的集合即为S对A的腐蚀 图像。 腐蚀运算的结果不仅与结构元素的形状(矩形、 圆形、菱形等)选取有关,而且还与原点位置的 选取有关。
2 1 1 2 2 2
(d)膨胀运算结果图像
imdilate函数用于图像膨胀
I2 = imdilate(I, SE) I为输入原始图像 SE为由strel函数返回的自定义或预设的 结构元素对象 I2为膨胀后的输出图像
膨胀的作用与腐蚀相反,膨胀能使物体边界扩 大,具体的膨胀结果与图像本身和结构元素的 形状有关。 膨胀通常用于将图像中原本断裂的同一物体桥 接起来。
二值形态学
3、反射和平移
反射:又名对称,定义为 B {z | z b, b B} 即关于原集合原点对称 平移:将集合B移到点z=(z1, z2),定义为
( B) z {x | x b z, b B}
4、结构元素
设有两幅图A,S。若A是被处理对象,而S是用 来处理A的,则称S为结构元素。
% 膨胀
% 闭运算
subplot(1,3,1),imshow(I),title('原图像'); subplot(1,3,2),imshow(Id); title('5×5的圆形结构元素膨胀');
subplot(1,3,3),imshow(IC);
title('5×5的圆形结构元素闭操作');
相同结构元素的膨胀与闭操作的比较
对目标图像的膨胀运算,相当于对图像背景的腐
蚀运算操作;
对目标图像的腐蚀运算,相当于对图像背景的膨 胀运算操作。
3、开运算及其实现
开运算和闭运算都由膨胀和腐蚀复合而成,开 运算是先腐蚀后膨胀,而闭运算是先膨胀后腐 蚀。 使用结构元素S对A进行开运算,记为A o S,可 表示为:
A o S ( AS ) S
一种特殊定义的邻域称之为“结构元素” (Structure Element),在每个像素位置上它与 二值图像对应的区域进行特定的逻辑运算,逻 辑运算的结果为输出图像的相应像素。 形态学运算的效果取决于结构元素的大小、内 容以及逻辑运算的性质。
1. 基础知识
在形态学运算中,把一幅图像或者感兴趣的区 域称为集合,用大写字母A,B,C表示;元素 通常指一个单个的像素,该像素坐标位置用 z=(z1, z2)表示。
常用平坦结构元素的shape参数
I=imread('circles.png'); se=strel('square',3); % 3×3的正方形结构元素 Ib=imerode(I,se); % 腐蚀 se1=strel([0 1 0;1 1 1;0 1 0]); % 3×3的十字结构元素 Ic=imerode(I,se1); se2=strel('square',5); % 5×5的正方形结构元素 Id=imerode(I,se2); se3=strel('disk',3); % 3×3的圆形结构元素 Ie=imerode(I,se3); se4=strel('disk',5); % 5×5的圆形结构元素 If=imerode(I,se4);
二值图像的膨胀
不同结构单元对腐蚀和膨胀的影响
SE=3*3方形结构单元
原图
SE膨胀后图像
SE腐蚀后图像
不同结构单元对腐蚀和膨胀的影响
SE=5*5方形结构单元
原图
SE膨胀后图像
SE腐蚀后图像
※腐蚀运算与膨胀运算的对偶性
膨胀和腐蚀运算的对偶性可分别表示为:
( A B) A B
c c
( AB ) c Ac B
I=imread('circles.png'); se=strel('square',6); Id=imerode(I,se); IO=imopen(I,se); subplot(1,3,1),imshow(I); title('原图像'); subplot(1,3,2),imshow(Id); title('6×6的正方形结构元素腐蚀'); subplot(1,3,3),imshow(IO); title('6×6的正方形结构元素开运算');
集合的反射显示
平移、反射
-反射(相对某个中心点) -平移(相对原点)
B w w b,b B ( A) z c c a z ,a A
对一个给定的目标图像X和一个结构元素 S,将 S在图像上移动。在每一个当前位置x,S+x只 有三种可能的状态 第一种情形说明S+x与X相关最大,
bw=imread('text.png'); se=strel('line',11,90); % 生成线性结构元素 bw2=imdilate(bw,se); % 膨胀 subplot(1,2,1),imshow(bw); title('原始图像'); subplot(1,2,2),imshow(bw2); title('膨胀后的图像');
矩形结构元素腐蚀与开运算
4、闭运算及其实现
使用结构S对A进行闭运算,记为A•S,表示为:
A S ( A S )S 含义:先用结构元素S对A进行膨胀,然后用S 对膨胀结果进行腐蚀