覃 丹,崔 巖,2,劉興林
(1.五邑大學 智能制造學部,廣東 江門 529000; 2.珠海四維時代網絡科技有限公司,廣東 珠海 519000)
在這十幾年中,人們越來越容易獲得具有廣角360°視場的球形全景圖,通過具有特殊鏡頭的攝像機,甚至是通過能放進口袋的手機也能拍攝出廣角360°視場的球形全景圖。球形全景圖像已成功應用于在線街道級虛擬導航(Simon Hecker等,2018)、城市規模變化檢測(方旭等,2017)、場景識別和視圖檢測(宗海燕等,2019)和3D場景重建(王資健等,2018)等方面。
然而,球形全景圖像更大范圍的視角效果和廣泛的應用面臨著這樣的困境:圖像校正是許多計算機視覺任務的基本問題,但是廣角360°視場的球形全景圖校正的研究遠遠少于廣角180°左右視場的魚眼圖像及平面圖的校正。球形全景圖與其他圖片的視覺效果相比,視角范圍更大,能將更多的事物容納到視角里,并且突顯出所拍攝的事物近大遠小的對比效果,使所拍攝畫面形成一種震撼人心的視覺效果。但是也正因為球形全景圖具有廣角360°的視場,所以圖像畸變嚴重,特別是越靠近圖像邊緣的地方視場越模糊。
一些針對魚眼圖像設計的校正算法被提出,如王向軍等人[1]提出的基于改進球面透視投影的魚眼圖像畸變校正方法和張軍等人[2]提出的單幅圓形魚眼圖像的校正,但是他們提出的經緯映射校正法是針對魚眼圖像的;而變角度線掃描法和縱向壓縮柱面投影校正法,在垂直方向上的校正效果較好,在水平方向上的彎曲校正效果還不是很理想。對平面圖像的校正也有研究,B.Hallert首先使用最小二乘法處理攝像機校準中獲得的觀測數據,從而在現場測量中獲得高精度結果[3]。Aziz和Karara在20世紀70年代早期提出了直接線性變換(DLT)相機校準方法。從攝影測量的角度,深入研究了攝像機圖像與3D世界之間的關系,建立了線性模型。線性模型易于計算且速度快,但很難完全表示相機的非線性失真特性[4]。在20世紀80年代中期,R.Tsai提出了一種基于RAC的校準方法,并建立了經典的Tsai相機模型。該方法的核心是利用線性模型求解線性參數,然后根據徑向均勻約束迭代求解非線性參數。基于RAC方法的失真模型降低了參數求解的復雜度,校準過程快速準確[5]。后來,基于最大似然估計的非線性細化將平面四邊形的各個角及其對應的圖像點之間的幾何誤差最小化以解決相機參數。Zhang等在2017年提出使用RANSAC算法來改進校準參數,基于對象的相機校準的性能高度依賴于對象的準確性。通過以上分析,可以看出目前針對球形圖像校正的應用較少。
因此,為了解決球形全景圖圖像變形問題,以適應人眼的視覺或增加圖像識別技術等對球形全景圖利用的實用性,該文提出一種基于經緯映射與透視投影的球形圖像校正方法。
為了利用球面全景圖像,應該考慮球形全景圖像中包含的嚴重失真。關鍵點、角點和特征點因扭曲而受損。因此,需要克服球形全景圖像的嚴重失真。當物體的投影遠離圖像中心時,徑向畸變變得更加嚴重[6]。球面全景圖像具有與徑向畸變類似的非線性放大率,將其稱為球面畸變。當物體的投影位于靠近極點時,球形畸變變得更嚴重。由于球形全景圖像中物體的球面變形基本上與徑向畸變非常相似,因此在進一步研究之前研究徑向畸變是有幫助的。Lourenco等人[7]將徑向畸變表示為非線性幾何變形,其使像素位置沿徑向方向并朝向畸變中心移動,他們提出了一種改進SIFT算法為徑向畸變[6-7]。徑向畸變是由于非平坦的鏡頭特性和相機鏡頭的不完美制造工藝造成的,使用廣角鏡頭拍攝的圖像會產生嚴重的扭曲。Zhang Zhengyou提出了一種靈活的平面校準方法,可以簡化攝像機校準過程,同時獲得高精度的校準結果。該方法基于不同角度和姿勢的黑白棋盤模板拍攝三張或更多圖像,提取圖像中棋盤的角坐標,并替換建立的相機模型方程,以獲得內部和外部參數以及失真系數。后來,開發了基于圓形模板,六邊形網格圖案等的校準方法[8-9]。該文的球形圖像校正也需要確定圖片中的相機位置,文中的數據源為球形圖,因此校正過程還需計算圖片的圓心及半徑數據,以此建立校正模型。

圖1 工作流程框架
該文提出一種基于經緯映射與透視投影的球形圖像校正方法。該方法首先是對經緯映射算法進行改進,將球形全景圖通過改進的經緯映射法轉換成魚眼圖;其次通過改進的透視投影算法將魚眼圖像進行最終校正。這樣做是為了降低球形圖像直接校正的難度。通常球形圖像的廣視角為360°,其計算的復雜度與存儲的難易程度都遠遠高于廣視角為180°的魚眼圖像[10-11],因此,該算法先將球形圖轉換成魚眼圖,再對魚眼圖像進行校正處理。工作流程框架如圖1所示。
球面全景圖像可以表示360°,描述了球形全景圖像的幾何特征。使用球形全景圖,可以利用寬視角的優勢。普通的平面相機具有有限的視角,并且所獲取的視圖還會受到相機的觀看方向的限制。然而,無論觀察方向如何,球形相機都覆蓋整個視圖。文中將球形全景圖上的點通過經緯度映射為魚眼圖像的點,經度映射成魚眼的水平坐標,緯度映射成垂直坐標,因為源圖是整個單位球面,所以經緯映射圖長寬比為2∶1,經度從0到2π,緯度從0到π[12]。地球上的任何點都可以用球坐標來描述,假設地球是一個單位球體,地理坐標系類似于球面坐標系。單位球形全景圖像中扭曲的場景可以用圖2中的經緯度定位圖來表示[12],圖2中每一條經度上的像素點的列坐標對應著經緯映射后魚眼圖像的列坐標。假設圖2垂直方向上同一經度有不同的緯度值Yi,并且Yi與Yi+1之間的角度差都為θ,此時由圖2中看出在赤道上幾乎沒有拉伸變形,但是當同一緯度有不同的經度值Xi時,越接近南北極點,變形就越厲害[13-14],幾乎拉伸到圖像的整個寬度。

圖2 經緯度定位圖
該文在對球形全景圖求取中心點和半徑之后,使用經緯映射圖像的方法,將球形全景圖像轉化為半球的魚眼圖。從圖2中可看出,因為源圖像球形全景圖像是單位球,目標圖(球形全景圖像映射的經緯映射坐標系圖)和球形全景圖像的尺寸一樣,所以可以采用一一映射方法實現結果。如果源圖像是半球單位,需要映射的結果為平面圖或180°視角內的圖像則采用多對一的映射方法,以避免在目標圖上留下許多空隙點。
實現經緯映射算法的過程中還需要推導球形全景圖像投影魚眼圖像與經緯映射圖之間的映射關系。如圖3(a)所示,假設有球形全景圖像規格化坐標后映射為魚眼圖像上的某一點坐標為,計算P點到原點O的距離r及P點與X軸的夾角φ。圖3(b)中顯示了球形全景圖映射時的球坐標。計算r和φ的公式[12]如下:
(1)

(2)
如圖3(b)所示,r可以映射成球坐標系的θ、φ值,φ值可直接用于從照相機到實景方向向量的球坐標的φ,而θ角的值等于r乘以球形全景圖視角α(文中選用的球形全景圖默認視角為2π)的一半[12]。即:
θ=r*α/2
(3)

(a)極坐標平面 (b)球坐標選取
如圖3所示,如果知道照相機到實景方向向量(x,y,z),就可以推導出在經緯映射圖中對應的坐標。由于在球形全景圖到經緯映射圖時的球坐標和球形全景圖映射時的極坐標一樣,因此假設有圖3(b)的球坐標系(θ、φ),θ是照相機到實景方向向量與y軸的夾角,φ是方向向量在XOZ平面上的投影與X負軸的夾角,若球面半徑為1,則從照相機(球原點O)到實景中點的方向向量(x,y,z)公式[12]如下:

(4)
這樣對于目標圖像(所得到的魚眼圖像)上每一個像素坐標點,經過經緯映射的變換,可以映射到源圖上的像素點,然后將目標圖上每一點到源圖的像素點取樣,這樣球形全景圖就可以映射成魚眼圖像,為接下來的校正球形全景圖像實驗簡化了實驗復雜度。
最后結合改進的球面透視投影算法實現最終的實驗效果,即展開成平面圖像。球面透視投影與平面透視投影原理一樣[15],需要知道球面上的點與投影面[16](文中的球面是魚眼圖像,投影面是魚眼圖像投影后的平面)的關系。如圖4所示,假設有XFOFYF為魚眼圖像平面像素坐標系,并在XFOFYF上取得一點O,以點O為原點在XFOFYF上建立空間直角坐標系O-XYZ,X軸和Y軸方向向量與XFOFYF平面重疊,并以O為球心建立空間半球體,半徑為r,稱此半球體為魚眼圖像。當Z軸與映射后的平面圖(主視圖)的法線平行且經過主視圖的原點Or時,OT與空間直角坐標系原點O距離為d。

圖4 魚眼圖像映射示意圖
若平面圖上有一點P(xp,yp),與球心距離為dp,在球面上投影點是P,P點垂直映射點為m,在像素坐標系XFOFYF中m(Xm,Ym)滿足如下關系:
(5)
(6)
假設魚眼圖像上有點m(Xm,Ym)映射到主視圖上點P(xp,yp),它們的關系可以用如下公式表示:
(7)

(8)
為了評估文中算法的性能,進行了多組實驗測試并將其與其他幾種算法進行比較。文中選出一組室內與室外的兩張圖片進行展示,對于這兩張圖片分別采用文中算法、經緯映射算法+文獻[12]算法(后文中都稱為球形圖坐標算法)、文獻[17]算法(后文都稱為球形圖立體紋理映射法(sky box))進行測試,并比較實驗結果,如圖5和圖6所示。就實驗結果來說,實驗在室內室外的條件下效果差別不顯著,(c1)算法校正數值略有偏差,只展現了中心部分,并且四周邊緣還是看得出扭曲程度較大,而文中算法雖然也存在校正數值偏差問題,但將扭曲部分校正的效果比較好,彌補了(c1)中校正不足這一點;(d1)雖然將球形全景圖全部展開成平面,但是分為上下左右前后六部分進行校正后再拼合,并沒有形成整體校正,這不利于后期圖像處理工作的進行,而文中算法直接將球形圖像以矩形形式展開成平面,彌補了(d1)中的不足。總體上來看,該算法比其他兩種算法更適用于將球形全景圖像展開成平面,但是不足之處還會在后期的工作中改進,后期的工作中將對球形全景圖如何能完整地展現出校正效果進行優化。實驗與兩種球形校正方法進行了比較,如表1所示,在與球形圖坐標算法的比較中,本實驗校正效果扭曲程度降低,建立映射關系的時間對比上減少1.22 s,校正用時增加0.39 s;在與球形圖立體紋理映射法(sky box)的比較中,實驗為整張球形圖的校正,而球形圖立體紋理映射法(sky box)的校正為分開的六張圖的校正再合為一張圖的校正,實驗建立映射關系的時間對比上減少2.11 s,校正用時減少0.66 s。總之,改進的算法產生了更好的輸出。在球形圖像校正的過程中利用改進的經緯映射和透視投影算法進行校正,有效地利用了算法的低復雜度處理思想,雖然相對于經緯映射和透視投影算法的改進并不大,但改進的算法可以實現更好的校正結果,同時在建立映射關系上所花費的時間最少。

圖5 室內圖測試

圖6 室外圖測試

表1 不同算法測試實驗時間對比
從表1可以看出,文中算法應用于球形圖像展開成平面圖時,所需建立映射關系用時最少,而校正所用時間與其他兩種算法相當,所以文中算法可用于將球形全景圖展開成平面。
文中做了相關圖像質量評價,實驗數據為自己拍攝的球形圖,文中算法將球形圖校正為平面圖,為了評價校正圖像結果,另外拍攝了一組原場景平面圖,如圖7所示。

圖7 圖像質量評價實驗數據圖
圖校正圖像的質量評價方法由信息熵和均方根誤差來表示。信息熵的表達公式為:
(9)
其中,L表示圖像灰度級別,pi表示灰度值i像素占總像素的比例,E越大表示參考圖像與所校正圖像相似度越高。均方根誤差的表達公式為:
(10)
其中,R(xi,yj)為參考圖像像素,F(xi,yj)為校正圖像像素,m*n為圖像大小,RMSE越小,表示參考圖像與校正圖像差異越小。圖像質量評價結果如表2所示。

表2 圖像質量評價實驗結果
從表2可以看出,文中算法的校正結果與參考圖的信息熵最大,與參考圖的均方根誤差值最小,表明文中算法的校正結果略優于球形圖坐標算法和球形圖立體紋理映射法(sky box)。
提出了一種校正球形全景圖的方法:結合改進的經緯映射算法及改進的球面透視投影算法,得到了球形全景圖展開成平面的方法。與依賴單純的坐標和紋理映射來構建類似球形圖校正的現有方法不同,該方法利用改進的經緯映射算法及改進的球面透視投影算法來校正球形圖。從多組室內室外的實驗球形圖中選出一組圖來展示,經實驗結果看,該算法實現效果比其他兩種算法的實現效果更好一些,扭曲程度得到一定程度的改善,在建立映射關系方面所用時間最少,在校正方面所用時間相差無幾。但是由于沒有精確地計算球形全景圖的視角大小,最終糾正的效果還有不足之處,球形圖像最終映射成平面圖時有些地方并沒有完全顯示出來,所以接下來的工作是要不斷完善映射的成果,力求增加其完整性。此外該球形圖的校正算法可以進一步優化,以滿足實時或時間要求苛刻的應用。