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。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM