RANSAC - Random sample consensus

随机抽样一致性算法。
在对应点估计或者stereo matching中常常在用。这里进行一些知识点的归纳
先看基本思想,以下大部分翻译自wikipedia

RANSAC算法是采用迭代的算法从一组包含离群点的被观测数据中估计一个数学模型的参数。RANSAC算法只会产生一个在一定概率下合理的结果,而更多次的迭代会使得这一概率增加。

RANSAC算法的基本假设是

  • “inliers”(内群)数据可以通过几组模型的参数来叙述其分布,而“outliers”(离群)数据则是不适合模型化的数据。
  • 数据会受到噪声的影响,噪声指的是离群,例如从极端的噪声或错误解释有关数据的测量或不正确的假设。
  • RANSAC假定,给定一组(通常很小)的内存,存在一个程序,可以估算最适用于这一组数据模型的参数。

RANSAC算法的基本步骤是

  1. 在数据中随机选择几个点设定为内群 - hypothetical inliers
  2. 计算拟合内群的模型。
  3. 把其他刚才没选到的点带入刚才建立的模型中,计算是否为内群。
    根据一些模型特定的损失函数(model specific loss function),符合估计模型的那些点被认为是内群(consensus set)的一部分
  4. 记下内群数量。
  5. 重复以上步骤多做几次。
  6. 比较哪次计算中内群数量最多,内群最多的那次所建的模型就是所要求的解。

小结:RANSAC是一种使用了投票机制(voting scheme)来寻找最佳结果的学习技术(learning technique)。
以从下图数据的拟合直线问题来看RANSAC:


line fitting

若使用Least squares method(最小二乘法),那么outliers会影响到最后的估计结果。
若使用RANSAC算法则不会有这样的问题。

Pesudo-code

    Given:
            data - a set of observed data points
            model - a model that can be fitted to data points
            n - the minimum number of data values required to fit the model
            k - the maximum number of iterations allowed in the algorithm
            t  - a threshold value for determining when a data point fits a model
            d - the number of close data values required to assert that a model fits well to data
    Return:
            bestfit - model parameters which best fit the data (or nul if no good model is found)
    
    iterations = 0
    bestfit = nul
    besterr = something really large
    while iterations < k {
            maybeinliers = n randomly selected values from data
            maybemodel = model parameters fitted to maybeinliers
            alsoinliers = empty set
            for every point in data not in maybeinliers {
            if point fits maybemodel with an error smaller than t
                     add point to alsoinliers
            }
            if the number of elements in alsoinliers is > d {
                % this implies that we may have found a good model
                % now test how good it is
                bettermodel = model parameters fitted to all points in maybeinliers and alsoinliers
                thiserr = a measure of how well model fits these points
                if thiserr < besterr {
                    bestfit = bettermodel
                    besterr = thiserr
                }
          }
          increment iterations
    }

matlab code: click here

最后,讨论一下RANSAC中的参数:
td需要结合实际的实验数据以及具体应用来决定。迭代次数k,可以从进行一定的理论分析。
假设数据集中每个点是真正内群的概率是w, 即:

    w = 真正内群点的数目/数据总共的数量

假设不知道w的值,那么选择n个点都是内群点的概率为w^n,那么选择n个点至少有一个是非内群点的概率为 1-w^n;重复k次都没有全部的n个点都是内群的概率是 (1-w^n)^k是表示重复k次,都至少有一个点是离群点,因此,RANSAC迭代k次后,n个点都是内群点的概率p的值是:

     1 - p = (1-w^n)^k 
     p = 1 - (1-w^n)^k

若希望成功率高的话,p = 0.99,当n不变,那么k越大,p越大;但w不变,n越大,那么k越大。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,717评论 6 496
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,501评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,311评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,417评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,500评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,538评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,557评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,310评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,759评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,065评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,233评论 1 343
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,909评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,548评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,172评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,420评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,103评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,098评论 2 352

推荐阅读更多精彩内容