I=imread(); %% read the image 
        II=I();%%%capture the interested area for futher analyze
        [H,D]=imhist(II);%统计图像的灰度分布
        imshow(II);
        hold on;
        [n1,n2]=size(II);%%确定图像的大小
        hold on;
%%完成图像的读取，并且选取要划分的区域

%%寻找图像的边界
%%对于一列参数寻找边界，循环次数不一定，以此使用while循环
%%以第一列为例
I1=II(1:n1,1);%%读取第一列
JK=1:n2;%%%创建一个600百个元素的数列用来存储边界的坐标
%%从一个方向开始确认灰度是否为255
k=n1;
while I1(k)>=252
    k=k-1;
    JK(1)=k+1;
end
%%此循环可以找到一列中的255的灰度值的点

%%%针对矩阵i找到边界点
JK=1:n2;
for k=1:n2
    j=n1;
    while II(j,k)>=252
        j=j-1;
        JK(k)=j+1;
    end
end
%%%将找到的边界的点600个x坐标存储在JK数组中%%%%S将作为计数的标志
JK=JK';
S1=size(JK);%%确定JK向量的长度
JK1=(1:1:S1)';%%建立一个1-600的顺序的数组，转置
JK=[JK,JK1];%%JK中存储的就是所有边界点的坐标
%%%%上述代码完成边界的图像的读取，边界坐标的读取
figure(2);
imshow(II);
hold on;
x=JK(1:1:n2,2);
y=JK(1:1:n2,1);
plot(x,y,'.','color','y','markersize',12)


%%%圆弧拟合x
x=JK(1:1:n2,2);
y=JK(1:1:n2,1);
A = [x y ones(size(x))]\(x.^2 + y.^2);
a = A(1)/2; b = A(2)/2;
R = sqrt(A(3) + a^2 + b^2);
th = (2/n2)*pi:(2/n2)*pi:2*pi;
x1 = R*cos(th) + a;
y1 = R*sin(th) + b;
figure(3);
imshow(II);
hold on;
plot(x,y,'.','color','b','markersize',12);
hold on;
plot(x1,y1,'-','color','r','LineWidth',3);
axis([0 1200 0 1200]);

corrolation1=corrcoef(y,y1);

%%%%计算边界上每个点与圆心之间距离差
L(n2)=0;
for i=1:n2
    L(i)=sqrt((x(i)-a)^2+(y(i)-b)^2)-R;
end
L_1=find(L>0);
L_2=find(L<0);
Sum_L=sum(abs(L));
L_C=Sum_L/n2;
Roughness=Sum_L/(n2*R);


%%%%直线拟合

F=polyfit(x,y,1);
figure(4);
imshow(II);
hold on;
g(n2)=0;
for i=1:n2
    g=F(1)*x+F(2);
end

corrolation2=corrcoef(y,g);

plot(x,g,'.',x,y,'.');

LL(n2)=0;
for i=1:n2
    LL(i)=abs(F(1)*x(i)-y(i)+F(2))/sqrt(F(1)^2+1);
end
Sum_LL=sum(LL);
L_S=sum(LL)/n2;


total=[Sum_L,Sum_LL,L_C,L_S,Roughness,0,0,a,b,R,corrolation1(1,2),0,F(1),F(2),corrolation2(1,2)];
