OpenCV 4.12.0
開源計算機視覺
載入中...
搜尋中...
無匹配項
AKAZE 區域性特徵匹配

上一個教程: 平面物體檢測
下一個教程: AKAZE 和 ORB 平面跟蹤

原始作者Fedor Morozov
相容性OpenCV >= 3.0

介紹

在本教程中,我們將學習如何使用 AKAZE [11] 區域性特徵來檢測和匹配兩幅影像上的關鍵點。我們將在給定單應矩陣的兩幅影像上查詢關鍵點,進行匹配,並計算內點(即符合給定單應性的匹配)的數量。

你可以在這裡找到此示例的擴充套件版本: https://github.com/pablofdezalc/test_kaze_akaze_opencv

資料

我們將使用 牛津資料集Graffiti 序列的影像 1 和 3。

單應性由一個 3x3 矩陣給出

7.6285898e-01 -2.9922929e-01 2.2567123e+02
3.3443473e-01 1.0143901e+00 -7.6999973e+01
3.4663091e-04 -1.4364524e-05 1.0000000e+00

你可以在 opencv/samples/data/ 中找到影像 (graf1.png, graf3.png) 和單應性矩陣 (H1to3p.xml)。

原始碼

解釋

  • 載入影像和單應性矩陣

我們在這裡載入灰度影像。單應性矩陣儲存在用 FileStorage 建立的 xml 檔案中。

  • 使用 AKAZE 檢測關鍵點並計算描述符

我們建立 AKAZE 並檢測和計算 AKAZE 關鍵點和描述符。由於我們不需要 mask 引數,因此使用了 noArray()

  • 使用暴力匹配器查詢 2-nn 匹配

我們使用漢明距離,因為 AKAZE 預設使用二進位制描述符。

  • 使用 2-nn 匹配和比率準則查詢正確的關鍵點匹配

如果最近的匹配距離顯著低於次近的匹配距離,則該匹配是正確的(匹配不含糊)。

  • 檢查我們的匹配是否符合單應性模型

如果第一個關鍵點的投影到第二個關鍵點的距離小於閾值,則它符合單應性模型。

我們為內點建立了一組新的匹配,因為繪圖函式需要它。

  • 輸出結果

在這裡,我們儲存結果影像並列印一些統計資料。

結果

找到的匹配

根據你的 OpenCV 版本,你應該獲得與以下結果一致的結果

關鍵點 1: 2943
關鍵點 2: 3511
匹配數: 447
內點數: 308
內點比率: 0.689038