色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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

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

3天內不再提示

單應性矩陣計算函數與應用

OpenCV學堂 ? 來源:OpenCV學堂 ? 作者:OpenCV學堂 ? 2022-07-13 16:16 ? 次閱讀

單應性矩陣計算函數與應用

OpenCV在通過特征描述子完成描述子匹配之后,會得到一些關鍵點對,我們會把這些關鍵點對分別添加到兩個vector對象中,作為輸入參數,調用單應性矩陣發現函數來發現一個變換矩陣H,函數findHomography就完成了這樣的功能,常見的調用代碼如下:

 1//--Localizetheobject
 2std::vectorobj_pts;
 3std::vectorscene_pts;
 4for(size_ti=0;i 5{
 6//--Getthekeypointsfromthegoodmatches
 7obj_pts.push_back(keypoints_obj[goodMatches[i].queryIdx].pt);
 8scene_pts.push_back(keypoints_sence[goodMatches[i].trainIdx].pt);
 9}
10MatH=findHomography(obj_pts,scene_pts,RHO);

有了變換矩陣H之后,我們就可以根據輸入圖像四點坐標,從場景圖像上得到特征匹配圖像的四點坐標,代碼實現如下:

1//--Getthecornersfromtheimage_1(theobjecttobe"detected")
2std::vectorobj_corners(4);
3obj_corners[0]=Point(0,0);obj_corners[1]=Point(box.cols,0);
4obj_corners[2]=Point(box.cols,box.rows);obj_corners[3]=Point(0,box.rows);
5std::vectorscene_corners(4);
6perspectiveTransform(obj_corners,scene_corners,H);

其中scene_corners為對象在場景圖像中的四點坐標,獲得坐標以后就可以繪制對應的矩形,從而在場景圖像中繪制對象的外接矩形區域。運行結果如下:

da958888-0283-11ed-ba43-dac502259ad0.jpg

上述步驟中最重要的就是單應性矩陣H的計算,這里我們首先來看一下該函數與其各個參數解釋:

1Matcv::findHomography(
2InputArraysrcPoints,
3InputArraydstPoints,
4intmethod=0,
5doubleransacReprojThreshold=3,
6OutputArraymask=noArray(),
7constintmaxIters=2000,
8constdoubleconfidence=0.995
9)

參數解釋如下:
srcPoints:特征點集合,一般是來自目標圖像
dstPoints:特征點集合,一般是來自場景圖像
method:表示使用哪種配準方法,支持有四種方法(后續詳細說)

  • 0 – 使用所有的點,比如最小二乘

  • RANSAC – 基于隨機樣本一致性

  • LMEDS – 最小中值

  • RHO –基于漸近樣本一致性

ransacReprojThreshold:該參數只有在method參數為RANSAC與RHO的時啟用,默認為3
mask:遮罩,當method方法為RANSAC 或 LMEDS可用
maxIters:最大迭代次數,當使用RANSAC方法
confidence:置信參數,默認為0.995

單應性矩陣H發現方法

首先簡單的解釋一下H的作用,假設在特征匹配或者對齊,視頻移動估算中有兩張圖像image1與image2,image1上有特征點(x1,y1)匹配image2上的特征點(x2,y2),現在我們需要在兩者之間建立一種視圖變換關系(透視變換),圖示如下(圖二):

dab86f38-0283-11ed-ba43-dac502259ad0.png

其中H是一個3x3的矩陣

這樣為了求出H中的參數,需要兩個點對集合,就是findHomography函數中前兩個輸入參數,理想情況下,通過特征提取得到特征點會再下一幀或者場景圖像中保持不變,但是實際情況下,收到各種因素的影響,會額外產生很多特征點或者干擾點,如果正確的剔除這些干擾點,得到正確匹配的點,利用正確匹配點計算出H才是比較穩定的方式。

01

最小二乘擬合

很明顯,圖二所示的是一個過約束問題,如果沒有干擾點的話,就可以通過最小二乘進行直接擬合,求的參數,其中錯誤計算如下:

dad13464-0283-11ed-ba43-dac502259ad0.png

基于過約束方程計算得到錯誤,反向傳播不斷更新參數,直到兩次錯誤差值滿足要求閾值為止。

02

RANSAC

最小二乘方法在描述子匹配輸出的點對質量很好,理想情況下是圖像沒有噪聲污染與像素遷移與光線恒定,但是實際情況下圖像特別容易受到光線、噪聲導致像素遷移,從而產生額外的多余描述子匹配,這些點對可以分為outlier跟inlier兩類,基于RANSAC(Random Sample Consensus)可以很好的過濾掉outlier點對,使用合法的點對得到最終的變換矩陣H。RANSAC算法基本思想是,它會從給定的數據中隨機選取一部分進行模型參數計算,然后使用全部點對進行計算結果評價,不斷迭代,直到選取的數據計算出來的錯誤是最小,比如低于0.5%即可,完整的算法流程步驟如下:

  1. 選擇求解模型要求的最少要求的隨機點對

  2. 根據選擇隨機點對求解/擬合模型得到參數

  3. 根據模型參數,對所有點對做評估,分為outlier跟inlier

  4. 如果所有inlier的數目超過預定義的閾值,則使用所有inlier重新評估模型參數,停止迭代

  5. 如果不符合條件則繼續1~4循環。

通常迭代次數N會選擇一個比較高的值,OpenCV中默認迭代次數為200,確保有一個隨機選擇點對不會有outlier數據,

03

PROSAC(RHO)

注意有時候RANSAC方法不會收斂,導致圖像對齊或者配準失敗,原因在于RANSAC是一種全隨機的數據選取方式,完全沒有考慮到數據質量不同。對RANSAC算法的改進算法就是PROSAC(Progressive Sampling Consensus)即漸近樣本一致性,該方法采用半隨機方法,對所有點對進行質量評價計算Q值,然后根據Q值降序排列,每次只在高質量點對中經驗模型假設與驗證,這樣就大大降低了計算量,在RANSAC無法收斂的情況下,PROSAC依然可以取得良好的結果。OpenCV中的RHO方法就是基于PROSAC估算。

04

LMEDS

最小中值方法擬合,該方法可以看成是最小二乘法的改進,原因在于計算機視覺的輸入數據是圖像,一般都是各自噪聲,這種情況下最小二乘往往無法正確擬合數據,所以采用最小中值方法可以更好實現擬合,排除outlier數據。但是它是對高斯噪聲敏感算法。它的最主要步驟描述如下:

  1. 隨機選取很多個子集從整個數據集中

  2. 根據各個子集數據計算參數模型

  3. 使用計算出來的參數對整個數據集計算中值平方殘差

  4. 最終最小殘差所對應的參數即為擬合參數。

05

對比測試

最后看一下OpenCV中使用單應性矩陣發現對相同的特征點對,分別使用RANSAC、PROSAC、LMEDS進行參數矩陣H的求解結果對比,顯示如下:

dae3fd4c-0283-11ed-ba43-dac502259ad0.png

總數446個匹配點對,三種評估方式生成的H矩陣(3x3)很明顯值都不盡相同。

一般情況下在,推薦大家使用RANSAC或者RHO。默認的0表示最小二乘方法,對圖像匹配在實際應用中一般都是翻車!LMEDS方法只有在inlier超過50%以上情況下才會擬合生成比較好的H參數,而RANSAC或者RHO不管outlier跟inlier比率是多少都會可以適用,可以大家也都注意到h33總是等于1,因為h33在這里作用是保持標準化尺度。在OpenCV中如果無法正確估算參數H,會返回空Mat對象。

單應性矩陣應用

圖像透視變換與對象匹配

daf600dc-0283-11ed-ba43-dac502259ad0.jpg

圖像拼接

db10fba8-0283-11ed-ba43-dac502259ad0.jpg

最后的話

我在2019年的文章匯總中說,2020年少寫廢話,但愿此篇不是廢話,我為了寫好它也是傷神很久,算是自己盡力了,也是回答了平時一些人總問我的問題,歡迎大家指正與反饋!如果覺得不錯,點個贊我就很滿足了!

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

    關注

    2

    文章

    1085

    瀏覽量

    40488
  • 矩陣
    +關注

    關注

    0

    文章

    423

    瀏覽量

    34563
  • 函數
    +關注

    關注

    3

    文章

    4333

    瀏覽量

    62686

原文標題:OpenCV單應性矩陣發現參數估算方法詳解

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

收藏 人收藏

    評論

    相關推薦

    希姆計算的RISC-V矩陣擴展開源項目已升級至0.5版本,支持向量+矩陣的實現

    的問題,推動加速人工智能行業的發展,自2021年開始,希姆計算啟動了針對RISC-V矩陣指令集和支持工具的開源工作,工作的目標是提高人工智能應用的兼容、降低軟件開發成本,并實現新
    的頭像 發表于 11-12 01:08 ?767次閱讀
    希姆<b class='flag-5'>計算</b>的RISC-V<b class='flag-5'>矩陣</b>擴展開源項目已升級至0.5版本,支持向量+<b class='flag-5'>矩陣</b>的實現

    粒子效應置信區間計算

    電子發燒友網站提供《粒子效應置信區間計算.pdf》資料免費下載
    發表于 09-10 10:31 ?0次下載
    <b class='flag-5'>單</b>粒子效應置信區間<b class='flag-5'>計算</b>

    MATLAB(6)--特殊矩陣

    通用的特殊矩陣 zero函數:產生全是0矩陣,即零矩陣。 ones函數:產生全是1矩陣,即幺
    發表于 09-06 10:24

    MATLAB(3)--矩陣的引用(sub2ind、ind2sub、reshape函數使用)

    矩陣的最后一列元素。 矩陣元素的序號就是矩陣元素在內存中的排列順序。 例如下圖中,創建了A的兩行三列的元素,引用第三個元素: 序號與下邊是一一對的,以m n
    發表于 09-06 10:11

    MATLAB(2)--MATLAB矩陣的表示

    矩陣的建立 利用直接輸入法建立矩陣:將矩陣的元素用中括號括起來,按矩陣的順序輸入各元素,同一行的各元素之間用逗號或者空格分隔,不同的元素之間用分號分隔。 利用已建好的
    發表于 09-06 10:05

    MATLAB中的矩陣索引

    矩陣進行索引是從矩陣中選擇或修改部分元素的一種方式。MATLAB 有幾種索引樣式,它們不僅功能強大、靈活,而且可讀強、表現力強。矩陣是 MATLAB 用來組織和分析數據的一個核心組
    的頭像 發表于 09-05 09:28 ?479次閱讀
    MATLAB中的<b class='flag-5'>矩陣</b>索引

    【《計算》閱讀體驗】量子計算

    經典計算機的能力。 量子計算的重要在于三點。首先,量子計算對強丘奇-圖靈論題提出了明確挑戰。強丘奇-圖靈論題斷言,任何可物理實現的計算裝置
    發表于 07-13 22:15

    華為云函數工作流:引領未來無服務器計算時代

    在當今數字化飛速發展的時代,企業和個人對于計算資源的需求越來越高,但傳統的服務器架構帶來的管理成本和資源浪費問題也愈發凸顯。為解決這一難題,華為云引領著無服務器計算的浪潮,推出了函數工作流
    的頭像 發表于 05-27 10:50 ?367次閱讀
    華為云<b class='flag-5'>函數</b>工作流:引領未來無服務器<b class='flag-5'>計算</b>時代

    芯片性能不抵拓展性,數據中心的交換矩陣

    電子發燒友網報道(文/周凱揚)在現代數據中心架構中,網絡和計算設備都部署在兩層甚至三層的互聯矩陣中,與傳統的多層架構不同,數據中心的交換矩陣促成了服務器架構的扁平化,進一步縮短了數據中心內不同端點
    的頭像 發表于 04-04 00:51 ?2844次閱讀

    TC264有矩陣庫或三角函數的加速庫嗎?

    你好,最近我正試圖將我的姿態計算項目移植到 TC264 微控制器上,其中涉及大量矩陣計算。我看到 TC264 有一個 DSP。我想問一下,是否有相關的加速庫可以針對 TC264 進行優化,使
    發表于 03-05 07:47

    KVM矩陣技術的前沿應用:實現多服務器環境的集中控制

    隨著信息技術的快速發展,數據中心的規模和復雜也在不斷增加。在這樣的背景下,KVM矩陣技術以其高效、靈活的特點,成為了實現多服務器環境集中控制的前沿技術。本文將探討KVM矩陣技術在多服務器環境中
    的頭像 發表于 02-18 14:53 ?447次閱讀

    KVM矩陣的智能化管理:提升運維效率與安全

    隨著信息技術的飛速發展,KVM矩陣作為數據中心運維的重要工具,正逐漸融入智能化管理的理念。智能化管理不僅提升了KVM矩陣的運維效率,更在保障系統安全方面發揮了重要作用。本文將探討KVM矩陣
    的頭像 發表于 02-18 14:51 ?555次閱讀

    協方差矩陣中各元素含義 協方差矩陣怎么算

    元素的含義,并解釋協方差矩陣計算方法。 首先,我們來了解一下協方差的基本概念。協方差是用來衡量兩個變量之間的相關的指標。數學上,給定兩個隨機變量X和Y,它們的協方差定義為: cov(X,Y) = E[(X - E(X))(Y
    的頭像 發表于 02-04 11:06 ?3624次閱讀

    協方差矩陣怎么算 協方差矩陣和方差的關系

    協方差矩陣是一種反映多個隨機變量之間相關程度的矩陣。在統計學和金融學中,協方差矩陣是一種常用的工具,用于分析不同隨機變量之間的關聯和方差。 為了理解協方差
    的頭像 發表于 01-30 10:39 ?4577次閱讀

    協方差矩陣和相關系數矩陣的轉化

    協方差矩陣和相關系數矩陣是統計學中常用的概念,在多變量統計分析中起著至關重要的作用。 在進行多變量統計分析時,我們通常會涉及多個變量之間的關系和相互作用。協方差矩陣和相關系數矩陣就是用
    的頭像 發表于 01-12 11:02 ?2043次閱讀
    主站蜘蛛池模板: 国产SUV精品一区二区69| 97久久国产露脸精品国产| 亚洲免费视频日本一区二区| voyeurhit农村夫妻偷拍| 精品无码久久久久久久久| 天天插天天射天天干| 戳女人屁股流水羞羞漫画| 欧美极限变态扩张video| 9420高清免费观看在线大全| 乱亲女H秽乱长久久久| 影音先锋亚洲AV少妇熟女| 娇小萝被两个黑人用半米长| 亚洲精品无码久久久久A片 | 久久91精品国产91| 亚洲高清有码中文字| 国产免费人视频在线观看免费| 无人区乱码区1卡2卡三卡在线| 国产精品玖玖玖影院| 无码137片内射在线影院| 国产精品爽爽久久久久久蜜桃网站| 乌克兰18性hd| 国产午夜亚洲精品理论片八戒| 亚洲第一色网| 含羞草最新版本| 亚洲午夜久久久久中文字幕| 精品国产品国语在线不卡| 一天不停的插BB十几次| 老司机午夜影院试看区| CHINA末成年VIDEO学生| 日韩成人在线视频| 国产美女裸身网站免费观看视频| 亚洲国产在线精品国偷产拍| 久久re视频这里精品免费1| 自拍区偷拍亚洲视频| 欧美群交XXXCOM| 国产 日韩 欧美 综合 激情| 亚洲精品色情APP在线下载观看| 老牛天天晚上夜噜噜噜| xx在线观看| 亚洲精品九色在线网站| 蜜桃成熟时2在线|