zoukankan      html  css  js  c++  java
  • OpenCV fitline直线拟合函数学习

    下图是OpenCV官方文档中,对直线拟合函数的详细介绍:

    fitLine()函数用于,对二维或三维空间中的点集进行直线拟合。共有六个参数:

    param 1:输入的点集,可以是Mat或者vector<>,可以是二维点集或三维点集。

    例如:

    vector<Point> points;

    param 2:拟合结果,即一条直线。在二维空间中,直线可以定义为

    Vec4f line;

    在二维平面中,(line[0],line[1])表示直线的方向向量,(line[2],line[3])表示直线上的一个点。 

    param 3:拟合算法,CV_DIST_L2为最简单快速的最小二乘法,推荐使用。

    定义在源文件中的枚举类型:

     1 //! Distance types for Distance Transform and M-estimators
     2 enum { DIST_USER = -1, // User defined distance
     3 DIST_L1 = 1, // distance = |x1-x2| + |y1-y2|
     4 DIST_L2 = 2, // the simple euclidean distance
     5 DIST_C = 3, // distance = max(|x1-x2|,|y1-y2|)
     6 DIST_L12 = 4, // L1-L2 metric: distance = 2(sqrt(1+x*x/2) - 1))
     7 DIST_FAIR = 5, // distance = c^2(|x|/c-log(1+|x|/c)), c = 1.3998
     8 DIST_WELSCH = 6, // distance = c^2/2(1-exp(-(x/c)^2)), c = 2.9846
     9 DIST_HUBER = 7 // distance = |x|<c ? x^2/2 : c(|x|-c/2), c=1.345
    10 };
    View Code

    官方文档中介绍,这里使用的拟合算法是M-estimator方法。

    param 4: 拟合算法中参数C的值,设为0,则自动选用最优值。

    param 5 & param 6: 官方推荐使用0.01。

     

  • 相关阅读:
    部署Tomcat ----【javaweb-02】
    初步了解web ----【javaweb-01】
    JDBC-02
    JDBC-01
    利用Maven进行导jar包
    ContainerBase.addChild: start 错误问题
    MySQL数据库02
    MySQL数据库01
    简单认识并使用JavaScript【供后端人员作为了解】
    JSP+SSH+Mysql+DBCP实现的租车系统
  • 原文地址:https://www.cnblogs.com/TongWee/p/4830587.html
Copyright © 2011-2022 走看看