1. 程式人生 > >影象拼接演算法原理 1

影象拼接演算法原理 1

本系列文章為作者原創,初載於我們的Blog“額外維度”,轉載於此。

多路視訊實時全景拼接Demo可見我們的youku主頁

0. 引言

76

stitch1

圖1,2,3.  兩張圖片的拼接

影象拼接是計算機視覺中一個有趣的領域,它把來自多個不同視角相機的影象變換到同一視角下,無縫拼接成一張寬視野影象(比如360度全景圖,甚至360度*180度的球面全景)。上圖所示,即為兩張影象的拼接,結果基本是完美的。

需要注意的是,由於相機各自的指向角度不一樣,因此兩圖片中來自同樣場景的部分並不能夠通過平移影象而完全重合。比如上圖中那棟帶有嶺南風格拱頂的房子,它的屋檐在左圖中要比右圖中更水平些,如果試圖通過平移對齊畫素來拼接兩幅圖,結果必然不自然(比如在屋檐處出現拐角)。兩圖要做到完美疊合,不是一個平移變換能做到的。當然,肯定存在這樣一個變換,那它是什麼呢?

事實上這裡邊的數學原理(射影幾何)很古老,什麼情況下不同位置、視角的相機可以變換到同一視角下拼接起來也是久為人知的,只不過能夠利用計算機來進行大規模自動拼接,還是近些年才成熟起來的事。

那到底什麼情況下影象可以拼接,如何拼接呢?不妨先擺出結論吧:在兩種情況下影象可拼接,一是各相機幾何中心重合;二是各相機位置任意,但場景是一個平面。一種特殊情況,場景為遠景時,可以近似的等價於一個平面場景,從而也是可拼的。拼接的方法很簡單,在滿足上述兩種情況之一時,存在一個單應性變換(Homography),能夠將一個相機的影象變換到另一個相機的視角下從而可以進行拼接。

下面我們用一套直觀的語言來講解這個變換,以及更復雜些的拼接方法。

 1. Homography

Homography

圖 4.  單應性變換

如圖,計算機視覺中,我們用一個投影中心點和一張影象平面來刻畫一個理想的相機。點與平面的距離為焦距,任意場景點所成像點用這樣一種簡單的方式來決定:將它與投影中心連線,連線與影象平面的交點即像點位置。圖中給出了兩個共中心的相機,它們有不同的指向(因而也有不同的影象平面$$P$$和$$P^{\prime}$$),同一場景點$$S$$在兩個平面上的像點由紫線與兩平面的交點$$D$$、$$D^{\prime}$$給出。到這裡我們就直觀的得到了這樣一個變換:$$P$$上像點到$$P^{\prime}$$上對應像點的一個對映。這個對映可以把兩張不同視角下拍攝的照片變換到同一視角下,從而能夠完美拼接兩張影象。這個對映正是我們要說的單應性變換。

到這裡我們可以回頭來解釋另一個問題,為什麼要求相機共中心?不妨反過來考慮,如果兩相機不共中心,會出現什麼樣的情況?如圖所示,

Homography_2

圖 5.  單應性的破壞

我們讓兩相機的投影中心$$O$$、$$O^{\prime}$$相離。這時可以看到,$$S_1$$、$$S_2$$兩點原本在相機$$O$$上投影到同一像點,這時在相機$$O^{\prime}$$上卻投影到了不同像點。這意味著相機$$O^{\prime}$$看到了在$$O$$視角下被遮擋而看不到的內容,此時我們無法把$$O^{\prime}$$看到的影象變換到$$O$$的視角下。這就解答了我們之前的問題:非共中心放置時,各相機看到的內容太豐富以至於不能變換到同一視角下。讀者可以檢查,在相機共中心時,一個相機中被投影到同一像點的場景點,總會在另一相機中也被投影為同一像點。

事實上,在相機擺位任意時,我們看到的資訊是如此豐富,以至於可以嘗試重建出場景點的三維座標。現代的三維重建演算法可以利用不同位置、視角下拍攝的影象重建出物體的三維模型,這是後話。

當然,讀者仍然可能想起,除掉共中心情形,我們還說過,相機擺位任意,但場景為一個平面時也是存在單應變換的。我們在這裡不再給出這種情況的直觀解釋,讀者可以自己思考。

(未完待續)