本文主要对 RANSAC 算法(随机抽样一致算法)进行简要介绍,采用迭代的方式从一组包含离群的被观测数据中估算出数学模型的参数。
算法简介
RANSAC 算法假设数据中包含正确数据和异常数据(或称为噪声)。正确数据记为内点(inliers),异常数据记为外点(outliers)。同时 RANSAC 也假设,给定一组正确的数据,存在可以计算出符合这些数据的模型参数的方法。该算法核心思想就是随机性和假设性,随机性是根据正确数据出现概率去随机选取抽样数据,根据大数定律,随机性模拟可以近似得到正确结果。假设性是假设选取出的抽样数据都是正确数据,然后用这些正确数据通过问题满足的模型,去计算其他点,然后对这次结果进行一个评分。
RANSAC 算法被广泛应用在计算机视觉领域和数学领域,例如直线拟合、平面拟合、计算图像或点云间的变换矩阵、计算基础矩阵等方面,使用的非常多。RANSAC 在很多开源代码中有开放和函数接口,后续有机会再整理。
算法基本思想
如下图所示,存在很多离散的点,而我们认为这些点构成了一条直线。当然,人眼能很清晰地拟合出这条直线,找到外点。但要让计算机找到这条直线,在很久之前是很难的,RACSAC 的出现是通过数学之美解决这一难题的重要发明。
![59a12a909cb0663b375b648e47768504.png](https://i-blog.csdnimg.cn/blog_migrate/ee30642433ca23142358d80aa6abbe21.png)
![49137ad3561cb377db4bb6399e28ef2e.png](https://i-blog.csdnimg.cn/blog_migrate/d595f2fb8442ad1540eb2ee4820cf1b8.png)
![5ee853472ed98587567b19fd24474a37.png](https://i-blog.csdnimg.cn/blog_migrate/77b6c1672dd911c22c75521073a0eabb.png)
![8f25acaf249eeafa89986bb93e3991c2.png](https://i-blog.csdnimg.cn/blog_migrate/87bb522e262d144c141cb8ada5e3de68.png)
![8173210ab9a1b98bd80e372f93e6dd0d.png](https://i-blog.csdnimg.cn/blog_migrate/483085bf225e7a072740e17dd2a00009.png)
![509f43d342bbb9f2152227d55149d5fb.png](https://i-blog.csdnimg.cn/blog_migrate/cd9046bf7d1d35f157bdcfc8c72746cb.png)