特徵點匹配——使用基礎矩陣、單應性矩陣的RANSAC算法去除誤匹配點對

不管是我在之前的博文中提到的SIFT、ORB等算法,其實真正匹配的結果都不會特別好,一旦視角上的變化比較大或者出現之前圖像中沒有出現的區域,就很容易產生誤匹配。但是在實際應用中這些誤匹配的點並沒有對最終的匹配結果造成很大的影響,這是因爲一般在進行匹配以後,都進行了去除誤匹配點對的操作,這篇博文主要介紹的就是一種比較有名的RANSAC算法。
那麼,首先來看一下這個算法。

一、RANSAC算法介紹

RANSAC(Random Sample Consensus)算法是一種簡單且有效的去除噪聲影響,估計模型的一種方法。與普通的去噪算法不同,RANSAC算法是使用儘可能少的點來估計模型參數,然後儘可能的擴大得到的模型參數的影響範圍。
RANSAC算法的具體描述是:給定N 個數據點組成的集合P ,假設集合中大多數的點都是可以通過一個模型來產生的,且最少通過n 個點(n<N )可以擬合出模型的參數,則可以通過以下的迭代方式擬合該參數。
對下面的操作執行k 次:
(1)從P 中隨機選擇n 個數據點;
(2)用這n 個數據點擬合出一個模型M
(3)對P 中剩餘的數據點,計算每個點與模型M 的距離,距離超過閾值的則認定爲局外點,不超過閾值的認定爲局內點,並記錄該模型M 所對應的局內點的值m
迭代k 次以後,選擇m 最大的模型M 作爲擬合的結果。
因爲在實際應用中N 的值通常會很大,那麼從其中任選n 個數據點的組合就會很大,如果對所有組合都進行上面的操作運算量就會很大,因此對於k 的選擇就很重要。通常情況下,只要保證模型估計需要的n 個點都是點的概率足夠高即可。因此設wN 個數據中局內點的比例,z 爲進行k 次選取後,至少有一次選取的n 個點都是局內點的概率。則有

z=1(1wn)k
其中1wn 表示一次選取不都是局內點的概率,(1wn)k 表示k次選取中沒有一次都是局內點的概率。
則有
k=log(1z)log(1wn)

這裏z 一般要求滿足大於95%即可。

二、單應性矩陣介紹

通過上面我們瞭解到了RANSAC算法,那麼如何應用RANSAC算法去除誤配點呢。首先,我們來介紹一下單應性矩陣。
單應性矩陣描述的是針對同一事物,在不同的視角下拍攝的兩幅圖像之間的關係。假設這兩幅圖像之間是透視變換,則單應性矩陣也就是透視變換矩陣H 定義如下:

H=h11h21h31h12h22h32h13h231

則有
xy1=h11h21h31h12h22h32h13h231xy1

因此要恢復出H 中的8個參數,至少需要4對匹配點,過程如下:

這裏寫圖片描述

那麼就可以每次從所有的匹配點中選出4對,計算單應性矩陣H ,然後選出內點個數最多的作爲最終的結果。計算距離方法如下:

這裏寫圖片描述

三、基礎矩陣介紹

對於基礎矩陣的介紹在我之前的博文裏已經介紹過 三維重建(一)外極幾何,基礎矩陣及求解,使用RANSAC方法也與上面單應性矩陣的方法相同。
這裏需要注意的是,使用單應性矩陣的方法去除誤匹配點對更加嚴格,也就是說得到的結果更加精確,但是相對於基礎矩陣的方法來講,最後得到的匹配點數目也更少。

發佈了72 篇原創文章 · 獲贊 180 · 訪問量 57萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章