我用的模板是se=[0 1 0;1 1 1 ;0 1 0] 按理说我的二值图像中面积小于5的区域都不会被腐蚀掉 但是我经过imerode后 我的2个目标区域被腐蚀的只有一个区域了 那个面积很小的区域被腐蚀掉了 是什么情况???
为此,我做了如下测试:
clc
clear all
close all
a=[0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 1 1 1 1 0 0 0
0 0 0 0 1 1 1 1 1 0 0 0
0 0 0 1 1 1 1 1 1 0 0 0
0 0 0 1 1 1 1 1 1 0 0 0
0 0 0 0 0 1 1 1 0 0 0 0
0 1 1 0 0 1 1 1 1 1 1 0
1 1 1 1 0 1 1 1 1 1 1 0
1 1 1 1 0 1 1 1 1 1 1 0
0 1 1 0 0 1 1 1 1 1 1 0];
figure(1),imshow(a);
[L,n] = bwlabel(a); %标记
STATS = regionprops(L,'area'); %取区域面积
Area=[STATS.Area]
se2= [0 1 0
1 1 1
0 1 0];
for i=1:3
a=imerode(a,se2)
end
经过三次腐蚀后 左下角的那块区域就消失了,应该是[ 0 0 0 0
0 1 1 0
0 1 1 0
0 0 0 0] 这种情况才对啊??
请大家帮忙指点一二! 谢谢大家!
以下是运行的结果:
Area =
12 48
a =
0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 1 1 1 0 0 0 0
0 0 0 0 1 1 1 1 0 0 0 0
0 0 0 0 0 1 1 1 0 0 0 0
0 0 0 0 0 0 1 0 0 0 0 0
0 0 0 0 0 0 1 1 0 0 0 0
0 1 1 0 0 0 1 1 1 1 0 0
0 1 1 0 0 0 1 1 1 1 0 0
0 0 0 0 0 0 1 1 1 1 0 0
a =
0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 1 1 0 0 0 0 0
0 0 0 0 0 0 1 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 1 0 0 0 0
0 0 0 0 0 0 0 1 1 0 0 0
0 0 0 0 0 0 0 1 1 0 0 0
a =
0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0