1. 程式人生 > >Graph matching 圖匹配演算法分析

Graph matching 圖匹配演算法分析

概述

原文:《An efficient and robust line segment matching approach based on LBD descriptor and pairwise geometric consistency》

上一步我們進行了線特徵的提取和描述,接下來我們進行線特徵的匹配。在此之前我們先通過預處理將一些明顯無法匹配的特徵給消除,以降低圖匹配問題的維度。
該部分圖匹配演算法分為三步:

  1. 查詢候選匹配對
  2. 構建關係圖
  3. 生成最終匹配結果

1. 查詢候選匹配對

匹配的雙方,我們分別稱為參考影象和查詢影象,檢測出雙方的LineVecs之後,我們要檢測他們的一元幾何屬性

區域性外觀相似度,若未通過測試,那麼認為他們是不匹配的。這樣做可以大大減小圖優化匹配的問題維度,使得我們後期匹配的速度更快。

1.1.一元幾何屬性

線段的一元幾何屬性就是LineVecs的方向,在同一個LineVec中的線具有相同的方向,並且每一個LineVec擁有唯一的方向。但是兩張圖中的LineVecs的方向有可能是不可靠的,影象有可能會有任意角度的旋轉,對於這點,我們利用影象對之間存在的近似全域性旋轉角,可以減少候選匹配對的數目。

構建旋轉

和其他文章中使用對應匹配來進行影象旋轉不同,LBD的Matching中通過計算兩個影象的LineVecs方向直方圖,得到規範化直方圖

,h代表直方圖。我們改變的角度,通過公式尋找一個全域性近似旋轉角

而全域性旋轉變換不一定總是好的,所以我們也需要去檢查估計旋轉角是不是真的。實際上如果透視變換可以通過旋轉來近似,那麼直方圖之差比較小。這代表了在進行了旋轉之後,兩個影象之間的相似程度。
這裡寫圖片描述
上圖就顯示出了兩張圖之間的直方圖差距,通過旋轉我們可以得出兩張圖之間相似度很高。上圖中的預估角度是0.349,偏移是0.243

但是如果影象中提取的線重複度很低的話,這種直方圖方法就有可能提取出錯誤的旋轉角度。為了解決這個問題,對於在方向直方圖上落入相同區間bins的線段,將他們的長度累積起來。那麼我們就可以得到一個長度向量,其第i個元素就是方向直方圖中第i個bin中的線段累計長度。

我們設定最小偏移直方圖小於閾值th,並且最小偏移長度向量距離小於閾值tl時,我們接受我們所估計的全域性旋轉角。一旦全域性旋轉角被接受,就會有一對LineVecs被匹配。但是如果這對LineVecs的方向角度和估計的全域性旋轉角之差超過閾值,那麼我們認為他們是不能夠匹配的。如果兩個圖片之間沒有可以接受的旋轉角度,那麼我們只測試他們的外觀相似性。

1.2. 區域性外觀相似性

我們用直線描述符之間的距離(lost)來度量區域性外觀相似度。
對於LineVec中的每個線段,我們都從提取出線的尺度層中生成一個LBD描述子向量V。當我們對一幅影象中提取出來的兩組LineVec進行匹配,要去評估參考LineVec和測試LineVec中所有描述子之間的距離,並且用最小的描述子距離去測量LineVec外觀相似度s。如果 s > ts s大於區域性外觀不相似容忍度,那麼相應兩個LineVecs將不會再進一步考慮。

在檢查了LineVecs的一元幾何屬性和區域性外觀相似性之後,通過了這些測試的直線對被當做候選匹配。我們在上面的測試中,應當選取一組鬆散閾值,其中經驗值是 tθ=π/4 ts=0.35。候選匹配的數量比實際匹配的數量要大很多,因為我們不能僅僅按照剛才兩個屬性來確定最終的匹配結果,當然我們上面的工作也是大大減小了圖形匹配的問題維度的。

2. 構建關係圖

對於上面得到一組候選匹配項,我們要構建一個關係圖
其中關係圖裡的節點代表潛在的對應點
節點之間的連線的權重代表對應點之間的一致性

拿到了k對對應關係,我們用一個大小為k*k的鄰接矩陣A來表示關係圖,其中第i行第j列的元素值是候選LineVec匹配對的一致性得分。其中分別是引用圖和查詢圖的LineVecs變數,上面的一致性得分是通過候選匹配對的成對幾何屬性外觀相似度計算的來的。

成對幾何屬性


我們選擇兩條線分別是,他們代表了這兩個LineVecs之間的最小描述子距離,並在原圖中定位他們的端點位置。然後我們用他們的交點比率,投影比率和相對角度來描述的幾何屬性,就如上圖所描述的那樣。其中的兩個值的計算方法如下:

Ij和Pj的值可以用相同的方法求解得到,相對角度可以直接用線方向求得。這三個量對平移旋轉縮放都是不變的。

外觀相似度

之前,我們使用LBD描述向量來表示線的區域性外觀。
假設描述子與r圖(參考圖)和q圖(查詢圖)的LineVecs之間的最小距離是,同理對。我們可以得到兩組成對幾何屬性和區域性外觀,分別是

計算一致性得分Aij:



其中是幾何相似性;是區域性外觀相似性;是條件。最後一個代表所有在內的元素都不能大於1。
接下來我們設。計算完他們的一致性得分之後,我們便獲得了鄰接矩陣A。

3. 生成最終匹配結果

到這一步之後,匹配的問題最終就變成了,尋找匹配簇LM,該匹配簇可以最大化總的一致性分數,以至於可以滿足對映約束。我們使用一個指標向量來表示這個簇,否則為0,因此這個問題被表示為:

其中x受制於對映約束。一般來說用二次規劃來解決這個問題太耗費資源,我們採用譜圖技術,對x放款對映約束和積分約束,使得他的元素可以採集實際值在[0,1]區間裡。
通過Raleigh比率定理,可以最大化的x*是A的主特徵向量。它仍然是使用對映約束二值化特徵向量和獲得最優解的一個強大近似。

以下是演算法細節:

  1. 通過EDLine演算法從參考圖和查詢圖內提取LineVecs,以從兩幅圖中分別獲得兩組LineVecs
  2. 利用兩組LineVecs的方向直方圖估計影象對的全域性旋轉角
  3. 計算兩組LineVecs的LBD描述子
  4. 通過檢查描述子的一元幾何屬性和區域性外觀,生成一組候選匹配對
  5. 根據候選匹配對中一致性分數,構建k*k大小的鄰接矩陣
  6. 通過使用ARPACK庫,得到鄰接矩陣A的主特徵向量x*
  7. 初始化匹配結果
  8. 查詢,如果x*(a)=0,那麼停止查詢返回匹配結果LM,否則設且x*(a)=0。
  9. 檢查CM中所有的候選者,如果衝突,那麼設
  10. 如果CM是空的,那麼返回LM,否則返回到步驟8。

最後一行的線段匹配可以從LineVecs LM的匹配結果直接檢索。注意,在LineVec的線位於影象的同一區域,並且具有同一方向,因此,每對linevec的匹配,線段匹配有一對就足夠檢索了。