课件12 形态学图像处理
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
% 膨胀
% 闭运算
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的圆形结构元素闭操作');
相同结构元素的膨胀与闭操作的比较
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的圆形结构元素腐蚀');
常用平Hale Waihona Puke Baidu结构元素的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);
2 1 1 2 2 2
(d)膨胀运算结果图像
imdilate函数用于图像膨胀
I2 = imdilate(I, SE) I为输入原始图像 SE为由strel函数返回的自定义或预设的 结构元素对象 I2为膨胀后的输出图像
膨胀的作用与腐蚀相反,膨胀能使物体边界扩 大,具体的膨胀结果与图像本身和结构元素的 形状有关。 膨胀通常用于将图像中原本断裂的同一物体桥 接起来。
形态学图像处理
形态学即数学形态学(Mathematical Morphology)主要用于从图像中提取对表达和描 绘区域形状有意义的图像分量。 基本思想:用具有一定形态的结构元素去度量 和提取图像中的对应形状以达到对图像分析和 识别的目的 形态学图像处理的数学基础和所用语言是集合 论
形态学图像处理表现为一种邻域运算形式;
一般来说,开运算可以使图像轮廓变得光滑,还能使狭 窄的连接断开和消除细毛刺。
以相同的结构元素先后调用imerode和imdilate 即可实现开运算。Matlab也直接提供了开运算 函数imopen: I2 = imopen(I, SE) I为原始图像 SE是由strel函数返回的自定义或预设的结构元 素
击中与击不中变换用于某种形状的精确定位, 是一种形状检测的基本工具。 记为A S,可表示为:
A S ( AS1) ( AcS 2)
S S1 S2且 S1 S 2 ,实际上S1代表 其中, S中感兴趣的物体(要检测的形状)对应的 集合,而S2对应S中背景部分对应的集合。
二值形态学
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为结构元素。
算法过程如下:
将结构元素B的原点移至集合A的某一点,
将结构元素中点的坐标与集合A中该点坐标 相加,得到对集合中一点的膨胀运算结果.
对集合对集合中所有元素重复该过程
举例:
1 1 1
(b) 结 构 元 素 B
1
1
1 1 1 1 1 1 1 1
(a)目标图像A
1 1 1
(c)结构元素 B
2 1 1 2 1 1 2 1 1 1 1
一种特殊定义的邻域称之为“结构元素” (Structure Element),在每个像素位置上它与 二值图像对应的区域进行特定的逻辑运算,逻 辑运算的结果为输出图像的相应像素。 形态学运算的效果取决于结构元素的大小、内 容以及逻辑运算的性质。
1. 基础知识
在形态学运算中,把一幅图像或者感兴趣的区 域称为集合,用大写字母A,B,C表示;元素 通常指一个单个的像素,该像素坐标位置用 z=(z1, z2)表示。
开闭运算的代数性质
对偶性
扩展性(收缩性)
即开运算使原图像缩小,而闭运算使原图像 扩大
3 . 二值图像中形态学的应用
设有两幅图像A和B,如果A∩B≠ ,那么 称B击中A,其中 是空集合的符号;否则, 如果A∩B= ,那么称 B击不中A
(a)B击中A;
(b)B击不中A
击中或击不中变换
2、膨胀及其实现
对于集合A和S,使用S对A进行膨胀,记为A
S,定义为:
A S z | (S ) z A
设原有图像S,当其自身原点平移至z点时S相 对于自身的原点的映像和A有公共的交集,即 映像和A至少有一个点是重叠的,则所有这样 的z点构成的集合为S对A的膨胀图像。
不同的结构元素对腐蚀产生的影响
腐蚀的作用能够消融物体的边界,而具体的腐 蚀结果与图像本身和结构元素的形状有关。 如果物体整体上大于结构元素,腐蚀的结果使 物体变“瘦”一圈,而这一圈的大小是由结构 元素决定的; 如果物体本身小于结构元素,则腐蚀后的图像 中物体将完全消失; 如果物体仅有部分区域小于结构元素,则腐蚀 后物体会在细连通处断裂,分离为两部分。
矩形结构元素腐蚀与开运算
4、闭运算及其实现
使用结构S对A进行闭运算,记为A•S,表示为:
A S ( A S )S 含义:先用结构元素S对A进行膨胀,然后用S 对膨胀结果进行腐蚀
闭运算同样可以使轮廓变得平滑,但与开运算 相反,它通常能够弥合狭窄的间断,填充小的 洞孔。
以相同的结构元素先后调用imdilate和imerode 即可实现闭操作,也可直接调用闭运算函数 imclose 对于多次应用开运算和闭运算和只进行一次运 算的效果相同
腐蚀运算的示例
图(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)
集合的反射显示
平移、反射
-反射(相对某个中心点) -平移(相对原点)
B w w b,b B ( A) z c c a z ,a A
对一个给定的目标图像X和一个结构元素 S,将 S在图像上移动。在每一个当前位置x,S+x只 有三种可能的状态 第一种情形说明S+x与X相关最大,
对目标图像的膨胀运算,相当于对图像背景的腐
蚀运算操作;
对目标图像的腐蚀运算,相当于对图像背景的膨 胀运算操作。
3、开运算及其实现
开运算和闭运算都由膨胀和腐蚀复合而成,开 运算是先腐蚀后膨胀,而闭运算是先膨胀后腐 蚀。 使用结构元素S对A进行开运算,记为A o S,可 表示为:
A o S ( AS ) S
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的正方形结构元素开运算');
二值图像的膨胀
不同结构单元对腐蚀和膨胀的影响
SE=3*3方形结构单元
原图
SE膨胀后图像
SE腐蚀后图像
不同结构单元对腐蚀和膨胀的影响
SE=5*5方形结构单元
原图
SE膨胀后图像
SE腐蚀后图像
※腐蚀运算与膨胀运算的对偶性
膨胀和腐蚀运算的对偶性可分别表示为:
( A B) A B
c c
( AB ) c Ac B
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('膨胀后的图像');
1、集合与元素
属于:对于某一集合(图像区域)A,若点 a 在 A内,则称 a 为A的元素,a 属于 A,记为a∈A; 反之,若点 b 不属于A,记为b A。
2、集合与集合
并集:C={z|z∈A or z∈B},记为C = A∪B,即A与 B的并集C包含集合A与集合B的所有元素。 交集:C={z|z∈A and z∈B},记为C = A∩B,即A 与B的交集C包含同时属于集合A与集合B的所有元 素。 补集:Ac ={z|z A},即A的补集是不包含A的所有 元素组成的集合。 差集:A-B={z|z∈A, z B},即A与B的差由属于A 而不属于B的元素构成。 包含:集合A的每一个元素都是集合B的元素,则称 A为B的子集,记为A B
相同结构元素的腐蚀与开运算比较图
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('矩形结构元素开运算');
( A B) B A B, (A B) B A B
I=imread('circles.png'); se=strel('disk',5); % 5×5的圆形结构元素
Id=imdilate(I,se);
IC=imclose(I,se);
第二种情形说明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的腐蚀 图像。 腐蚀运算的结果不仅与结构元素的形状(矩形、 圆形、菱形等)选取有关,而且还与原点位置的 选取有关。