www.pudn.com > hough.rar > draw_1.m
function pline=draw_1(im)
%该函数实现根据在一条直线上点的坐标,计算出直线参数,并画出直线的功能
y=im(1,:);
x=im(2,:);
mx=max(x);
nx=min(x);
my=max(y);
ny=min(y);
cx=mean(x);
cy=mean(y); %计算直线的范围
xx=x-cx;
yy=y-cy; %计算直线的中心点
a=sum(xx.^2)-sum(xx)^2;
b=sum(xx.*yy)-sum(xx)*sum(yy);
c=sum(yy.^2)-sum(yy)^2;
Vs=(a+c)/2+sqrt((a-c)^2/4+b^2); %最小二乘拟合直线
if abs((Vs-a)/(b+eps))<=1
my=floor(cy+(Vs-a)/(b+eps)*(mx-cx));
ny=floor(cy+(Vs-a)/(b+eps)*(nx-cx));
else
mx=floor(cx+b/(Vs-a+eps)*(my-cy));
nx=floor(cx+b/(Vs-a+eps)*(ny-cy));
end
line([nx,mx],[ny,my]); %画出直线
pline=[[nx,ny]',[mx,my]'];