matlab 图像处理之拟合圆

matlab 图像处理之拟合圆

  • 一、 matlab代码
  • 二、 结果展示

一、 matlab代码

I=imread('tu.jpg');
[x_01,y_01,r_01]=calu_circle01(I,3,6,64,65);%圆心x,圆形y,半径r   

function [x,y,r,xc,yc]=calu_circle01(I,x_begin,y_begin,x_end,y_end)    %输入参数共五个(数组 ,图像在x方向上起始位置,图像在y 方向上起始位置,图像在x方向上终点位置,图像在y 方向上终点位置)
lb_x=[];
lb_y=[];
for i =x_begin:x_end
    for j =y_begin:y_end
        if I(i,j)==1
            lb_x=[lb_x,i];
            lb_y=[lb_y,j];
        end
    end
end
x=lb_x;
y=lb_y;

n=length(x);
xx=x.*x;
yy=y.*y;
xy=x.*y;
A=[sum(x) sum(y) n;sum(xy) sum(yy)...
sum(y);sum(xx) sum(xy) sum(x)];
B=[-sum(xx+yy) ; -sum(xx.*y+yy.*y) ; -sum(xx.*x+xy.*y)];
a=A\B;  %%%%%对应圆的一般方程AX=B,求解系数a,b,c即a(1),a(2),a(3),近而得出圆心坐标与半径

你可能感兴趣的:(matlab,图像处理,计算机视觉)