【matlab】拟合直线的方法

1、hough变换

图像空间–>参数空间
图像空间的点(直角坐标系) 在参数空间是一条曲线(极坐标系)
曲线:由垂直每条 过直角坐标中的点的任意斜率的直线相交,获得角度和弧长,由这些点在极坐标中形成曲线。
图像空间的一条线上的点 在 参数空间是各曲线交于一点

待更新。。。。

2、过已知点的hough变换

极坐标系和直角坐标系的换算公式如下:
16.png)
求解过程:
已知点根据自己需要设置,此处设已知点为点群的中心点(横坐标为点群横坐标的均值,纵坐标为点群纵坐标的均值);
过中心点,求出给点与中心点的连线与x轴的偏角;找出相等最多的偏角
在这里插入图片描述

xx=1:10;
Y=[2,3,6,5,8,7,5,8,9,8];
w=10;
med=round(mean(Y));   %记录这个数组的平均值
for j=1:w
   theta(j)=-atan((xx(j)-w/2)/(Y(j)-med));
end
MaxValue=mode(theta);%mode函数求矩阵某一行出现次数最多的数
ro=w/2*cos(MaxValue)+med*sin(MaxValue);
if sin(MaxValue)==0
   for x=1:w
       y(x)=ro-x*cos(MaxValue);
   end
else
   
   for x=1:w
       y(x)=(ro-x*cos(MaxValue))/sin(MaxValue);
   end
end
plot(xx,Y,'o');
hold on;
plot(xx,y);

效果图:
【matlab】拟合直线的方法_第1张图片

3、最小二乘法

4、稳健性回归

robustfit matlab中实现稳健回归的函数

如:b=robustfit(x_line,y_line);
输入:
x_line 点群的横坐标数组
y_line 点群中纵坐标数组
输出:
b是2x1数组,b(1)是拟合直线的截距,b(2)是拟合直线的斜率

特此申明:本文仅个人学习总结,如有总结不当还请您不吝赐教!

你可能感兴趣的:(直线识别,图像识别)