Matlab ransac 库函数介绍
matlab 自带了 ransac 函数,这里总结一下用法。matlab 自带的这个函数其实是 MSAC(M-estimator sample consensus)算法,但其实差不多,它对给定数据集,以及自定的模型计算函数和误差计算函数返回具有最大内点的模型。
函数声明
从 ransac 函数的源文件介绍中截取一段:
1 | %RANSAC Fit a model to noisy data. |
Matlab 官网介绍:Fit model to noisy data - MATLAB ransac - MathWorks 中国
这里已经讲的比较清楚了,函数接收五个参数,两个返回值
参数
- data:一行为一个数据的数据集
- fitFcn:计算模型的函数句柄,比如匿名函数或者一般函数前面加 @ 符号
- distFcn:同样是函数句柄,它返回每一个数据对模型的误差,接收参数为数据以及 fitFcn 计算出的模型
- sampleSize:随机选取数据点的个数,通过这几个数据作为 fitFcn 的输入参数
- maxDistance:认为是模型到数据的可接受误差,小于这个的都认为是内点,越大函数执行的速度越快
返回值
- model:得出的模型
- inlierIdx:一个和 data 相同行数的逻辑矩阵,代表最后符合此模型的内点
使用例子
官网给出了个例子,用的是匿名函数和一些库函数计算直线,这里用自己的函数实现官网的例子。
1 | clear;clc; |
效果图如下:
其中圆点表示数据,橘色代表最后的内点,直线为最后得到的模型。