一次图像处理的作业:
用最小二乘法拟合散点集所组成的椭圆:
function ellipse = fitellipse(X,Y)
if nargin == 0
% Read the original picture
x_ori = [];
y_ori = [];
f=imread('test2.png');
% Convert the picture to gray scale
f = rgb2gray(f);
[m,n]=size(f);
for i=1:m
for j=1:n
if(f(i,j)>200)
x_ori=[x_ori,j];
y_ori=[y_ori,i];
end
end
end
% Plot
clf
plot(x_ori,y_ori,'o');set(gca,'YDir','reverse');axis([1,n,1,m])
figure(gcf)
params = fitellipse(x_ori,y_ori);
Returned = round(params.*[1 1 1 1 180])
% Show the ellipse
t = linspace(0,pi*2);
x = params(3) * cos(t);
y = params(4) * sin(t);
x_ori = x*cos(params(5))-y*sin(params(5)) + params(1);