王 懷,王展青
(武漢理工大學(xué)理學(xué)院,武漢 430070)
隨著現(xiàn)代生活的智能化,人們能夠隨時(shí)隨地使用智能手機(jī)等手持式圖像采集設(shè)備來獲取高質(zhì)量圖像[1]。由于拍攝視野的限制,人們不得不通過旋轉(zhuǎn)設(shè)備來記錄更多的圖像內(nèi)容,并直接拼接得到一幅寬視角圖像。而在實(shí)際操作過程中,難以保證相機(jī)光心的固定,導(dǎo)致圖像之間存在視差,最終得不到滿足實(shí)際需求的拼接圖像。
傳統(tǒng)的圖像拼接算法采用全局特征建立變換模型。其中,具有直線結(jié)構(gòu)不變性的單應(yīng)變換[2-3]最為常用,它能兼顧圖像全局特性,但存在重疊區(qū)域無法完全對齊以及拼接圖像失真較嚴(yán)重的問題。
為了提高配準(zhǔn)精度,相關(guān)算法開始采用局部配準(zhǔn)的方法來分別對齊各個(gè)區(qū)域。其中,Gao等[4]利用兩個(gè)單應(yīng)矩陣建立投影變換模型分別對齊圖像下部的前景與上部的背景。Lin等[5]利用平滑變化的仿射變換解決視差和景深不同導(dǎo)致的圖像配準(zhǔn)不精確的問題。Zaragoza等[6]采取局部投影變換與移動(dòng)直接線性變換相結(jié)合的方法實(shí)現(xiàn)拼接,開啟了網(wǎng)格優(yōu)化模型的先例。此外,通過結(jié)合最佳縫合線算法來提高圖像配準(zhǔn)精度的算法[7-9]也取得了較好的拼接效果。
為了減少圖像投影失真,越來越多的算法開始注重于保護(hù)待拼接圖像的拍攝視角,從而得到視覺效果更加良好的拼接圖像。基于網(wǎng)格變形的拼接算法不斷被提出,Chang等[10]利用直紋面方程,使經(jīng)過相似變換的非重疊區(qū)域平滑地過渡到重疊區(qū)域,解決了非重疊區(qū)域的投影失真問題。Lin等[11]采用插值法和自適應(yīng)確定旋轉(zhuǎn)角度的方法,同樣結(jié)合相似變換減少非重疊區(qū)域的投影失真,獲得觀感更加自然的拼接圖像。
但過度地注重于保護(hù)原始拍攝視角會(huì)破壞圖像過渡區(qū)域的幾何結(jié)構(gòu),尤其是直線結(jié)構(gòu)。因此,Li等[12]提出QH(Quasi-Homography warp)圖像拼接算法,沿著不變水平線對經(jīng)過透視變換后的待拼接圖像進(jìn)行合理的橫向尺寸壓縮,既減少了非重疊區(qū)域的投影失真,也避免了過渡區(qū)域的幾何結(jié)構(gòu)遭到破壞。值得注意的是,QH算法僅減少了主要的橫向投影失真,而忽略了次要的縱向投影失真。對于圖1(c)所示圖像,該算法會(huì)造成非重疊區(qū)域存在斜線的彎曲化問題。
圖1 QH算法拼接結(jié)果與原圖對比Fig.1 Comparison between the stitching result of QH algorithm and the original image
因此,本文提出一種基于非線性約束的圖像拼接算法,該約束條件能抑制圖像經(jīng)透視變換后的縱向拉伸畸變。NLQH(NonLinear constraint based QH)圖像拼接算法主要是結(jié)合待拼接圖像重疊區(qū)域與非重疊區(qū)域的分界線信息和不變水平線信息建立非線性約束方程,實(shí)現(xiàn)對待拼接圖像的縱向尺寸壓縮,使拼接圖像具有更加良好的視覺效果。
QH算法分析單應(yīng)矩陣投影變換的優(yōu)缺點(diǎn),將不變水平線上非線性遞增的拉伸度限定為定值,抑制了非重疊區(qū)域圖像內(nèi)容的形狀失真,同時(shí)避免了過渡區(qū)域直線結(jié)構(gòu)的彎曲化。QH算法主要分為如下步驟。
設(shè)一條經(jīng)過像素點(diǎn)(x,y)的直線斜率為k,則經(jīng)過單應(yīng)變換后該直線斜率S(x,y,k)可表示為:
其中:ux、uy、vx、vy表示函數(shù)u與函數(shù)v的偏導(dǎo)數(shù)。S(x,y,0)與S(x,y,∞)分別表示經(jīng)過像素點(diǎn)(x,y)的水平線與垂直線通過單應(yīng)變換后所得直線的斜率;LF(y,H)是關(guān)于y的分式線性函數(shù),而LF(x,H)是關(guān)于x的分式線性函數(shù)。
首先在基準(zhǔn)圖像與待拼接圖像的重疊區(qū)域上找到最佳縫合線[7];再貼近縫合線找到重疊區(qū)與非重疊區(qū)的垂直分界線l′2:u(xp,y)=p(如圖2(b)中縱向標(biāo)記線所示),并結(jié)合式(1)可得變換前的分界線(如圖2(a)中斜線所示)為l2:x=xp;然后求得直線l2與l1的交點(diǎn)坐標(biāo)為(xh,yh);為了抑制圖像中物體形狀的橫向畸變,最后利用u(x,yh)在x=xh處的一次泰勒展開式近似表示不變水平線上非重疊區(qū)的橫坐標(biāo)uqh(x,yh)與x之間的變換關(guān)系:
其中,u′(xh,yh)表示函數(shù)u(x,yh)在x=xh處的一階導(dǎo)數(shù)。該變換關(guān)系抑制了圖像非重疊區(qū)的橫向拉伸畸變(如圖2(c)所示)。
圖2 單應(yīng)變換與QH算法的圖像變形對比Fig.2 Image deformation comparison between homography warp and QH algorithm
在(x,y)已知的情況下,圖像非重疊區(qū)經(jīng)QH算法變換后的像素點(diǎn)坐標(biāo)Mqh(uqh(x,y),vqh(x,y))可通過式(6)以直線相交的方式求解:
單應(yīng)變換應(yīng)用于圖像拼接存在兩個(gè)假設(shè)[13]:一是圖像由攝像機(jī)通過純旋轉(zhuǎn)運(yùn)動(dòng)拍攝獲得;二是場景幾何結(jié)構(gòu)幾乎處于同一個(gè)平面。實(shí)際應(yīng)用中,兩個(gè)條件難以滿足,則采用單應(yīng)變換拼接圖像會(huì)不可避免地造成非重疊區(qū)域存在投影失真,即橫向和縱向拉伸畸變。
而QH算法存在如下問題:僅僅對圖像非重疊區(qū)域進(jìn)行整體上的橫向壓縮變換是不合理的,圖像垂直方向的非線性拉伸也會(huì)導(dǎo)致圖像部分內(nèi)容形狀發(fā)生畸變。尤其是圖像中的斜線結(jié)構(gòu)向偏離不變水平線的方向彎曲。
為了分析QH算法導(dǎo)致斜線彎折化的問題,本文通過簡單的斜線二段化變形的方式說明前后兩段斜線斜率不一致的根本原因。
原圖中共線的點(diǎn)經(jīng)過單應(yīng)變換后仍然是共線的,但原圖中等距分布的點(diǎn)經(jīng)過單應(yīng)變換后存在拉伸分布的現(xiàn)象(如圖3(a)所示)。因此dx1 圖3 斜線二段化變形示意圖Fig.3 Schematic diagram of two-stage deformation of oblique line QH算法僅對圖像進(jìn)行橫向壓縮,依據(jù)其線性約束條件式(5),可知dx′1=dx′2,但仍有dy1 顯示在圖像中的斜線結(jié)構(gòu)經(jīng)過QH算法變換后會(huì)向偏離不變水平線的方向彎曲(如圖1(a)所示);同時(shí)也會(huì)導(dǎo)致非重疊區(qū)域的幾何結(jié)構(gòu)存在縱向投影失真。 針對縱向投影失真的問題,本文建立約束條件來實(shí)現(xiàn)圖像非重疊區(qū)域的縱向壓縮變換。一次線性約束對圖像進(jìn)行縱向壓縮會(huì)導(dǎo)致分界線兩側(cè)斜率不一致(如圖4所示),不滿足平滑過渡的條件,會(huì)使圖像變形后出現(xiàn)明顯的折疊線;QH算法采用像素級(jí)的坐標(biāo)計(jì)算方式,計(jì)算復(fù)雜度較高,本文不宜選取復(fù)雜的非線性模型。 因此,本文提出只需求解三個(gè)參數(shù)的二次拋物約束來平滑地過渡分界線兩側(cè)區(qū)域,同時(shí)也能對圖像縱向尺寸進(jìn)行非線性壓縮。 求解拋物線參數(shù)m1、m2和m3需要三個(gè)條件,結(jié)合平滑過渡的特性,總結(jié)如下三點(diǎn): 1)令 拋 物 線 經(jīng) 過 分 界 線l′2:u(xp,y)=p上 的 點(diǎn)Mp(u(xp,y),v(xp,y)),該點(diǎn)的坐標(biāo)滿足方程: 2)同時(shí),拋物線與QH變換中的橫向分布線相切于點(diǎn)Mp(如圖4所示),該點(diǎn)的坐標(biāo)也滿足方程: 圖4 線性約束與拋物約束的對比Fig.4 Comparison betweenlinear constraint and parabolic constraint 3)為了控制圖像縱向壓縮程度,令: 考慮到經(jīng)過透視變換后,圖像中距離不變水平線越遠(yuǎn)的目標(biāo)具有更嚴(yán)重的投影失真問題。因此本文中確定參數(shù)m1的方式,對于同一幅待拼接圖像,dw是不變的;在計(jì)算新坐標(biāo)時(shí),使距離不變水平線越遠(yuǎn)的區(qū)域具有更大的m1,從而拋物線開口更小,對圖像縱向壓縮程度更大。 聯(lián)立式(8)、(9)、(10)求解,可得參數(shù)m1、m2和m3由y、λ、p與H的元素所表示。 結(jié)合QH算法對圖像的橫向變換特性,本文僅需將式(6)進(jìn)行改進(jìn),將橫向的直線約束方程替換成拋物線方程。因此,對于待拼接圖像的非重疊區(qū)域,原圖像素點(diǎn)(x,y)與變換后的點(diǎn)Mnl(unl(x,y),vnl(x,y))之間的關(guān)系可表示為: 由式(11)可知點(diǎn)Mnl為橫向分布的拋物線與縱向分布線的交點(diǎn)。對于待拼接圖像的重疊區(qū)域,點(diǎn)與點(diǎn)的坐標(biāo)變換仍如式(1)所示。因此,本文利用分段變換來對整個(gè)待拼接圖像進(jìn)行紋理映射。 從圖4可以看出,本文方法既能平滑過渡分界線兩側(cè)區(qū)域,也能自適應(yīng)地抑制圖像非重疊區(qū)域的縱向拉伸畸變。 QH算法采用像素級(jí)的坐標(biāo)計(jì)算方式,相較于式(1)的映射方式,式(6)的計(jì)算復(fù)雜度較高。因此,本文將待拼接原圖網(wǎng)格化,利用式(11)計(jì)算非重疊區(qū)域的網(wǎng)格點(diǎn)新坐標(biāo),并結(jié)合APAP(As-Projective-As-Possible image stitching with moving DLT)算法[6]為每個(gè)網(wǎng)格區(qū)域計(jì)算特定的單應(yīng)變換矩陣。該方法既能降低計(jì)算復(fù)雜度,也能提高重疊區(qū)域的配準(zhǔn)精度。 若將原圖劃分為m×n的網(wǎng)格,則圖像的網(wǎng)格頂點(diǎn)表示為vi,j,其中i∈{1,2,…,m},j∈{1,2,…,n}。在文獻(xiàn)[6]中,所有網(wǎng)格點(diǎn)都具有不同的單應(yīng)變換矩陣,這些變換矩陣組成Hap。對于圖像重疊區(qū)域的網(wǎng)格點(diǎn),依據(jù)Hap進(jìn)行坐標(biāo)變換;對于圖像非重疊區(qū)域的網(wǎng)格點(diǎn),本文將式(8)~(11)中全局單應(yīng)矩陣H的元素替換成Hap的元素,利用所得變換關(guān)系計(jì)算網(wǎng)格點(diǎn)的新坐標(biāo)。 從而,以vi,j為左上頂點(diǎn)的四邊形網(wǎng)格的其他三個(gè)頂點(diǎn)vi+1,j、vi,j+1和vi+1,j+1分別與v′i+1,j、v′i,j+1和v′i+1,j+1相對應(yīng)(如圖5所示)。 圖5 格點(diǎn)映射示意圖Fig.5 Schematic diagram of lattice points mapping 接下來,利用八點(diǎn)算法[15]計(jì)算出四邊形網(wǎng)格的單應(yīng)變換矩陣Hi,j。每個(gè)網(wǎng)格對應(yīng)不同的變換矩陣,所有變換矩陣組成本文最終的變換Hapnl,用于對整幅圖像進(jìn)行紋理映射。 綜上所述,NLQH算法的步驟如下: 步驟1 輸入?yún)⒖紙D與待拼接原圖; 步驟2 檢測SIFT特征[16]并利用RANSAC篩選匹配特征點(diǎn)對; 步驟3 計(jì)算Hap,獲取重疊區(qū)域并遍歷重疊區(qū)域得到最佳縫合線; 步驟4 確定分界線并計(jì)算待拼接原圖網(wǎng)格點(diǎn)的新坐標(biāo); 步驟5 計(jì)算Hapnl并對待拼接原圖進(jìn)行紋理映射; 步驟6 基于最佳縫合線進(jìn)行圖像融合。 此外,圖6利用兩幅圖像展示了橫向拼接的具體流程。 圖6 NLQH算法流程Fig.6 Flow of NLQH algorithm 本文實(shí)驗(yàn)階段使用的硬件設(shè)備為神舟筆記本電腦,CPU為Intel Core i72.6 GHz并配備有8 GB運(yùn)行內(nèi)存。此外,所使用的軟件為Matlab 2014版本,而SIFT特征的檢測利用了VLFeat工具箱。實(shí)驗(yàn)結(jié)果顯示的原始圖像是筆者手持智能手機(jī)在校園各處通過不同視角拍攝所得。實(shí)驗(yàn)過程中,圖像尺寸均為1 200像素×1 600像素,尺寸為文獻(xiàn)[12]中實(shí)驗(yàn)圖像的2倍。此外,以像素為單位,設(shè)定網(wǎng)格大小為60×60。 在參數(shù)給定的情況下,采用雙線性插值的方法計(jì)算經(jīng)Hapnl變換后的圖像像素值。對于重疊區(qū)域,本文利用最佳縫合線融合兩幅圖像,并在擴(kuò)展的范圍內(nèi)顯示拼接后的圖像。最后,圖1(b)、(c)通過本文算法的拼接結(jié)果如圖7(c)所示。 圖7 不同λ取值下的拼接結(jié)果Fig.7 Stitching results with differentλvalues 3.2.1 運(yùn)算效率對比 本文算法中獲取匹配點(diǎn)對以及圖像融合的方法與QH算法一致,主要耗時(shí)差異在坐標(biāo)變換的步驟上。在現(xiàn)有硬件設(shè)備和軟件配置基礎(chǔ)下,本文選取4組圖像(每組兩幅圖像,分別為參考圖與待拼接圖),在不同尺寸條件下,統(tǒng)計(jì)了QH算法、NLQH算法以及單應(yīng)變換對待拼接原圖進(jìn)行紋理映射的耗時(shí)(如表1所示)。 表1 不同算法的變換耗時(shí)對比Tab.1 Comparison of transformation timeof different algorithms 對比表1中數(shù)據(jù),可以看出,對于同一幅圖像,單應(yīng)變換在計(jì)算上有明顯的速度優(yōu)勢。而QH算法雖然在圖像尺寸為600像素×800像素時(shí)計(jì)算效率要高于NLQH算法,但是當(dāng)圖像尺寸擴(kuò)大3倍或8倍時(shí),計(jì)算耗時(shí)呈線性增長趨勢。除網(wǎng)格點(diǎn)外,NLQH算法的像素坐標(biāo)映射方式與單應(yīng)變換一致。因此,當(dāng)圖像尺寸呈倍數(shù)增長時(shí),本文算法計(jì)算耗時(shí)的變化趨于穩(wěn)定,波動(dòng)范圍在4~7 s,非重疊區(qū)域大小為主要影響因素。此外,當(dāng)圖像尺寸為1 200像素×1 600像素時(shí),本文算法拼接效率相較于QH算法會(huì)有顯著的提升。 3.2.2 拼接結(jié)果對比 筆者收集車行道圖像進(jìn)行拼接實(shí)驗(yàn),并將本文算法與QH算 法 以 及SPHP(Shape-Preserving Half-Projective warps)[10]算法進(jìn)行了實(shí)驗(yàn)結(jié)果對比。 對于重疊區(qū)域(如圖8中標(biāo)號(hào)1所在處),SPHP算法導(dǎo)致直線結(jié)構(gòu)彎曲,本文算法與QH算法則保護(hù)了直接結(jié)構(gòu)未被破壞。 對于待拼接圖的非重疊區(qū)域(如圖8中標(biāo)號(hào)2和3所在處):QH算法既使得斜線彎曲,還使得圖像中部分建筑存在縱向拉伸畸變的問題;SPHP算法則完整地保護(hù)了非重疊區(qū)域的拍攝視角,使該區(qū)域不存在任何畸變問題;本文算法在非重疊區(qū)域上的拼接效果更接近于SPHP算法,既保護(hù)了斜線結(jié)構(gòu),在一定程度上還矯正了部分建筑的縱向拉伸畸變。 圖8 車行道圖像拼接結(jié)果對比Fig.8 Comparison of stitching resultsof roadway images 綜上所述,QH算法雖然抑制了非重疊區(qū)域的橫向拉伸畸變,但本文所提出的NLQH算法在此基礎(chǔ)之上進(jìn)一步減少了圖像中的縱向投影失真,使最終的拼接圖像具有更好的視覺效果。 圖9選取了校園內(nèi)其他場景進(jìn)行圖像拼接實(shí)驗(yàn),通過拼接結(jié)果對比,足以表明NLQH算法能更好地改善圖像拼接的視覺效果。 圖9 其他拼接結(jié)果對比Fig.9 Comparison of other imagesstitching results 3.2.3 偏離程度的度量與對比 圖10 采樣點(diǎn)示意圖Fig.10 Schematic diagram of sampling points 圖11 平均偏離程度條形統(tǒng)計(jì)圖Fig.11 Bar statistical chart of average deviation degree 本文提出了基于非線性約束的方法對圖像非重疊區(qū)域進(jìn)行縱向壓縮。相較于QH算法,本文所提出的算法使拼接圖像減少了投影失真,獲得了更加良好的視覺效果。同時(shí),考慮到QH算法在拼接尺寸較大的圖像時(shí)存在耗時(shí)較多的問題,本文利用網(wǎng)格優(yōu)化的方法提高了拼接效率。然而,在不依賴直線檢測算法的前提下,QH算法和NLQH算法的拼接結(jié)果均存在全局直線結(jié)構(gòu)(橫跨參考圖與待拼接圖的直線結(jié)構(gòu))彎曲化的問題。因此,在未來的研究中,筆者將更著重于結(jié)合圖像內(nèi)容的深度信息去進(jìn)行拼接算法的改進(jìn)。2.2 非線性約束的建立與參數(shù)求解
2.3 像素坐標(biāo)映射
2.4 算法優(yōu)化與算法流程
3 實(shí)驗(yàn)與結(jié)果分析
3.1 參數(shù)選定
3.2 算法效果對比
4 結(jié)語