I=imread('D:/xx.bmp');
threshold=graythresh(I); %计算将灰度图像转化为二值图像所需的门限
I1=im2bw(I,threshold);%将灰度图像转化为二值图像
I2=~I1;
dim=size(I1);
col=round(dim(2)/2)-90;%计算起始点列坐标
row=find(I1(:,col),1);%计算起始点行坐标?
connectivity=8;num_points=1390;
contour=bwtraceboundary(I1,[row,col],'N',connectivity,num_points);%提取边界
b= edge(I2,'sobel');%finding edges
[height,width]=size(b);
R=60;
fori=60:1:width-60
for j=60:1:height-60
for r=60:1:120
for a=0:1:360
t=1;
x=i+r*sin(a);y=j+r*cos(a);
x=round(x);y=round(y);
if(x>0)&&(x0)&&(yif b(y,x)==1||b(j,i)==1
t=0;
break;
end
end
end
if t==0
break;
end
if RR=r;ox=i;oy=j;
end
end
end
end
i=1;
for c=pi/10000:pi/10000:2*pi;
x(i)=ceil(cos(c)*R+ox);
y(i)=ceil(sin(c)*R+oy);
i=i+1;