您的位置:首页 > 编程语言 > MATLAB

《数字图像处理》--冈萨雷斯(第九章)

2017-09-10 10:33 274 查看
形态学图像处理

预备知识

膨胀和腐蚀

膨胀与腐蚀的结合

形态学图像处理

预备知识

集合论中的基本概念



二值图像、集合和逻辑运算符

在MATLAB中用逻辑表示于二值图像上执行集合运算

集合运算二值图像的MATLAB语句名称
A ∩ BA & B
A ∪ BA | B
Ac~A
A - BA &~B

膨胀和腐蚀

膨胀

膨胀(dilation)可以看做是腐蚀的对偶运算,其定义是:把结构元素B平移a后得到Ba,若Ba击中X,我们记下这个a点。所有满足上述条件的a点组成的集合称做X被B膨胀的结果。用公式表示为:D(X)={a | Ba↑X}=X

B,如图6.13所示。图6.13中X是被处理的对象,B是结构元素,不难知道,对于任意一个在阴影部分的点a,Ba击中X,所以X被B膨胀的结果就是那个阴影部分。阴影部分包括X的所有范围,就象X膨胀了一圈似的,这就是为什么叫膨胀的原因。

函数imdilate

A2 = imdilate(A, B)


其中 A和A2都是二值图像,B是指定结构元素的由 0 和1 组成的矩阵



结构元素的分解

膨胀满足结合率

A ⊕(B⊕C) = (A⊕B)⊕C

假设一个结构元素B可以表示为两个结构元素B1和B2的膨胀,即

B = B1 ⊕ B2

函数strel

se = strel(shape, parameters)






以分解的形式来产生结构元素

>> se = strel('diamond', 5)
>> decomp = getsequence(se);


decomp是strel 对象的四元素向量,分解中的四结构元素可以通过索引到decomp中来逐个地检查。

腐蚀

函数imerode





膨胀与腐蚀的结合

开运算和闭运算

函数imopen 和 imclose

>> f = imread('9 (5).tif');
>> se = strel ('square', 20);
>> fo = imopen(f, se);
>> fc = imclose(f,se);
>> foc = imclose(fo, se);






由上图可看出 先开后闭 与先闭后开的效果一样

击中或不击中变换

函数bwhitmiss

C为结果,A为输入图像,B1和B2为结构元素

>> f = imread('9 (7).tif');
>> B1 = strel([0 0 0;0 1 1;0 1 0]);
>> B2 = strel([1 1 1; 1 0 0;1 0 0]);
>> g = bwhitmiss(f, B1, B2);




使用查找表

IPT提供两个函数 makelut 和applylut

makelut 为用户的函数构造一个查找表

applylut 使用这个查找表来处理二值图像

函数endpoints

​ 该函数使用 makelut 和applylut 在二值图像中检测端点



函数conway

该函数使用 makelut 和 applylut 来实现生命游戏 Conway

函数bwmorph

可基于膨胀、腐蚀和查找表操作的组合实现许多有用的操作,该函数的调用语法为

g = bwmorph(f, operation, n)


f 是一幅输入的二值图像,operation是一个指定期望操作的字符串

n 是一个用于指定将被重复的操作次数的正整数。



>> g1 = bwmorph(f, 'thin', 1);
>> g2 = bwmorph(f, 'thin',2);
>> ginf = bwmorph(f, 'thin',Inf);




>> fs = bwmorph(f, 'skel', Inf);
>> for k = 1:5
fs = fs & ~endpoints(fs);
end




内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  图像处理 matlab