MATLAB二值图像用最小二乘法拟合成圆,并找其圆心
2个回答
展开全部
用最小二乘法可以得出,圆心横坐标就是图上点的横坐标的平均值,圆心纵坐标就是图上的点的
坐标的平均值;(只找了左边的圆 右边的一样,坐标都是像素坐标)
clc,clear;
data=imread('round.PNG');
data1=double(data(:,1:250));
data2=double(data(:,251:506));
% figure(1)
% imshow(data1);
% figure(2)
% imshow(data2);
%对于第一个圆
% figure(3)
% mesh(data1)
[x,y]=find(data1>20);%第二个圆只需把data1换成data2
plot(x,y,'*');
x0=mean(x);%圆心横坐标
y0=mean(y);%圆心纵坐标
hold on
plot(x0,y0,'*');
r=mean(sqrt((x-x0).^2+(y-y0).^2))
hold on
xx=x0-r:x0+r;
y1=sqrt(r^2-(xx-x0).^2)+y0;
y2=-sqrt(r^2-(xx-x0).^2)+y0;
plot(xx,y1,'r')
plot(xx,y2,'r')
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询