
clear,clc
h=imread('ceshi2.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
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)
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
end
if(flag==1)
break
end
end
end
end
end
figure,imshow(i)
%在上面D的图像上用B进行膨胀
i2=i
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
end
if(flag==1)
break
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
end
end
end
figure,imshow(i)
function [y,y1]=select(ImageData,h,w)%取得最佳阈值将图像二值化thr=0.5delta=0.05
y=(ImageData>=thr*mean(max(ImageData)))
BW2=bwareaopen(y,10)%删除小面积对象
%格式:BW2 = bwareaopen(BW,P,conn)
%作用:删除二值图像BW中面积小于P的对象,默认情况下conn使用8邻域。
SE=strel('square',15)%创建一个正方形的结构元素
%SE = strel(shape, parameters)
%根据shape指定的类型创建一个结构元素SE。
IM2=imdilate(BW2,SE)%图像膨胀
IM3=imerode(IM2,SE)%图像腐蚀
%1.开运算(先腐蚀后膨胀的过程):利用它可以消除小物体,在纤细点处分离物体,平滑较大物体边界,但同时并不明显改变原来物体的面积。OPEN(X,B)
%2.闭运算(先膨胀后腐蚀的过程):利用它可以填充物体内细小空洞,连接临近物体、平滑其边界,但同时并不明显改变原来物体的面积。CLOSE(X,B)
average=sum(sum(IM3))/(h*w) %将图像二值化
while(average<0.03||average>0.08)
if(average<0.03)
thr=thr-delta
else
thr=thr+delta
end
y=(ImageData>=thr*mean(max(ImageData)))%求向量元素的平均值
BW2=bwareaopen(y,10)%再一次删除小面积
IM2=imdilate(BW2,SE)%膨胀
IM3=imerode(IM2,SE)%腐蚀
average=sum(sum(IM3))/(h*w)%求灰度的平均值
end
y1=y
y=IM3
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)