zoukankan      html  css  js  c++  java
  • RANSAC和Flitline

    【blog算法原理】RANSAC和FitLine

         ​ 如果已经有一系列图片,需要拟合出最为合适的一条直线出来,这个时候你会选择RANSAC还是FitLine。

    一、算法定义;

     RANSAC是实际运用非常广泛的算法,它的数学表示为

    "Ransac 是解决这类问题的代表性算法。它是一种随机算法,步骤如下:

    输入:k,n,t,d,model,data
    BestModel = null;
    迭代k次——
    (1) 从data中随机取出n个点,用这n个点去拟合model和模型的model,将得到的带参数的model记为MaybeBestModel。
    (2) 依次取出剩下的点,计算该点对应MaybeBestModel模型的误差,如果这个误差小于阈值t,则认为这个点是有效的,把这个点也放进MaybeBestModel中。
    (3) 所有点取完了。这时,MaybeBestModel中有效点的数量是否大于或等于d,如果是,则对于MaybeBestModel,重新计算一下它的模型参数。

    (4) 评估一下MaybeBestModel和BestModel哪一个好?如果MaybeBestModel更好,则将MaybeBestModel 记做新的 BestModel。"

           而FitLine的官方定义为:

    基本上的思路还是生成直线之后,遍历所有的点,并且采用不同的方法计算结果:

    二、运用场合

         在opencv中,已经实现了FitLine的算法;但是关于RANSAC还自己编写一些程序。除此之外,我认为,RANSAC的最总要特征在于“它假设了一个模型”,如果我已经知道模型就是直线,那么使用FitLine会更直接。

          特别是在一些计算量不是非常大的情况下,综合考虑所有的点之间的关系肯定随机取出一些点然后判断的结果要好一些。





  • 相关阅读:
    哈希表详解
    简单字典实现(KV问题)
    【数据结构】——搜索二叉树的插入,查找和删除(递归&非递归)
    【数据结构】——堆及其应用
    初学者的迷茫
    【数据结构】顺序表和链表
    程序运行机理
    回调函数到底是怎么一回事呢?
    C语言中函数可变参数解析
    《剑指offer》数组中出现次数超过数组长度一半的数字
  • 原文地址:https://www.cnblogs.com/jsxyhelu/p/5174348.html
Copyright © 2011-2022 走看看