李 婕,周 順
(湖北工業(yè)大學電氣與電子工程學院,武漢 430068)
正射影像拼接技術是攝影測量和遙感領域中的重要研究課題之一,但用于生成正射影像的數字地形模型不包含明顯的地面物體,例如建筑物等,若拼接線穿過這些區(qū)域,則拼接線區(qū)域會出現明顯的鬼影。因此,如何從重疊區(qū)域中檢測出明顯的地物信息,避免拼接線穿過,是創(chuàng)建無縫大規(guī)模文檔對象模型(Document Object Model,DOM)的關鍵問題。
國內外研究人員對圖像拼接過程中的最優(yōu)拼接線搜索方法有較為深入的研究,所提出的拼接線檢測方法[1]主要分為以下2 個步驟:構建成本代價函數[1-3],如文獻[4-5]采用待拼接影像重疊區(qū)域的顏色、邊緣、紋理等信息來定義該函數;利用snake 模型[2]、Dijkstra[3]、動態(tài)規(guī)劃[4,6-7]、圖割[5,8]等優(yōu)化算法獲得最優(yōu)拼接線。文獻[2]提出一種利用顏色信息和紋理相似性構成的成本函數,采用snake 分層策略自動檢測拼接線方法。CHON 等[3]利用歸一化互相關評估像素間的差異,使用Dijkstra 算法獲得最優(yōu)拼接線。LI 等[9]定義了一種邊緣增強的成本函數,采用圖割優(yōu)化獲得最優(yōu)拼接線。上述方法利用像素差異信息來指導最佳拼接線的檢測取得了較好的效果。但由于成本函數只考慮了影像像素信息,拼接線優(yōu)化時易穿過弱紋理區(qū)域的建筑物墻面、屋頂等區(qū)域,會形成明顯的鬼影現象。
為解決上述問題,基于輔助數據的方法逐漸被關注。MA 等[10]提出借助點云信息,將明顯地物標記為障礙物,使用A*算法使拼接線繞過這些區(qū)域。文獻[11]采用道路矢量的方法確保拼接線沿著街道中心線。文獻[12]提出從數字地面模型(Digital Surface Model,DSM)中提取海拔信息,并在低海拔地區(qū)引導拼接線檢測。文獻[13]關注矢量建筑物之間的中心線,基于矢量建筑物地圖生成候選拼接區(qū)域,再通過最小化視覺過渡得到精細化拼接線。文獻[14]提出基于DSM 的邊緣圖來細化初始接縫線的方法。文獻[15]基于DSM 結合閾值分割、數學形態(tài)學和跳躍點搜索檢測最佳拼接線。文獻[16]利用色差、梯度、及從DSM 中獲得的物體高度進行接縫線搜索。這些基于輔助數據的方法能獲得高質量的拼接線,但均需要額外的輔助信息。
因此,研究人員開展了基于對象的最優(yōu)拼接線搜索方法研究。例如PAN 等[17]提出利用圖像分割結果確定拼接線是否可以通過區(qū)域,再將Dijkstra 算法用于拼接線的像素級檢測的方法。文獻[18]提出對地物進行分類,并對每個類別分配不同的權重,在此基礎上優(yōu)化成本函數獲得最佳拼接線。文獻[19-20]采用半全局匹配(Semi-Global Matching,SGM)方法獲得深度圖,從而獲得非地面區(qū)域的分割結果,指導拼接線搜索。文獻[21]引入卷積神經網絡(Convolutional Neural Network,CNN)得到語義分割結果,并以此作為約束利用圖割優(yōu)化方法獲得最優(yōu)拼接線。文獻[22]采用一種基于梯度的超像素最優(yōu)拼接線搜索方法。文獻[23]基于前景分割結果得到最優(yōu)接縫線,在精度和效率上都有所提高。YUAN等[24]構建了一個超像素能量函數,該函數融合了色差、梯度差和紋理復雜度信息獲得位于高度相似的連續(xù)區(qū)域中的最佳拼接線。以上這些拼接方法的基本思想是借助分割、深度圖等對象信息,先確定拼接線路徑的區(qū)域,再進行拼接線搜索。與基于像素的方法相比,基于對象的方法提高了接縫線的質量,但由于節(jié)點數量眾多,優(yōu)化效率低。
光流作為傳統的視覺任務[25],是由觀察者和場景之間的相對運動引起影像中目標、邊緣等的相對運動。大光流對應于影像間的變化區(qū)域,可用于檢測正射影像間明顯地面區(qū)域。本文提出一種基于光流的影像拼接方法,以有效避免接縫穿過明顯的地面物體。通過采用從粗到細的接縫線優(yōu)化策略,提高接縫線檢測的效率。此外,在超像素級別和像素級別分別進行優(yōu)化,以獲得最優(yōu)的接縫線。
本節(jié)將詳細介紹基于光流的障礙物區(qū)域檢測方法以及由粗到精的接縫線搜索策略。在本文實驗中,僅考慮2 張影像的拼接。如圖1 所示,本文所提方法的整體框架由4 個部分組成,流程如下:1)使用正射影像的幾何信息確定相鄰影像的重疊區(qū)域;2)采用超像素分割和密集光流的方法獲得大光流區(qū)域,并以此區(qū)分出明顯地物,例如建筑物等;3)結合地物信息和歸一化相關的成本函數,采用超像素和像素級的Dijkstra 算法,由粗到精地獲得最優(yōu)接縫線;4)將輸入的兩幅正射影像沿拼接線縫合成一幅影像。
圖1 本文方法整體框架Fig.1 Overall framework of the method in this paper
由于生成正射影像的數字地形模型中沒有包含明顯地物信息,導致在不同的正射影像中,不同高度的地面物體會產生相對位移。經過實驗發(fā)現,具有大位移的對象如建筑物等,對應較高的光流值,可用于檢測障礙物區(qū)域。
近幾年,光流算法有了較大的進展。如邊緣保持插值光流法(EpicFlow)[26]和魯棒插值法(RicFlow)[27]可以有效地獲得圖像對的像素位移。RicFlow 在遮擋、大位移情況下可獲得更好的性能,該方法通過構建一個超像素圖模型,使用傳播優(yōu)化機制既保證了光流運算效率也提高了計算精度。因此本文采用此方法獲取重疊區(qū)域的密集光流。首先,給定圖像對I1、I2和相應的匹配集M,并使用線性迭代聚類[28](Simple Linear Iterative Clustering,SLIC)算法從I2生成超像素{Sk},從匹配集M中求出初始光流。然后,利用RicFlow 算法及加權最小二乘法確定最終密集的光流模型。本文匹配集M通過CPM 方法[29]獲得,該方法被證明比其他類似的匹配方法如深度匹配[30]、快速引導的全局插值匹配(FGI)[31]等更有效。
圖2(a)和圖2(b)分別為待拼接正射影像及紅色方框放大后的子圖像(彩色效果見《計算機工程》官網HTML版),白色虛線框表示重疊區(qū)域。從放大的子圖像中可以看出明顯地物在不同影像上的差異。如果拼接線穿過這些目標,則會產生明顯的接縫鬼影現象。圖2(c)給出了左影像的超像素分割結果,采用RicFlow 獲得的密集光流如圖2(d)所示,反映了相鄰影像間的位移,較高的灰度值表示較大的光流,本文將此區(qū)域標記為障礙物區(qū),即拼接線不能穿過區(qū)域。相反,深色區(qū)域表示拼接線可通過區(qū)域,例如道路、停車場和草地。從圖2(e)可以看出,密集光流方法可以檢測出大多數地物區(qū)域。
圖2 地物檢測結果Fig.2 Object detection results
如果僅利用光流便可精確檢測到明顯的地物,就只需使用光流結果便可指導獲得最優(yōu)拼接線。但由于光流生成過程中不可避免的匹配噪聲,因此很難準確地描述物體邊界,尤其是小目標物體如小型、靜態(tài)汽車等。因此,最終獲取的接縫線存在不平滑、易穿過小物體的現象,如圖3 所示穿過汽車、柵欄等。
圖3 基于光流的拼接線檢測結果Fig.3 Splicing line detection results based on optical flow
歸一化互相關(NCC)算法[3]是描述像素差異的傳統方法。NCC 的值表示兩像素間的差異。在本文中,光流信息和NCC 均被用來指導接縫線搜索過程。假設通過光流獲得了明顯的物體集合{O},代價函數的表示如式(1)所示:
其中:x表示I2中的像素點;NCC(x)表示待拼接影像重疊區(qū)域的兩像素的相異性。當點x具有有效的光流時,賦于一較大的常數C。該常數值用于擴大障礙物區(qū)域與非障礙物區(qū)域的差異。
本文采用的匹配代價圖如圖4 所示,成本函數中的小目標和邊緣凸顯出來,視覺上顯得更加合理。
圖4 匹配代價圖Fig.4 Matching cost map
在給定拼接線起點和終點的情況下,檢測拼接線的常用方法是在構建的成本圖中找一條成本最小的路徑,但待拼接的重疊區(qū)域中的像素數量巨大,影響優(yōu)化效率。為改善此問題,本文引入一種簡單有效的方案來降低接縫檢測中的計算成本。采用Dijkstra 的算法在已獲得的超像素區(qū)域中找到最短的超像素路徑。超像素成本函數定義為:
其中:C(Si)代表超像素Si的成本代價;|Si|表示超像素塊Si中的像素個數。
Dijkstra 算法是一種全局優(yōu)化方法,其通過在每個節(jié)點上進行最少的本地操作來確定成本空間上的最佳路徑,該算法用于確定超像素級的最短成本路徑。極大減少優(yōu)化節(jié)點的數量,從而提高了路徑檢測效率。在獲得超像素最優(yōu)路徑后,再次使用Dijkstra 算法在像素級別上精細化拼接線。圖5 所示為拼接線檢測結果(彩色效果見《計算機工程》官網HTML 版),紫色區(qū)域為超像素級的最佳拼接區(qū)域。盡管在超像素級別檢測到的粗接縫區(qū)域可以避免與大多數明顯地物信息相交,但拼接區(qū)域并不平滑,并且穿過了很多地面小目標。
圖5 由粗到精策略的拼接視覺結果Fig.5 Splicing visual result of coarse to fine strategy
在精細化拼接線前,對拼接線區(qū)域進行擴展,以確保拼接線的平滑度。本文實驗過程中采用膨脹的方法建立一個擴展緩沖區(qū)U。圖5 中的藍色區(qū)域表示擴展區(qū)域,黃線表示擴展區(qū)域中的精細化后的拼接線(彩色效果見《計算機工程》官網HTML 版)。此時的拼接線光滑度高,且避免穿過了小目標。在此基礎上,將待拼接的2 張正射影像沿著最佳拼接線合成1 幅影像。圖6 展示了拼接后的效果(彩色效果見《計算機工程》官網HTML 版)。
圖6 本文方法拼接后的結果Fig.6 The mosaicking result of the method in this paper
本節(jié)將用實驗來評估所提出方法的有效性。所有實驗均在Core i7 3.4 GHz 和8 GB RAM 在CPU 上利用C ++實現。表1 列出了本文實驗采用的3 個數據集的詳細信息。
表1 實驗數據集Table 1 Experimental data set
實驗影像已根據數字地形模型對齊。文獻[32]指出:主觀上理想的拼接線應避免穿過明顯的地面物體,如建造或移動汽車,應該穿過質地平滑的區(qū)域,例如道路、河流、草叢或空地。同時,為更好地評估檢測到的拼接線質量,應該具有一個客觀、公正、定量的評價指標。本文應用結構相似性(Structural Similarity,SSIM)指數[19]來定量地評估。根據文獻[19]的描述,SSIM 的值越高,表示所檢測到的拼接線質量越好,SSIM 的最大值為1。
本文實驗由3 部分組成:第1 部分討論實驗的參數設置;第2 部分使用數據集1 中的正射影像驗證了本文方法的有效性;第3 部分將所提方法從視覺和客觀指標上與傳統方法、最新方法、商業(yè)軟件進行比較。
為探究超像素個數的選擇對拼接線檢測結果的影響,本文在實驗中選取不同的超像素個數M,通過SSIM評價指標衡量拼接結果。
如表1 所示,由于正射影像分辨率較大,本文在處理重疊區(qū)域的光流時,對重疊區(qū)進行縮小處理。圖7 所示為影像縮放因子設置為0.5 和0.25 時拼接結果質量的變化。從圖7 可知,隨著超像素個數的增加,SSIM 值下降,運算時間相應減少。這說明了超像素分割時,選擇的像素數量過多,會降低最終的拼接質量,但運算效率得到了提高。此外,縮放因子設置的越小,計算時間減少,但拼接質量也降低。這說明了重疊區(qū)域的縮放比例影響了光流的獲取精度,進而降低了地物區(qū)域提取的準確性。考慮本文方法的運算效率和精度,后面的實驗過程中,將超像素大小M設置為100,重疊區(qū)域按比例因子0.5 進行縮小處理。
圖7 超像素個數和縮放尺度的評價結果Fig.7 Evaluation results using different mean superpixel sizes and scale factors
圖8展示了使用和不使用光流情況下的拼接結果。從視覺結果來看,2 種算法的拼接線走向相同,并均避免穿過明顯的建筑物和車輛。但對于特定的局部區(qū)域,如圖8 中箭頭所示,檢測結果有所不同(彩色效果見《計算機工程》官網HTML 版)。在圖8(a)中,由于街道樹木、車輛等小目標的影響,拼接線選擇穿過建筑物邊緣,導致最終的拼接效果中出現了可見的不連續(xù)性。但如圖8(b)所示,由于本文采用了光流檢測,剔除了建筑物區(qū)域,因此拼接線選擇經過平坦的街道。
圖8 拼接視覺結果Fig.8 Visual splicing results
另外,為證明基于光流的障礙物檢測方法的有效性,本文對2 種方法生成的拼接結果進行客觀評估。對于分辨率為6 040×2 856 的重疊區(qū)域,光流方法的拼接結果SSIM 值為0.893 1,比非光流方法獲得的檢測結果0.863 9 高3%。相應地,因為需要在接縫線檢測之前計算光流,運算時間從25.66 s 增加到43.07 s。
在超像素級別檢測到接縫線后,本文采用由粗到細的精細化策略,在像素級上進行進一步優(yōu)化。通過構造1 個以粗糙接縫線為中心,采用膨脹操作的緩沖區(qū),該方法需要3.48 s 來獲得緩沖區(qū)域。本文對不使用由粗到細的精細化策略和使用此策略時的縫合結果進行對比,視覺結果如圖9所示(彩色效果見《計算機工程》官網HTML 版)。從圖9(a)可以看到接縫線穿過了地面的小目標。圖9(b)為考慮到粗略方案后,拼接線按預期的方式環(huán)繞了汽車,并選擇穿越附近的平坦區(qū)域的場景,SSIM 值 從0.898 5 增加到 了0.909 9,質量評價指標提高了1%。
圖9 拼接的視覺結果對比Fig.9 Comparison of visual splicing results
為驗證所提方法的有效性,將本文方法與領域內的最新方法以及傳統Dijkstra 算法進行對比。其中,最新方法采用文獻[23]提出的利用圖割優(yōu)化獲得最佳拼接線的方法;傳統Dijkstra 算法采用文獻[3]提出的利用NCC 構建能量函數,并限制最大差異程度的方法。此外,本文還與目前使用廣泛的正射影像拼接軟件OrthoVista 進行對比,該軟件可從其官方網站獲得。不同方法在3 個數據集的拼接結果如圖10~圖12 所示。其中,白色虛線框表示重疊區(qū)域,拼接線用黃色線段表示,彩色矩形及其相應的放大區(qū)域展示了局部穿過建筑物的情況(彩色效果見《計算機工程官網HTML 版》)。
圖10 在數據集1 上的拼接線檢測結果Fig.10 Seamline detection results on data set 1
圖11 數據集2 上的拼接線檢測結果Fig.11 Seamline detection results on data set 2
圖12 在數據集3 上的拼接線檢測結果Fig.12 Seamline detection results on data set 3
從視覺效果上看,OrthoVista 軟件在3 個不同數據集中穿過的建筑物最多,尤其在建筑密集的數據集2。與OrthoVista 相比,文獻[3]的方法、文獻[23]方法和本文所提方法通過的目標較少,但文獻[3]方法選擇了較長且不光滑的接縫線,導致運算時間較長。本文所提方法成功繞過了明顯的目標,盡管也跨越了幾棟建筑物,但由于這些建筑物位于起點或終點區(qū)域,本文方法未對起點和終點區(qū)域進行篩選,因此很難繞開這些建筑物。
除從主觀視覺比較外,本文對所有方法進行了定量評估,結果如表2 所示。由表2 可知,在所有實驗中,本文的接縫線檢測方法具有最高的SSIM 值,精度比OrthoVista 商業(yè)軟件提高5%以上、比文獻[23]的方法提高約3%、比文獻[3]的方法提高約1%,如表2的第4列所示。在運算效率上,比文獻[3]方法提高了1 倍、與目前運算效率高的文獻[23]的方法保持在1 個數量級別,如表2 的最后1 列所示。
表2 不同方法的對比結果Table 2 Comparison results with different method
本文提出一種基于光流的從粗到細的正射影像圖像拼接方法。通過采用超像素的RicFlow 密集光流算法來區(qū)分明顯的地物信息,并結合光流和NCC的成本函數來約束接縫的檢測過程。在此基礎上,使用Dijkstra 算法在超像素級別和像素級別上分別進行優(yōu)化,獲得最優(yōu)的接縫線,實現兩幅正射影像的拼接。實驗結果表明,本文所提方法優(yōu)于圖割方法、Dijkstra 方法和商業(yè)軟件OrthoVista。但本文實驗僅考慮了兩幅影像的拼接,下一步將對多幅影像拼接、光照環(huán)境變化等情況下的魯棒性及拼接質量這2 個方面對算法進行優(yōu)化,以獲得更高質量的拼接效果。