1. 原理
- 最小二乘法(leastSquares)的原理1
leastSquares通过最小化测量数据与模型数据的平方和, 求出模型参数。
e=sum(Yi−f(Xi))
其中
e是k与
t的二次函数, 求其最小, 即求其极值; 求偏导dk=0,dt=0。可以计算出
k与t值。
- 随机抽样一致性(ransac)的原理2
ransac的线性拟合算法步骤大致如下:
匹配程度也可以用其他指标来衡量, 替换上面的匹配计算.
两者的共同点都是要首先确定模型, 模型分为线性模型与非线性模型. 一般常见的应用是线性模型, 如f(x)=kx+t。
2. 误差/性能分析
- leastSquares的误差为e, 但一般用相关系数r来表示, r越接近1, 模型越好; r等于0, 拟合无意义, 模型不实际情况不符合.
- ransac的误差一般用在拟合直线的一个范围内, 在此范围内点的个数占整个点集比例来衡量.
3. 差别
在应用上, 二者的差别是:
- leastSquares对噪声比较敏感, 算法简单;
- ransac能去除一些噪声的干扰, 如果假定模型与实际的情形一致, 那么一般由观测数据计算的ransac模型, 更能接近实际情况, 去除观测或过程噪声干扰, 算法稍微复杂些.
最小二乘法也可以先进行去除离群点的数据预处理, 应用ransac或穷举的方法, 利用任意两点计算一条直线, 将距离直线太远的点设置为离群点, 距离直线较近的点为符合条件的点. 循环处理, 比较群内点的个数, 记录下群内点数最多的集合. 这些点就是 去除离群点的点集合, 利用这些点再进行最小二乘法拟合.
4. 应用
在图像处理及图形学中, 这两种算法经常被用到, 特别是ransac.
在OpenCV的三维重建和标定模块中有很多应用, 如solvePnPRansac, findHomography, estimateAffine3D3等。
5. 参考
- RANSAC与最小二乘算法的应用
- RANSAC与最小二乘法实现
- leastSquares↩
- ransac↩
- opencv-ransac↩