郭衛衛
(四川大學計算機學院,成都 610065)
常規柱面圖像拼接的方法,對待拼接圖像有嚴格的要求,要求其視差、光照、運動物體等都盡可能的沒有誤差,而現實場景卻是會經常遇到視差問題,運動物體運動等問題,例如常見場景的多光源投影就會出現重影問題。尤其是用單攝像頭采集的圖像,因為對于手持單攝像頭采集的圖像,要求其嚴格符合柱面圖像拼接的要求較難,或多或少都會存在一定的視差,尤其對于普通用戶來說,并不會用手持攝像頭進行嚴格的圖像采集。
本文主要介紹一種在采樣過程中結合復合映射使APAP等算法可以適用于柱面圖像拼接。假設有兩個待拼接的圖像A和B,如果A和B存在視差等問題,就需要將B進行轉換,通過尋找A和B直接的配準模型進行轉換B,假如A和B都是平面視圖,就可以采用全局單應矩陣的方法進行轉換,但是在本文討論的進行兩個不同視角圖像拼接時就不適合,于是本文引用文獻[1-2]的思想,改變傳統的柱面拼接流程,使APAP等算法也可以適用于柱面圖像拼接。
對于任何圖像處理概念,圖像采集都是第一步。在本文,圖像采集是用網絡資源,其是用手機進行的圖像獲取,原始圖像中存在一定的視差,因此常規的柱面拼接流程在這個階段已經不能完全適用,待拼接的圖像破壞了傳統柱面拼接流程中的圖像采集階段,因此采用本文提出的柱面拼接流程進行柱面拼接。
XYZ坐標系是照相機的坐標系,相機坐標系和焦距如圖1,那在圖像上的像素點P(x,y),則相機坐標系的坐標就是

圖1 相機坐標系的焦距
圖2是圖1的切面,根據圖我們可以得到圖像寬W、相機焦距f和相機水平視角θ的關系公式。


圖2 相機像素焦距和實景圖寬度W的關系
相機運動都是在XYZ平面,光軸和圖像平面相交點就是圖像中心,如圖3(a),原始圖像I,映射后柱面圖像為J,原點為O(投影中心),設圖像高H,寬為W,柱面半徑為r(等于焦距f),攝像裝備水平視角θ。圖像的左上角設為坐標原點,于是圖像上的像素坐標就可以確定。圖像I上的任意一點像素坐標為P(x,y),那P點在相機的XYZ坐標系下對應坐標就是:,柱面上對應點坐標記為Q(x',y')。根據XYZ平面的截面,如圖3(b),可以求出Q坐標。

圖3 柱面映射
因此,相機坐標系的原點和點P間的直線方程如下:

其中,t是參數,柱面方程為:

聯立上面兩式子可以得到:

將式(4)代入式(2)可以得到:

像素點P(x,y)在柱面投影到柱面的點Q的坐標就是(u,v,w),然后將Q點的坐標變換到展開面的坐標公式如下:

聯立公式(5)和公式(6),就可以得到平面圖像上點P(x,y)映射到柱面圖像的點Q(x',y')之間的映射關系:

單一的變換模型對全局使用的是一個估計的單應矩陣,對于局部之間的差異考慮的不夠,如果是平面場景并且同景深,采集圖像是用相機單一旋轉得到的,這種情況比較適合,但是對于有景深差異的圖像,卻有一定缺點。Julio Zaragoza等人改進了單應矩陣,提出了加權單應矩陣的方法,將圖像劃分網格,每個網格就是一個圖像塊,每個圖像塊就代表了不同的單應矩陣,在對每個圖像塊進行估計時,給每個特征點都加上針對于該單應矩陣的一個權值,特征點距離該圖像塊越近權值就越大,根據像素值臨近效應的說法,這樣得到的單應矩陣也可以更好地估計這個區域的變換關系,但是在特征點較少的地方,加權投影矩陣卻效果不好,會退化為全局的單應矩陣。
在三維空間下,一個物體從不同的視角進行拍攝,采集到的圖像之間有一定的映射關系,一般這種映射關系可以用單應映射表示,具象化就是一個3×3的非奇異矩H:

這個H就是單應矩陣。
根據單應變換矩陣,單應映射表達式可以表達如下:

如圖4,將圖像A直接進行柱面投影得到A',將B進行單應和柱面的復合變換,直接從B平面通過復合變換到柱面A'的基準柱面下,簡化了從B通過單應變換到A平面,然后再轉換到柱面的過程,期間需要注意,復合映射中柱面映射是考慮整體圖像的映射,也就是需要將A'和B保證在同一個坐標系下面,以整體圖像為視角,做柱面映射,因此需要整體圖像已經產生,用整體圖像的信息來作為柱面映射中的參數,但是重采樣的時候根據逆映射關系在原始圖像進行重采樣。

圖4 柱面拼接
B圖像經過單應變換到A的視角下,然后A和B進行融合得到C,然后可以得到C圖像的長寬高,并將坐標系轉換為C圖像的視角下,假設圖像C的X軸方向最大值xmax,最小值xmin,同理Y軸最大最小值分別為ymax和ymin,于是可得圖像C的左上角(xmin,ymin),于是圖像A和B'轉換到C下的平移關系,(x',y')=(x+|xmin|,y+|ymin|),圖像高即為 H'=(xmax-xmin),高為H'=(ymax-ymin)。A視角轉換到B視角是平移變換。
根據式(9)、式(7),將式(9)和上述平移變換代入式(7)可得單應映射、平移變換和柱面映射的復合映射為:

本文結合重采樣的思想,改進柱面拼接[3-5]流程,傳統柱面拼接流程在平面投影到柱面,然后在柱面圖像上進行圖像配準和圖像拼接,如果圖像是嚴格的同一個視角場景,攝像設備旋轉的方式采集的,可以達到預期效果,但是如果待拼接的圖像存在視差和多場景等各種問題,因為圖像拼接大多都采用的單應變換的方法進行的配準,此時傳統的柱面拼接方式,如果在柱面進行配準就會因為單應對于曲面的不適應而導致柱面拼接的效果較差,于是本節提出一種柱面拼接流程,讓待拼接的圖像在平面就完成圖像配準,然后獲得單應變換關系和配準后的圖像的信息,然后將得到的配準后的圖像信息作為柱面投影的整體進行投影,在重采樣階段,可以根據單應變換關系和柱面映射的公式,分別在基準原始圖像和待拼接原始圖像進行采樣,以此完成柱面圖像拼接,采用此流程可以使柱面拼接的過程中采用目前圖像拼接效果較好的APAP算法[1]和AANAP算法[2]等基于單應變換進行圖像拼接的算法,從而可以達到即使待拼接圖像不能嚴格達到傳統柱面拼接圖像的標準也可以得到拼接效果良好的拼接圖像。
傳統柱面拼接的流程如圖5[6]。

圖5 柱面拼接流程
這個流程中對于待拼接圖像要求規格一致,否則投影后的柱面圖像就不在一個柱面參數下,如果規定好柱面映射的參數,在規格一定的情況下可以完成正常拼接,然而,在待拼接圖像存在視差、景深等問題時,柱面投影后的圖像就因為其是曲面不適應單應變換,做基于單應變換的拼接時就會因為這個不適應性導致柱面拼接效果較差,于是本文換用一種非傳統的柱面拼接方式,以平面拼接后的圖像作為柱面映射的整體,獲得其圖像拼接,拼接流程如圖6。

圖6 柱面拼接流程
上述拼接流程中,柱面拼接過程以在平面圖像配準后的獲得圖像可以得到柱面拼接的整體為中心,考慮整個柱面拼接流程中單應變換,轉換到整體視角下的平移變換,和確定的柱面映射參數,可以得到整個柱面拼接流程中的所有參數,然后獲得復合映射的各個參數,以此來使基于單應變換的一些算法可以采用此流程進行柱面圖像拼接。
根據以下的實驗結果可以看出,本文提出的柱面拼接流程在一定程度上可以消除視差的錯位問題,傳統拼接流程的直接拼接結果可以明顯看出嚴重的拼接錯位問題,傳統拼接流程使用APAP算法的時候,因為其黑色邊界問題,插值時引起明顯的灰色邊界,采用本文的拼接流程可以很好的消除錯位,但是有一定的變形,后期研究可以著眼于變形做出更深一步的研究。

圖7 原始圖像

圖8 實驗結果,傳統流程拼接(左上),APAP傳統流程拼接(右上),本文流程拼接
本文介紹了一種適合單攝像頭采集獲取的圖像進行柱面拼接的一種流程,基于該流程可以將有一定視差的原始圖像采用優秀的圖像拼接方法進行柱面拼接。但是此流程只是初步提出,需要進一步的完善。因為柱面拼接過程中,無論是柱面映射還是單應變換都涉及重采樣,重采樣就可能會引起混疊,后續研究可以著手在柱面拼接的過程中加入抗混疊的算法進行柱面拼接。