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]'];