第三章、 SIFT 演算法相關理論與技術
3.2 SIFT 演算法
3.2.5 SIFT 算法匹配與除錯
SIFT 演算法完成後即已完成特徵點之提取及相應特徵描述符之建立,下一 個步驟即可進行共軛點之影像匹配,特徵匹配的方法有多種,主要可使用如 KD-tree、Brute force、Best Bin Fist 等方法,本研究中選擇 KD-tree 匹配方法。
這些點位都進行匹配之後SIFT 演算法通常還會搭配一個除錯的方法來濾除 匹配時所產生的錯誤點位,最常見的除錯方法有:1.隨機取樣一致性算法 (RANdom SAmple Consensus,RANSAC) [22]、2.最小中位數(Least Median of Squares,LMedS)[23]等除錯方法,本研究中使用 RANSAC 進行除錯。
3.2.5.1 KD-Tree
SIFT 特徵點從相關影像中提取出並存於資料庫中,並與一幅新影像間每個 特徵點與資料庫中的特徵點進行相似性評估,其根據待匹配特徵點與資料庫中特 徵 點 的 描 述 符( 即特徵向量) 之間的中歐幾里德距離最小(Euclidean distance smaller than threshold)來判定。以最鄰近點的形式描述:設一個 K 維空間的定義 域和值域分別為R 和 D,E 為 K 維空間 R D 中取樣點的集合,d 為目標點的向量,
則d 的最鄰近點 必須滿足:
'' '
'' E,d d d d
d ∈ ⇔ ≤ ⇔
∀ (3-27)
∑
= 維空間點集的資料結構,它是一個二元樹結構(Binary Tree Structure),如此可將 線性搜尋方法變成二元樹搜尋。SIFT 演算法中使用任何方法進行特徵匹配均可,研究以 KD-Tree 結構及歐 幾里德距離匹配方法與匹配程序如圖3.19 所示。
圖3.17 SIFT 匹配流程圖
於第一幅影像所有的SIFT 特徵點建立 KD-Tree 結構,再對第二幅影像的每 個 SIFT 特徵點作 kp,用基於 KD-Tree 的最鄰近點搜索演算法(Approximate k Nearest Neighbors)找到最鄰近點 kp1 和次鄰近點 kp2。
當kp⇔kp1越小而kp⇔kp2越大,那麼kp 與 kp1 匹配的品質越好,因此,
with KD Trees 示意圖:
(a)採用 n 維點集
(b)利用 dimension X 與 value V 進行點群分割
(c)採用給定之門檻值進行區塊分割
(d)完成上述分割後所形成之二元樹結構
(e)如此架構出之二元樹結構節點所對應之點數 圖3.18 KD-tree 分割示意圖
(a) 取一點作為 KD-tree 之 NN 搜尋
(b) Step1.檢查鄰近點位於二元樹之節點上
(c) Step2.進行更進一步之節點判斷
(d) Step3.確定二元樹節點之後在該區域中進行點位之相似性評估
(e) 再進一步對周圍節點進行運算
(f) 將所有相鄰之節點區域依依進行運算
(g) 將所有節點進行相關距離計算
(h) 利用該方法可以提高運算效率,實質上只計算了這些節點中之數值 圖3.19 Nearest Neighbor with KD Trees 示意圖
建立KD-Tree 為較有效率之搜尋策略,利用此觀念進行計算該節點中歐幾里 德距離最小之點位,再透過式(3-29)進行最後匹配點位之決定,將是相當有效率 之演算法。
3.2.5.2 RANSAC 除錯
當匹配完成後依然可能存在一些匹配錯誤之點位,於本文中採用 RNASAC 進行錯誤點位的濾除之用。RANSAC 為 "RANdom SAmple Consensus"的縮寫,
屬迭代法(Iterative Method)的參數估計的數學函數,從一組觀測數據,包含了標 準差較大的值這裡稱為「Outliers」。
該演算法首次於 1981 年由學者 Fischler 與 Bolles 提出。RANSAC 方法是 一種不敏感度(Robust)分析的參數估計方法。其根據問題設計出某種目標函數,
再利用反覆提取n 次最小點集估計該函數中參數的初始值,利用這些初始值將所 有數據分為所謂的「Inliers」(Inliers,即滿足估計參數的點,本文稱內群)和
「Outliers」(Outliers,即不滿足估計參數的點,本文稱離群),最後反過來用所有 的「Inliers」重新計算和估計函數的參數。
(a) (b)
圖3.20 RANSAC 示意圖:(a).離散點集包含了離群。(b).使用 RANSAC 計 算離群將不會影響結果
RANSAC 方法主要是隨機取樣與相對應模式參數的檢測演算法,主要可 以將不符合模式參數之點位給予剔除,以下簡介RANSAC 主要步驟:
1. 建立 RANSAC 迴圈,並設置最大迴圈次數 N。
2. 選取任意較小模式參數(Model Parameters)於相對應之點集。
3. 解決模型參數問題。
(a) 範例 (b)以 m=2 進行計算
(c) 計算模式擬合 (d) 空間距離計算
(e) 計算內群 (f) 另一組內群
(g) 求解最佳模式
圖 3.21 RANSAC 流程示意圖
其RANSAC 方法主要在於隨機取樣與相關函數計算方面,立體對影像為投 影幾何關係,故可採用投影矩陣(Homography Matrix)進行評估。經過上述 RANSAC 演算法運算之後可以將兩張影像中與轉換參數誤差較大之點位剔除,
保留正確之點位。
3.3 測試與分析
(a) 實驗樣本圖檔
(b) 對影像進行高斯影像金字塔
(c) 利用高斯影像金字塔求得高斯差分尺度金字塔
(d) SIFT 演算法正確特徵點點位分佈圖
(e) SIFT 特徵描述,箭頭代表特徵方向,長度為尺度量
(f) SIFT 演算法匹配成果 (g) RANSAC 除錯後匹配點位成果圖 圖3.22 SIFT 演算法計算與匹配之相關流程
第四章、立體對影像之幾何理論
本章介紹立體對影像之幾何理論,並探討核線幾何與基礎矩陣之關係以及基 礎矩陣之解算方法。三維空間中的物體,與二維平面影像間的相互轉換之空間幾 何對應關係稱之為核幾何(Epipolar Geometry),核幾何可讓影像匹配運算時之搜 尋視窗由二維降為一維,以加快運算速度。基礎矩陣(Fundamental Matrix)則是用 來表示兩張影像之間的轉換關係。
4.1 核幾何 (Epipolar Geometry)
圖4.1 空間點位與核線關係圖
圖4.1 所示為空間點位與核線之關係圖,圖中 C 、 'C 分別為兩張影像之攝影 中心,X 為空間上任何之點位,x 、 'x 是X 在兩張影像上之投影點位。C 、x 、
X 三點共線,C 、 '' x 、X 三點共線。三維空間中的 X 與成像點x 、 'x 及兩個攝 影中心C 、 'C 位於同一平面上,此稱此面為核面(Epipolar Plane),兩個攝影中心 C 與 'C 的連線分別交於左右兩影像平面於e 與 'e ,則稱此兩點為核點(Epipole)。
根據核幾何上之敘述可以得知左影像上之任何一點e 必然會出現於右影像核線 'l 上,同理右影像上之任何一點位e 一樣會出現在左影像核線 l 上,l 與 'l稱之為核' 線(Epipolar Line),此幾何關係為立體對攝影之基本幾何,在資料處理中可作為 限制條件來使用,稱之為核線約制(Epipolar Constraint),例如用來描述立體對左 右二影像之投影關係,則在搜尋共軛點的影像匹配策略中,可將原本的二維搜尋 降為一維,大幅提高運算效率。其中的投影關係可由基礎矩陣(Fundamental Matrix) 來獲得。
4.2 基礎矩陣(Fundamental Matrix)
e
e '
l
'l
基礎矩陣為兩張影像間投影幾何關係之轉換,並可使用核線約制之特性來簡 化自動化匹配過程中複雜的搜尋方法,可增加匹配點位之可靠與精確程度,在攝 影幾何學中,基礎矩陣已經是不可或缺的關鍵要素之一。
4.2.1 基礎矩陣定義
基礎矩陣是用來描述在核幾何中,任何一個像點與其對應核線之關係[27]。
如圖4.2 所示,已知m 為位於左影像上之任何一點, 'l為對應在右影像上的核線,
在右影像上對應的m 必定位出現於 'l上,因此 'l與' m 之關係:
Fm
l'= (4-1)
其中F 為基礎矩陣,大小為3× 大小之旋轉矩陣。因為 m 在右影像上的對應3 點m 一定位於核線 'l上,所以 '' m 的坐標和 'l向量之內積為零:
0 '
'
' l =m Fm=
mT T (4-2)
兩張影像與基礎矩陣之關係屬於等同,因此可將兩張影像之關係互換,亦即 改用右圖求解與左圖之關係時,可將式(4-2)轉換成:
圖4.2 基礎矩陣用來表示核幾何的轉換關係 π
Hπ
0
核線(Epipolar Lines):
令l , 'l分別為m 、 'm 相關連的核線,則
核點(Epipole):
令e , 'e 分別為第一張與第二張影像上的核點,則
投影矩陣(Projection Matrix):
令P,P'分別為第一張與第二張影像上的投影矩陣,則
[ ]
當影像匹配出現錯誤匹配的時候,前述方法已經不適用,因此學者針對誤匹 配的問題提出解決方法,如 RANSAC、LMeds 等方法,其基本的想法是透過疊 代隨機取樣最小點集合(Minima Data Set)來找出能夠使正確匹配所占比例最高的 最小點集合,而影響基礎矩陣精度的主要因素為影像中的雜訊與錯誤匹配點的因 上的正規化轉置矩陣(Normalizing Transformation Matrix),分別將第一張與第二張 影像上的對應點m 、 'm ,轉換到 m
在針對F
為奇異矩陣的條件限制(Singularity Constraint),具有det(F)=0的代 數特性,利用SVD 加以條件約制(Constraint Enforcement)後,得到 F
,最後再執 行反正規化(Denormalization),即可得到最後的基礎矩陣 F。使用線性求解基礎 矩陣,雖然速度快但不夠精確,原因在於基礎矩陣大小為3× ,但矩陣中只包含3
Gold Standard Algorithm 為找到推估投影點與原觀測之間距離最 小的基礎矩陣,這個方法主要以最大相似度推估(Maximum Likelihood Estimate)來估算兩張影像平面上觀測底與觀測投影點之間的誤差,成
=0
量測之二維共軛點坐標中會存在有若干個雜訊點位,透過Sampson 近似法可以估測出較精確的共軛點座標。假設M =(u,v,u,'v')T為量測得
本節中將探討利用RANSAC 演算法用來推估基本矩陣之方法,RANSAC 演 算法採用機率統計的概念,對一群特定的樣本集合進行有效率且穩定的取樣運 算,以符合事先所設定的限制條件。
前述基礎矩陣推估方法均基於使用之共軛點均為正確的假設,不允許有任何
錯誤之點位,而RANSAC 演算法將可以容許錯誤點位的存在,並對正確之點群 進行運算,最後推估出基礎矩陣。此為RANSAC 演算法最大的特定。
圖 4-3 為使用平均分佈點位作直線廻歸之範例。(a)為以最小平方近似(Least Square Approximation)演算法所決定之直線,該直線為所有點集到直線的距離平 方值最小。 (b)為使用 RANSAC 演算法進行直線的決定,藍色線條為 RANSAC 演算法最後所決定之線條,而藍色虛線亦為 RANSAC 演算法所決定的直線之 一,但是因為該直線之符合條件差,最終結果已被剔除。
RANSAC 演算法目前已經廣泛被使用在很多程式設計函式庫中均包含了此 演算法,其中Matlab 中也已經包含了 RANSAC 工具箱的功能,而 C++程式語 言中GSL 開放式科學函式庫中也有相關演算法。
(a) 最小平方近似演算法所決定的直線 (b) RANSAC 演算法所決定的直線 圖4.3 RANSAC 演算法適應性範例
RANSAC 演算法,為一個條件終止式的隨機取樣演算法,需要決定一個取 樣迴圈所需要的執行次數N,用來判斷取樣的次數是否已經足夠找到一組好的取
(Inliers),擁有最多內群點數的基礎矩陣,即為所推求之基礎矩陣。 與核線幾何之關係。程式設計採「Microsoft Visual C++ 2005 Express 版」語言,
並配合「OpenCV Library」函式庫進行。
實驗為使用一立體對影像,先由 SIFT 演算法求得左右兩影像之特徵點並匹 配得若干個共軛點對,直接利用這些可能含誤差之共軛點對進行基礎矩陣求解,
實驗為使用一立體對影像,先由 SIFT 演算法求得左右兩影像之特徵點並匹 配得若干個共軛點對,直接利用這些可能含誤差之共軛點對進行基礎矩陣求解,