RANSAC算法原理及其在估计单应性变换矩阵上的应用

RANSAC(RANdom SAmple Consensus随机抽样一致)通过反复选择数据中的一组随机子集来达成目标。被选取的子集被假设为局内点,并用下述方法进行验证:

1.有一个模型适应于假设的局内点,即所有的未知参数都能从假设的局内点计算得出。(求解仿射变换,至少需要三个点)

2.用1中得到的模型去测试所有的其它数据,如果某个点适用于估计的模型,认为它也是局内点。
3.如果有足够多的点被归类为假设的局内点,那么估计的模型就足够合理。

4.然后,用所有假设的局内点去重新估计模型,因为它仅仅被初始的假设局内点估计过。

5.最后,通过估计局内点与模型的错误率来评估模型。

RANSAC的优点

能鲁棒的估计模型参数。例如,它能从包含大量局外点的数据集中估计出高精度的参数。

RANSAC的缺点:
计算参数的迭代次数没有上限;如果设置迭代次数的上限,得到的结果可能不是最优的结果,甚至可能得到错误的结果。RANSAC只有一定的概率得到可信的模型,概率与迭代次数成正比。另一个缺点是它要求设置跟问题相关的阀值。而且RANSAC只能从特定的数据集中估计出一个模型,如果存在两个(或多个)模型,RANSAC不能找到别的模型。
总之,在一组包含局外点的数据集中,采用不断迭代的方法寻找参数模型。

RANSAC算法用于消除图像误匹配原理:

RANSAC算法是寻找一个最佳单应性矩阵H,矩阵大小为3*3,目的是找到最优的参数矩阵,使得满足该矩阵的数据点个数最多,通常令这里写图片描述,由于单应性矩阵有8个未知参数,所以需要8个线性方程求解,对应到点位置信息上,一组点对可以列出两个方程(即在x坐标和y坐标上满足同一映射关系),则至少包含4组匹配点对。
RANSAC算法原理及其在估计单应性变换矩阵上的应用_第1张图片
其中这里写图片描述表示目标图像的角点位置,这里写图片描述为场景图像角点位置。S为尺度参数。

RANSAC算法从匹配数据集中随机抽出4个样本并保证这四个样本之间不共线。计算出单应性矩阵矩阵,然后利用这个模型测试所有数据,并计算满足这个模型数据点的个数与投影误差(即代价函数)若此模型为最优模型,则对应的代价函数最小:
RANSAC算法原理及其在估计单应性变换矩阵上的应用_第2张图片

算法步骤:

1.随机从数据集中随机抽出4个样本数据(此四个样本之间不共线)计算出变换矩阵H,记为模型M;
2.计算数据集中所有数据与模型M的投影误差,若误差小于阈值,加入内点集I;
3.如果当前内点集元素个数大于最优内点集I_best,则更新I_best=I,同时更新迭代次数k;
4.如果迭代次数大于k,则退出:否则迭代次数加1,并重复上述步骤

注:迭代次数k在不大于最大迭代次数的情况下,是在不断更新而不是固定的。
其中,p为置信度,一般取0.995,w为内点的比例,m为计算模型所需要的最少样本数=4。

你可能感兴趣的:(图像视频处理)