一、拟合
拟合的作用主要是给物体有一个更好的描述
根据任务选择对应的方法(最小二乘,全最小二乘,鲁棒最小二乘,RANSAC)
边缘提取只能告诉边,但是给不出来数学描述(应该告诉这个点线是谁的)
1.1 拟合任务
![](https://i-blog.csdnimg.cn/direct/9c8584203a574a889c40f941a670443b.png)
如何从边缘找出真正的线?
存在问题
①噪声(偏离)
②外点、离群点
③缺失数据(线上的点看不到了)
1.2 最小二乘
沿着y方向的距离
![](https://i-blog.csdnimg.cn/direct/f55dda3557e448cb8e5bb20d5e42a5a8.png)
问题:
不能描述垂直的线
摄像机方向改变可能就不能求解了
1.3 全最小二乘
找的线跟这条线上的法向量上的投影越短越好
度量的是点到直线的距离而不是点在y方向到直线的距离
![](https://i-blog.csdnimg.cn/direct/e2aa376740e54fd386349f4170c9b506.png)
![](https://i-blog.csdnimg.cn/direct/76286333111240669ab03a79add6212a.png)
1.4 极大似然估计
真实的点沿着法向量方向产生了一个由噪声引起的误差,这个点的概率满足高斯分布
![](https://i-blog.csdnimg.cn/direct/db54532f4b9541e9b41ecebb48699f49.png)
概率越大越好,由决定,概率大的那个点就是我们要的直线附近的点
![](https://i-blog.csdnimg.cn/direct/9fc5b31263e64121b637a0ef0392302a.png)
![](https://i-blog.csdnimg.cn/direct/26d669687cba43fc8e5dc0fd1eadc24a.png)
![](https://i-blog.csdnimg.cn/direct/9aa6f393487649e389b4042de01d1ae7.png)
有外点效果不好,用鲁棒的最小二乘
总损失=点到直线的距离
1.5 鲁棒的最小二乘
不用点到直线的距离作为损失
u是点到直线的距离,σ(尺度参数)来控制点到直线距离的影响(距离多少点没有贡献了),太远的点就是噪声点,就不考虑了。
σ=10时,超过10以后贡献就小了,远的点不要了
![](https://i-blog.csdnimg.cn/direct/3b40a380098840c595fba100692eae2b.png)
![](https://i-blog.csdnimg.cn/direct/bc3f38ce3d1f46dc99bf93acfe0916eb.png)
σ选的太小
σ选的太大,和最小二乘就没有区别了,解决不了问题了
σ最好选择1.5倍的平均残差
1.6 RANSAC
多条线,噪点太多,外点太多
随机采样一致性算法
1.选择一个最小的集合:随机选2个点
2.写出直线方程(2点确定一条直线)
3.剩下的点给这个直线投票,就是看剩下的点到直线的距离之和,设置一个小门限,如果这条直线有90个点进行投票就记下这条直线
再选两点,重复上3个步骤,哪条直线的票数高就留下哪条直线,就是最后的输出
最小二乘的方法: (不对)
RANSAC方法:1.任选两点
2.写出直线方程(2点确定一条直线)
3.剩下的点给这个直线投票,就是看剩下的点到直线的距离之和
4.设置一个小门限,如果这条直线有90个点投票(在门限内)就记下这条直线
5.重复上述步骤
6.确定最合适的直线
![](https://i-blog.csdnimg.cn/direct/cb147af9f3b14251b3833615560d32fd.png)
1.7 RANSAC参数
s:几个点
N:迭代多少次才能选择出合适的点,先给出得出这条线的正确概率
1-e:属于这条线点的概率
外点率e越高,需要迭代的次数N就越多
![](https://i-blog.csdnimg.cn/direct/f441dd48758046bc87a61024a18c31cd.png)
![](https://i-blog.csdnimg.cn/direct/04fef071da754e4e9b18dd37eea2534a.png)
1.8自适应方法
真实情况下很多时候不知道外点率e,N就不知道
先假设N=无穷,先随便选两个点计算出内点率,就能得出外点率e,带入算出N。计算出的N越小越好,依次迭代 找到直线l和内点数d
![](https://i-blog.csdnimg.cn/direct/f3a8f4a8b4f04965b96dcadcefe0d72e.png)
1.9 RANSAC的应用实例
随便选取三对点,算出abcdef,用其他的点进行投票(满足一致性),重复上述步骤,
![](https://i-blog.csdnimg.cn/direct/5aee1d4bd16a430a826eb0a86bb51fb6.png)
1.10 霍夫变换
- 适用于检测具有明确数学表达式的形状,如直线、圆、椭圆等。在道路检测、车道线检测等场景中,霍夫变换可以快速检测出直线状的道路边界或车道线。
图像空间中的一条直线对应参数空间中的一个点
![](https://i-blog.csdnimg.cn/direct/d17ec9a8dd5e428b9a67438dbce9f0a7.png)
图像空间中的一个点对应参数空间中的一条直线
![](https://i-blog.csdnimg.cn/direct/a7ca9c8ff37649d39ce17b3025196859.png)
直线垂直时?
极坐标表示
一个点选取为0-180度,算出一条直线,选取所有直线的交点对应的
和
![](https://i-blog.csdnimg.cn/direct/96fe6ac863694d5ea5e84b325caff087.png)
![](https://i-blog.csdnimg.cn/direct/0901f8f6c29b44a1ad0806f6af30c6fc.png)
噪声影响
![](https://i-blog.csdnimg.cn/direct/d6a7c4bfe80247da93cea65281605e04.png)
噪声点多,投票的格子变少
![](https://i-blog.csdnimg.cn/direct/e8f262a618a34333a4468a01251c9eba.png)
随机点多,也会对产生投票,会产生很多线
![](https://i-blog.csdnimg.cn/direct/eda0ce839049407bbf201be3d5021d0c.png)
![](https://i-blog.csdnimg.cn/direct/89b9d9a868ba4a5f8cff7f4cd16f65db.png)
梯度方向?(不需要选取θ为180度范围那么大)
霍夫变换改进算法:
Canny算子把边缘的点提取出来,知道梯度方向就知道,只选取
附近计算就可以了
![](https://i-blog.csdnimg.cn/direct/7a493e1e14694227823a89ce801319a5.png)
针对圆形,先找到梯度方向,针对一个点选取不同的r(一个r就会有两个点,对应两个圆心)画出直线,会有两条,一个向心一个离心,
![](https://i-blog.csdnimg.cn/direct/26842632dff648e9bf55bc845731072f.png)
![](https://i-blog.csdnimg.cn/direct/a9313bb139fd484bb2039e7be1990df1.png)