仿射變換與投影變換


介紹基本的圖形變換,仿射變換和投影變換的內容和關系,最后再簡單講解下RANSAC算法。這套內容常用於圖片和圖片的特征點匹配、圖片融合等場景。

仿射變換和單應矩陣

首先明確:二者的應用場景相同,都是針對二維圖片的變換。仿射變換affine是透視變換的子集,透視變換是通過homography單應矩陣實現的。

從數學的角度,homography即H陣,是一個秩為3的可逆矩陣:

image

仿射矩陣是:

image

由於第三行沒有未知數,仿射矩陣最常用的是兩行三列的形式。計算H陣需要4對不共線點,計算仿射陣只需要3對不共線的點。

通常會才用RANSAC方法從多對匹配點中計算得到精確、魯棒的結果。affine一般比homography更穩定一些,所以可以先計算affine,然后再用affine作為homography的初始值,進行非線性優化。

仿射變換的實際意義

仿射變換在圖形中的變換包括:平移、縮放、旋轉、斜切及它們的組合形式。這些變換的特點是:平行關系和線段的長度比例保持不變。

image

平移變換

image

數學形式:

image 

矩陣形式:

image

尺度變換

image

矩陣形式:

image

旋轉變換

image

矩陣形式:

image

剛體運動:旋轉縮放平移

image

矩陣形式:

image

斜切變換

image

矩陣表示:

image

這個也是更為一般的仿射變換的形式,xy軸的旋轉是兩個自由度。

透視投影變換的實際意義

首先,繼續上面的示例,透視變換的矩陣形式:

image

這個變換看似是很隨意的,變化的可能性也是非常多。但投影變化具有其明確的意義:共面點成像。

先回顧下攝像機模型

image

世界坐標系映射到攝像機坐標系:Pc即上圖的Mext

image

image

其中Maff表示像素坐標系和單位距離坐標系之間的轉化,與硬件設備相關。不考慮像素坐標系,在以米等單位距離為尺度的笛卡爾坐標系中,有:

image

對於共面點,我們可以另其一個坐標為0(肯定存在一個適當的世界坐標系滿足的),不妨設為第三維度,上述矩陣可以得到簡化:

image

最終得到的3*3的矩陣,稱之為“Homography矩陣”,該矩陣是可逆的。

研究共面點成像有什么意義呢?兩個不同位置的相機,共面點對應有兩個單應矩陣H1和H2。

兩個角度拍攝的一堆共面點,可以通過H1和H2以及C陣(上面的Mext)得到變換矩陣H。矩陣的形式:

image

求解上述方程,有兩種方式,一種是設:image;兩一種是添加約束:image

選擇第一種約束:

image

得到:

image

寫成矩陣的形式:

線性最小二乘為題:Ah=b

1997年,Hartley發表“In Defense of the Eight Point Algorithm”對原始8點算法進行改進,在構造解的方程之前對輸入的數據進行適當的歸一化。即在形成8點算法的線性方程組之前,圖像點的一個簡單變換(平移或變尺度)將使這個問題的條件極大地改善,從而提高結果的穩定性。而且進行這種變換所增加的計算復雜性並不顯著。算法具體過程具體如下:

a.對原始圖象坐標做一個平移變換,使原來以左上角為原點的圖象坐標變成以所有圖像點的重心為原點的圖像坐標;

b.再對圖象坐標做一個尺度變換,使得點到原點的平均距離為clip_image002

分別對兩幅圖像進行以上兩步變換,然后將變換后的圖像坐標作為輸入數據計算基礎矩陣。計算過程如下:

第二種求解方式:這里可以使用SVD分解

image

得到:

image

矩陣的形式:

齊次最小二乘法:Ah=0,h的解是A的SVD分解V的最后一列向量,右奇異向量還是單位向量,正好滿足條件。

透視變換的應用主要有兩個:消除透視投影導致的失真,校正圖像;圖像拼接。

201112201039223516.png (640×331)201112201039256006.png (640×318)

RANSCK算法剔除誤匹配

相比,上面的矩陣求解,Ransck的優勢是:消除歧義點,速度更快。

采樣次數設定

如果想要得到好的結果而又使計算量不至於很大,就需要確定一個合適的采樣次數。采樣次數N足夠大,令由s個點組成的隨機樣本中至少有一次沒有外點的概率為p,通常p取0.99。假定clip_image002[4]是任意選擇的數據點為內點的概率,那么clip_image004[4]是其為外點的概率。那么,至少需要N次選擇(每次s個點),其中clip_image006[4],從而得到采樣次數N為:

clip_image008[4] 

但是,通常數據中的錯誤率clip_image010是未知的,在開始抽樣時對數據錯誤率clip_image010[1]給出一個最壞的估計,然后根據上式計算出在此最壞估計情況下所需要的抽樣次數N,在抽樣過程中,不斷修正clip_image010[2]N的值,一直到當前抽樣次數大於N的值,則終止抽樣。在一開始時,由於對數據錯誤率clip_image010[3]給出一個最壞的估計,所以估計出來的N值會非常大,但由於在抽樣過程中大量外點被剔除,clip_image010[4]值不斷減小,則N的值也會急劇減小,向真值不斷逼近。確定RANSAC采樣次數的自適應算法如下所示:

image

RANSAC算法剔除誤匹配

把RANSAC算法應用於假設對應集,以求得單應估計和與此估計相一致的(內點)對應。樣本大小是4,因為四組對應確定一個單應。采樣次數由每個一致集中數據錯誤率自適應地設置。這里有兩個問題需要繼續進行討論:此時的“距離”是什么;以及怎樣去選擇樣本。

距離測量:通過單應矩陣clip_image002[6]估計一組對應的誤差最簡單的方法是采用對稱轉移誤差clip_image004[6],其中clip_image006[6]是點對應。一個更好但是開銷更大的距離測量方法是重投影誤差clip_image008[6],其中clip_image010[12]是完全對應。這種測量開銷大的原因是必須計算clip_image012。另一種方法是采用Sampson誤差。

樣本選擇:這里存在兩個問題:第一,退化的樣本應該丟棄。例如,如果四點中有三個點共線則單應無法得到;第二,組成樣本的點應該在整個圖像中有合理的空間分布。空間的分布采樣可以這樣來實施:划分圖像並通過隨機采樣的適當加權來保證屬於不同小區的點比同屬於一個區的點有更大可能性進入樣本。

在RANSAC算法估計內點結束之后,可以得到獲得最大的一致集。為了使得匹配結果更加精確,用得到的所有內點(而不是僅僅用樣本的四點)來改進單應估計;然后在通過最小化ML(極大似然)代價函數從內點中計算進一步改進單應估計。最后一步首先在內點上執行一個ML估計,然后用新估計的clip_image002[7]重新計算內點,並重復這一循環直到內點數目收斂。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM