跳转至

04拟合fitting-ransac, hough

最小二乘,随机采样一致性

1、拟合

目标:找出边,找出轮廓

image1

image2

难点:(也是拟合面对的问题 - 噪声 - 外点 - 丢失的数据

总览:

- 如果我们知道哪些点属于直线,我们如何找到最佳 "直线参数?(所有点都是有效点

- • Least squares

- 如果有离群值怎么办? | - Robust fitting, RANSAC | | |------------------------------|-----| - 如果有很多条线呢?

- Voting methods: RANSAC, Hough transform

- 如果我们甚至不确定它是一条线怎么办?

- Model selection

2、普通最小二乘法Least squares line fitting

沿着Y方向的距离最短

E函数描述的是点到线的距离,越小越好

image3

以上公式无法用于垂直,旋转的情况

• Not rotation-invariant

• Fails completely for vertical lines

3、Total least squares全最小二乘

点到线的距离最短,怎么转距离都不会变

image4

image5

==不是很懂==

image6

image7

==3、RANSAC(不是很理解)==

随机采样一致性

外点数量很多的时候用

两点确定一条直线

思路

- 均匀地随机选择一个小的点的子集

- 对该子集拟合一个模型

-

3. 在剩下的点中找到贴近模型数据的点,其他点视为外点拒绝

- 多次这样做,并选择最佳模型

• Choose a small subset of points uniformly at random

• Fit a model to that subset

• Find all remaining points that are “close” to the model and reject the rest as outliers

• Do this many times and choose the best model

以直线为例子

image8

image9

image10

重复N次。

- 均匀地随机抽取s个点

- 对这s个点拟合直线

- 在剩余的点中找到对这条直线的离群点(即与直线的距离小于t的点)。

- 如果有d个或更多的离群点,则接受该线,并使用所有离群点重新拟合。

Repeat N times:

• Draw s points uniformly at random

• Fit line to these s points

• Find inliers to this line among the remaining points (i.e., points whose distance from the line is less than t)

• If there are d or more inliers, accept the line and refit using allinliers

需要的参数: - 初始点数量s - 通常是适合模型所需的最小数量 - 门限距离t - 要迭代的次数N - 选择N,这样,如果概率为p,至少有一个随机样本没有异常值(例如p=0.99)(离群值比率: e) - 共识集大小d image11

优缺点

- 优点

- 简单而普遍

- 适用于许多不同的问题

- 在实践中往往效果很好

- 缺点

- 有很多参数需要调整

- 对于低分母比率的问题,效果不好(迭代次数太多,或者完全失败)

- 不能总是得到一个好的初始化 不能总是在最小样本数的基础上获得良好的模型初始化 基于最小样本数的模型初始化

4、Hough function霍夫变化

投票思想Voting schemes

- 让每个特征为所有与之兼容的模型投票(让直线上的每个点给直线投票,哪个票数最高就输出)

- 希望噪声特征不会对任何单一模型进行一致投票(希望噪声不要给某一个具体的东西投票)

- 只要有足够多的特征可以在一个好的模型上达成一致,缺失的数据并不重要。(即使被遮挡了一部分点,也能找出最后结果)

霍夫的思想

把参数空间取值(m,b)进行离散化

让直线上的点对参数投票

找到最多的结果

image12

参数空间到参数空间的变换(霍夫空间)

图像空间中直线到参数空间中,变成一个点

image13

图像空间中一个点是参数空间一条直线

image14

两点的交际处,被投票

image15

存在的问题:

参数空间量化没有边界

垂直的时候怎么办?

怎么办:在极坐标系下完成

image16

算法步骤

初始化累加器H

对图像每个边界点进行遍历

对于Θ∈(0,180)

计算p,进行投票

结束

结束

设置门槛

进行非极大值抑制

image17

image18

霍夫空间

image19

垂直点?

image20

image21

image22

噪声的影响

1、峰值变得模糊,难以定位

image23

噪声点增大,格子里的投票数变少

image24

2、随机点足够多时,会进行投票,产生伪结果

image25

怎么处理噪声问题? - 选择一个好的网格/离散化 - 太离散:当太多不同的行对应于一个桶时,获得大量的投票 - 太密集:错过了线,因为一些点是不完全共线的,为不同的桶投票 - 软投票:给邻居投票,给周围格子投票,中间票数最多,越远票数越少 - 试着去掉不相关的特性 - 只取具有显著梯度幅度的边缘点 image26

image27

==霍夫圆变换(具体看吴克吧,笔记待补充==

圆有几个参数:三个,半径,坐标(X,Y)

构建三维霍夫空间

image28

image29

image30

image31