形态学膨胀初步

“A被B膨胀是所有结构元素原点位置组成的集合,其中映射并平移后的B至少与A的某些部分重叠”[Conzalez]

(1)、设图像数据为a:

形态学膨胀初步

a为一幅二值图像,1对应图像中心的亮区域。

结构元素为b:

形态学膨胀初步

执行膨胀:imdilate(a,b),结果为:

形态学膨胀初步

(方框区域对应原图像数据)

(2)、过程分解:

先用结构元素b扫过a的第一行

形态学膨胀初步
(方框为图像数据第一行)

再第二行:

形态学膨胀初步

再是第三行:

形态学膨胀初步

将结构元素对三行的平移结果重叠在一起,得:

形态学膨胀初步

此即最终结果。

(3)以上,结构元素是对称的,原点默认在中心,即b(2,2),对非对称结构元素,如:

k=

形态学膨胀初步
原点按floor((size(k)+1)/2)进行计算,即红色背景标识的k(2,4)。

设图像数据为a:

形态学膨胀初步

执行膨胀运算:imdilate(a,k),得:

形态学膨胀初步

也做一次过程分解:
①用结构元素扫第一行:

形态学膨胀初步

(红色背景标识的结构元素的原点位置,橙色背景为对a(5,6)的平移结果,方框标识对a(5,7)的平移结果)

②对第二行:

形态学膨胀初步

结构同上。只是下移了一行。

③将①、②步中的结果叠加,便是膨胀的最后结果。

(4)一些说明:

//对膨胀的理解见最后 

结构元素:
a=
     1     1     1     1     1
     1     1     1     1     1
     1     1     1     1     1
     1     1     1     1     1
     1     1     1     1     1
“可分解为一个值为1的5元素行矩阵和一个值为1的5元素列矩阵”指
a可分解为以下两个矩阵的膨胀:
形态学膨胀初步

而非
形态学膨胀初步

实际上,
形态学膨胀初步

(注:为便于表示,一般只写出结构元素中的1值)    
再有一例:
se=strel('diamond',3)产生结构元素:
se=
     0     0     0     1     0     0     0
     0     0     1     1     1     0     0
     0     1     1     1     1     1     0
     1     1     1     1     1     1     1
     0     1     1     1     1     1     0
     0     0     1     1     1     0     0
     0     0     0     1     0     0     0
它可分解为3个结构元素的膨胀:
decomp(1)=
     0     1     0
     1     1     1
     0     1     0
decomp(2)
     0     1     0
     1     0     1
     0     1     0
decomp(3)
     0     1     0
     1     0     1
     0     1     0
但:
形态学膨胀初步

而是:
形态学膨胀初步


(即:将各分解的结构元素进行维数扩展,再膨胀,才能还原到最先得到的结构元素)

结构元素B的镜像在图像f中平移,要保证平移后的B与f至少有一个像素相交(即“至少重叠一个1值像素”)。之

前的理解有误,不是将结构元素按其中心(原点)在图像1值元素中平移!——这是准确的说法,但对于对称的结构元素,膨胀操作的确可看成是平移。而且膨胀的结果(图像)与结构元素有着类似的形状(要膨胀很多次后才能体现出来),如下例:
原图:

形态学膨胀初步


>>g=im2bw(f);
>> se=strel([0 1 0;1 1 1;0 1 0]);
>> t=imdilate(g,se);
>> for k=1:5 h=imdilate(h,se); end
>> figure,imshow(h)
得膨胀5次后的结果:
形态学膨胀初步

膨胀10次的结果为:
形态学膨胀初步

原文地址:https://www.cnblogs.com/wlzy/p/6273364.html