“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次的結果為: