本文轉自徐飛翔的“圖像校正(Image Rectification)——使得在對極線上尋找對應點更加容易 ”
版權聲明:本文為博主原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接和本聲明
為什么我們需要圖像矯正
我們在[1]曾經聊到了在對極線上尋找對應點的方法,如Fig 1.1所示。這種方法將對應點可能的范圍約束到了一條直線上,而不是一個二維平面,這樣大大減小了搜索空間。同時,我們也在[1]中聊過,每個對極面都是會經過基線的,每個對極線也是會經過對應的對極點的,正是因為如此,其實對于單張圖的對極線組來說,如果延伸每條對極線,我們會發現每條對極線都會匯聚于對極點上,如Fig 1.2所示。也正是因為如此,我們得到的對極線們都不是平行的,如Fig 1.3所示。
Fig 1.1 在對極線l和l'上尋找對應點。
Fig 1.2 對極線的延長線將會匯聚在對極點上。
Fig 1.3 兩張圖對應的對極線對(epipolar lines pair),我們發現這兩組對極線都是不平行的。
我們在后續的處理中,將會發現不平行的對極線會使得尋找對極點的運算變得復雜,我們期望的是, 如果每對對極線都是平行的,那將會大大減少后續算法的復雜度,特別是在求視差時,平行的對極線將會提供極大的便利。 理想的對極線對的效果如Fig 1.4所示。我們后續就討論如何才能從不平行的對極線轉換成平行的,也就是 圖像矯正(image rectification) 的具體操作。
Fig 1.4 上圖表示的是未經過圖像矯正的對極線配對,我們發現其是不平行的。下圖是經過圖像矯正的對極線配對,我們發現其平行了,這個效果正是我們所期望的。
圖像矯正
需要明確的是,進行圖像矯正之前需要知道相機的內參數和外參數[4]。
我們首先要知道,為什么我們的對極線對會不平行呢?如圖Fig 2.1所示,其不平行的原因是因為我們的成像平面沒有共面(coplanar),那么自然地,我們的直接做法就是矯正我們的成像平面,使得其共面,效果如圖Fig 2.2的黃色面所示。其總體效果,如Fig 2.3所示,我們可以發現,通過這種手段,我們的對應點的搜索空間進一步縮小到了水平線上,只用一個水平線上的參數x xx表示其距離就可以描述對應點了,這樣其實是大大減少了運算量的。
Fig 2.1 使得對極線不平行的根本原因是我們的不同攝像機的成像平面之間并不是共面的。
Fig 2.2 通過矯正成像平面到共面,我們可以使得對極線對平行。
Fig 2.3 通過矯正到(2)的情況,我們的搜索空間進一步減少了。
我們后續具體分析這個矯正過程,我們要想怎么樣才能將成像平面矯正到共面呢?我們觀察圖Fig 2.4,我們延伸射線和
分別得到
,
,使得
,同時,我們確保
到平面
的距離相同,那么我們的平面
就是期望得到的矯正成像平面了。其實這個也不難理解,因為每個對極面都是經過基線的,而基線平行于
,那么
在基線上的投影必然是平行于
的,同時,我們保證了兩個焦點到兩個平面的距離相同,確保了其是
的投影。
Fig 2.4 平行對極線(粉色)平行于基線(黑色OO'),而且焦點分別到其對應的成像平面的距離相同。
我們為什么要加上這個焦點到兩個矯正后的成像平面的距離相同這個約束呢?讓我們看一個例子。
在如圖Fig 2.5的系統中,我們假設兩個成像平面是共面的,其焦點之間的距離,兩個攝像頭之間不存在有旋轉關系,那么我們可以知道其相機參數為:、
從[1]中提到的對極約束的代數表達形式,我們有:
從中我們發現,我們必須引入這個約束去約束成像平面的位置。
我們知道極點e 是本征矩陣的零空間向量,也就是說我們有,我們可以解出:
我們如果從齊次坐標的角度去看待那么我們知道其實這個時候極點是在無限遠處了。(關于齊次坐標系,見[2,3])
于是,其實矯正成像平面的后果就是,我們的極點被挪到了無限遠處,這個和我們圖Fig 1.2的推論相同。
Fig 2.6 經過矯正之后,圖像的極點被移到了無限遠處。
我們到現在算是對圖像矯正有了直觀上的印象,接下來我們嘗試用算法去描述這個過程。圖像矯正算法主要分四步。
用旋轉矩陣旋轉左相機,使得左成像平面的極點到無限遠處。
用和第一步相同的旋轉矩陣旋轉右相機。
用外參數中的旋轉繼續旋轉右相機。
對坐標系調整尺度。
我們首先需要確定旋轉矩陣? 。為了確定這個矩陣,我們需要構造一組彼此正交的單位向量
。我們一般選擇以其中一個焦點為原點構建,選擇
作為一個基底,然后進行單位化,我們有:
構造則只有和
正交并且是單位向量這約束,因此比較任意,如:
容易定義:
因此旋轉矩陣為:
然后設置左右攝像機的旋轉矩陣
其中的R \mathbf{R}R是外參數的旋轉矩陣。
隨后進行旋轉和調整坐標系尺度,如:對于左相機的點 ,計算出
,隨后計算器調整后的坐標系,最終有:
對于右相機,其操作相同。
最后的矯正結果展示如:
Reference
[1]. https://blog.csdn.net/LoseInVain/article/details/102665911
[2]. Hartley R, Zisserman A. Multiple View Geometry in Computer Vision[J]. Kybernetes, 2008, 30(9/10):1865 - 1872.
[3]. https://blog.csdn.net/LoseInVain/article/details/102756630
[4].https://blog.csdn.net/LoseInVain/article/details/102632940