形态学膨胀初步
“A被B膨胀是所有结构元素原点位置组成的集合,其中映射并平移后的B至少与A的某些部分重叠”[Conzalez]
(1)、设图像数据为a:
结构元素为b:
(2)、过程分解:
先用结构元素b扫过a的第一行
再第二行:
(3)以上,结构元素是对称的,原点默认在中心,即b(2,2),对非对称结构元素,如:
k=
原点按floor((size(k)+1)/2)进行计算,即红色背景标识的k(2,4)。
设图像数据为a:
(红色背景标识的结构元素的原点位置,橙色背景为对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次的结果为: