女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

OpenCV中的直線擬合

OpenCV學堂 ? 來源:OpenCV學堂 ? 作者:OpenCV學堂 ? 2022-08-26 10:36 ? 次閱讀

直線擬合原理

給出多個點,然后根據這些點擬合出一條直線,這個最常見的算法是多約束方程的最小二乘擬合,如下圖所示:

553374ee-247e-11ed-ba43-dac502259ad0.png

但是當這些點當中有一個或者幾個離群點(outlier)時候,最小二乘擬合出來的直線就直接翻車成這樣了:

5540a952-247e-11ed-ba43-dac502259ad0.png

原因是最小二乘無法在估算擬合的時候剔除或者降低離群點的影響,于是一個聰明的家伙出現了,提出了基于權重的最小二乘擬合估算方法,這樣就避免了翻車。根據高斯分布,離群點權重應該盡可能的小,這樣就可以降低它的影響,OpenCV中的直線擬合就是就權重最小二乘完成的,在生成權重時候OpenCV支持幾種不同的距離計算方法,分別如下:

554ee292-247e-11ed-ba43-dac502259ad0.png

其中DIST_L2是最原始的最小二乘,最容易翻車的一種擬合方式,雖然速度快點。然后用基于權重的最小二乘估算擬合結果如下:

5562bae2-247e-11ed-ba43-dac502259ad0.png

函數與實現源碼分析

OpenCV中直線擬合函數支持上述六種距離計算方式,函數與參數解釋如下:

void cv::fitLine(         InputArray    points,         OutputArray   line,         int   distType,         double    param,         double    reps,         double    aeps)

points是輸入點集合

line是輸出的擬合參數,支持2D與3D

distType是選擇距離計算方式

param 是某些距離計算時生成權重需要的參數

reps 是前后兩次原點到直線的距離差值,可以看成擬合精度高低

aeps是前后兩次角度差值,表示的是擬合精度

六種權重的計算更新實現如下:

staticvoidweightL1(float*d,intcount,float*w)
{
inti;


for(i=0;i

擬合計算的代碼實現:

staticvoidfitLine2D_wods(constPoint2f*points,intcount,float*weights,float*line)
{
CV_Assert(count>0);
doublex=0,y=0,x2=0,y2=0,xy=0,w=0;
doubledx2,dy2,dxy;
inti;
floatt;

//Calculatingtheaverageofxandy...
if(weights==0)
{
for(i=0;i

案例:直線擬合

有如下的原圖:

55781784-247e-11ed-ba43-dac502259ad0.png

通過OpenCV的距離變換,骨架提取,然后再直線擬合,使用DIST_L1得到的結果如下:

558a2ad2-247e-11ed-ba43-dac502259ad0.png

審核編輯:彭靜
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 源碼
    +關注

    關注

    8

    文章

    667

    瀏覽量

    30127
  • 函數
    +關注

    關注

    3

    文章

    4367

    瀏覽量

    64107
  • OpenCV
    +關注

    關注

    32

    文章

    642

    瀏覽量

    42391

原文標題:OpenCV中直線擬合方法解密

文章出處:【微信號:CVSCHOOL,微信公眾號:OpenCV學堂】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦
    熱點推薦

    一文簡析OpenCV直線擬合方法

    其中DIST_L2是最原始的最小二乘,最容易翻車的一種擬合方式,雖然速度快點。
    的頭像 發表于 08-26 10:33 ?6424次閱讀

    matlab直線擬合案例的尋找

    由于短時間內要用matlab進行直線擬合,可是我不會,而且就算編好程序后,這種界面我也不會。希望好心人指點!
    發表于 12-16 13:27

    FPGA怎么實現最小二乘法擬合直線呢?

    特權老師你好用數字電路去實現最小二乘法的擬合直線‘缺少這方面的設計經驗’有沒有相關的思路推薦‘或者相關資料介紹’謝謝!
    發表于 05-18 20:04

    【每周一練】擬合公式

    使用方法:根據data.xlsxX與Y求出最佳直線,僅限于直線。用途:比如PT100傳感器,氣壓傳感器,位移傳感器等線性傳感器,測出電壓或電阻與真實值的關系,寫入data.xlsx
    發表于 12-24 00:17

    請問如何對數組的數求擬合直線

    `求數組的數最靠近的那個值,也就是這條直線,該用哪種工具呢?`
    發表于 01-26 13:31

    為什么用線性擬合出來的最佳線性擬合的的波形圖與原來直線的斜率不一樣?

    我用線性擬合擬合一條直線,線性擬合VI的最佳線性擬合形成的波形圖的斜率和它所產生的斜率不一樣
    發表于 06-07 00:33

    Labview線性擬合時如何指定最終擬合直線的斜率?

    如題,使用線性擬合VI時為何設定的斜率上下限沒有起到作用?我想用一組已知數據擬合一條斜率固定的直線,該如何實現?求大神指點?也可用Matlab程式實現。以下是我自己寫的一個程序,指定斜率為90°,可是
    發表于 04-03 20:09

    求教三維離散點的直線擬合,請問擬合三維的數據xyz成一條空間直線

    本帖最后由 一只耳朵怪 于 2018-6-4 09:09 編輯 怎么像圖片那樣擬合三維的數據xyz成一條空間直線希望數據是給定的額 就通過控件輸入求大神幫幫忙啊 萬分感謝!!!
    發表于 06-04 08:51

    ransac擬合直線擬合平面

    ransac擬合直線和平面(matlab版本)
    發表于 03-26 07:48

    使用MXNet擬合直線簡潔實現

    [MXNet逐夢之旅]練習二·使用MXNet擬合直線簡潔實現
    發表于 05-26 14:46

    練習一·使用MXNet擬合直線手動實現

    [MXNet逐夢之旅]練習一·使用MXNet擬合直線手動實現
    發表于 06-10 15:39

    直線擬合求解的推導過程

    (1)求解的推導過程:最小二乘擬合直線的推導過程如下:假設直線方程為:設有n對觀測值(xi,yi),則列出如下方程:整理得:其中A、EA、L的表達式如下:最后解算直線
    發表于 08-18 08:04

    怎樣去實現基于MATLAB的最小二乘直線擬合的代碼呢

    最小二乘直線擬合的推導過程是怎樣的?怎樣去實現基于MATLAB的最小二乘直線擬合的代碼呢?
    發表于 11-22 06:43

    對于形狀近似矩形但邊緣有規則起伏的情況,可以使用OpenCV的approxPolyDP函數進行多邊形擬合和矩形檢測。

    對于形狀近似矩形但邊緣有規則起伏的情況,可以使用OpenCV的approxPolyDP函數進行多邊形擬合和矩形檢測。 approxPolyDP函數通過在給定的點集上使用動態規劃算法,計算出近似
    發表于 11-01 09:23

    OpenCV進行橢圓擬合的程序免費下載

    本文檔的主要內容詳細介紹的是OpenCV進行橢圓擬合的程序免費下載。
    發表于 10-12 14:58 ?4次下載