1,令A表示图形中阴影表示的集合

1,令 A 表示图形中阴影表示的集合。参考显示的结构元素,画出下
列形态学运算的结果。
A
(a)
 AB   B
4
2
其中,L=47;
clear,clc;
h=ones(235,235);
i=im2uint8(h);
for i1i=95:141
for i1j=48:188
i(i1i,i1j)=153;
end
end
for i1i=48:188
for i1j=95:141
i(i1i,i1j)=153;
end
1
end
figure,imshow(i);
i1=i;
for i1i=24:212%用B4腐蚀
for i1j=24:212
flag=0;
if(i(i1i,i1j)==153)
for ai=i1i-23:i1i+23
for aj=i1j-23:i1j+23
if(i1(ai,aj)==255&&sqrt(double((ai-i1i)^2+(aj-i1j)^2))<=23)
i(i1i,i1j)=255;
flag=1;
break;
end
end
if(flag==1)
break;
end
end
end
end
end
figure,imshow(i);
i2=i;
for i1i=17:219%用B2膨胀
for i1j=17:219
flag=0;
for ai=i1i-16:i1i+16
for aj=i1j-16:i1j+16
if(i2(ai,aj)==153&&((ai>=i1i-5&&ai<=i1i+5&&aj>=i1j-16
&&i1j<=i1j+16)||(ai>=i1i-16&&ai<=i1i+16&&aj>=i1j-5&&a
j<=i1j+5)))
i(i1i,i1j)=153;
flag=1;
break;
end
if(flag==1)
break;
end
end
end
end
end
figure,imshow(i);
2
(b)
 AB   B
1
3
 AB   B
1
clear,clc;
h=ones(235,235);
i=im2uint8(h);
for i1i=95:141
for i1j=48:188
i(i1i,i1j)=153;
end
end
for i1i=48:188
for i1j=95:141
i(i1i,i1j)=153;
end
end
figure,imshow(i);
i1=i;
for i1i=24:212%用B1腐蚀
for i1j=6:230
flag=0;
if(i(i1i,i1j)==153)
for ai=i1i-23:i1i+23
for aj=i1j-5:i1j+5
if(i1(ai,aj)==255)
i(i1i,i1j)=255;
flag=1;
break;
end
end
if(flag==1)
break;
end
end
end
end
3
3
end
figure,imshow(i);
i2=i;
for i1i=23:235%用B3膨胀
for i1j=23:235
flag=0;
for ai=i1i-22:i1i
for aj=i1j-22:i1j
if(i2(ai,aj)==153)
i(i1i,i1j)=153;
flag=1;
break;
end
if(flag==1)
break;
end
end
end
end
end
figure,imshow(i);
(c)
 A B  B
1
3
 A B  B
1
clear,clc;
h=ones(235,235);
i=im2uint8(h);
for i1i=95:141
for i1j=48:188
i(i1i,i1j)=153;
end
end
4
3
for i1i=48:188
for i1j=95:141
i(i1i,i1j)=153;
end
end
figure,imshow(i);
i1=i;
for i1i=24:212%用B1膨胀
for i1j=6:230
flag=0;
for ai=i1i-23:i1i+23
for aj=i1j-5:i1j+5
if(i1(ai,aj)==153)
i(i1i,i1j)=153;
flag=1;
break;
end
if(flag==1)
break;
end
end
end
end
end
i2=i;
figure,imshow(i);
for i1i=23:235%用B3膨胀
for i1j=23:235
flag=0;
for ai=i1i-22:i1i
for aj=i1j-22:i1j
if(i2(ai,aj)==153)
i(i1i,i1j)=153;
flag=1;
break;
end
if(flag==1)
break;
end
end
end
end
end
figure,imshow(i);
5
(d)
 A  B  B
3
2
 A  B  B
3
clear,clc;
h=ones(235,235);
i=im2uint8(h);
for i1i=95:141
for i1j=48:188
i(i1i,i1j)=153;
end
end
for i1i=48:188
for i1j=95:141
i(i1i,i1j)=153;
end
end
figure,imshow(i);
i2=i;
for i1i=23:235%用B3膨胀
for i1j=23:235
flag=0;
for ai=i1i-22:i1i
for aj=i1j-22:i1j
if(i2(ai,aj)==153)
i(i1i,i1j)=153;
flag=1;
break;
end
if(flag==1)
break;
end
end
end
end
end
figure,imshow(i);
6
2
i1=i;
for i1i=17:219%用B2腐蚀
for i1j=17:219
flag=0;
if(i(i1i,i1j)==153)
for ai=i1i-16:i1i+16
for aj=i1j-16:i1j+16
if(i1(ai,aj)==255)
i(i1i,i1j)=255;
flag=1;
break;
end
end
if(flag==1)
break;
end
end
end
end
end
figure,imshow(i);
2,参考所示的图像和元素结构,画出经下列操作后 C,D,E,F 是什么
样子:C  AB ; D  C  B ; E  D  B ; F  EB 。初始集合 A 由除了
结构元素 B 以外的所有白色图像分量构成。
B
原图像
7
C  AB
D CB
E  DB
F  EB
clear,clc;
h=imread('haha1.bmp');
i=im2bw(h);
i1i=187;
i1j=192;
for ai=181:193
for aj=186:198
if(sqrt(double(ai-i1i)^2+double(aj-i1j)^2)<=5)
i(ai,aj)=1;
end
end
end
figure,imshow(i);
i1=i;
for i1i=6:205%用B腐蚀A
for i1j=6:205
flag=0;
if(i1i>=181&&i1i<=193&&i1j>=186&&i1j<198)
continue;
else
8
if(i(i1i,i1j)==1)
for ai=i1i-5:i1i+5
for aj=i1j-5:i1j+5
if(i1(ai,aj)==0&&sqrt(double((ai-i1i)^2+(aj-i1j)^2))<=5)
i(i1i,i1j)=0;
flag=1;
break;
end
end
if(flag==1)
break;
end
end
end
end
end
end
figure,imshow(i);
在上面 C 的图像上用 B 进行膨胀
i2=i;
for i1i=6:205%用B膨胀C
for i1j=6:205
flag=0;
if(i1i>=175&&i1i<=199&&i1j>=180&&i1j<204)
continue;
else
for ai=i1i-5:i1i+5
for aj=i1j-5:i1j+5
if(i2(ai,aj)==1&&sqrt(double((ai-i1i)^2+(aj-i1j)^2))<=5)
i(i1i,i1j)=1;
flag=1;
break;
end
if(flag==1)
break;
end
end
end
end
end
end
figure,imshow(i);
在上面 D 的图像上用 B 进行膨胀
i2=i;
9
for i1i=6:205%用B膨胀D
for i1j=6:205
flag=0;
if(i1i>=175&&i1i<=199&&i1j>=180&&i1j<204)
continue;
else
for ai=i1i-5:i1i+5
for aj=i1j-5:i1j+5
if(i2(ai,aj)==1&&sqrt(double((ai-i1i)^2+(aj-i1j)^2))<=5)
i(i1i,i1j)=1;
flag=1;
break;
end
if(flag==1)
break;
end
end
end
end
end
end
figure,imshow(i);
在上面 E 的图像上用 B 进行腐蚀
i1=i;
for i1i=6:205%用B腐蚀E
for i1j=6:205
flag=0;
if(i1i>=181&&i1i<=193&&i1j>=186&&i1j<198)
continue;
else
if(i(i1i,i1j)==1)
for ai=i1i-5:i1i+5
for aj=i1j-5:i1j+5
if(i1(ai,aj)==0&&sqrt(double((ai-i1i)^2+(aj-i1j)^2))<=5)
i(i1i,i1j)=0;
flag=1;
break;
end
end
if(flag==1)
break;
end
end
end
10
end
end
end
figure,imshow(i);
11