李中華, 喻鈞, 胡志毅, 康秦瑀, 高守義, 廉志超, 肖鋒
(1.西安工業(yè)大學 計算機科學與工程學院, 陜西 西安 710021; 2.陸軍研究院, 北京 100012)
數碼迷彩作為近年來發(fā)展迅速的一種迷彩樣式,在軍事偽裝領域獲得了廣泛運用。數碼迷彩利用空間混色原理和斑塊特性,使得偽裝目標與背景之間的邊界更為破碎、模糊,偽裝效果較傳統的迷彩圖案更優(yōu)[1]。通常,根據偽裝目標所處的背景環(huán)境生成的數碼迷彩圖案是一幅固定大小的二維圖像[2-3],噴涂于實際的偽裝目標上時,各平面之間的銜接處容易因為顏色過渡不連續(xù)出現顯著的拼接痕跡,以致形成新的目標暴露特征,增加了目標的顯著性,進而導致迷彩偽裝效果大打折扣[4]。
當前主流的圖像拼接算法是基于特征點的拼接[5-10]。該算法依照特征點匹配的結果計算兩幅圖像的重疊區(qū)域,然后獲得重疊區(qū)域的最佳縫合線[5,7-10],最后運用圖像融合技術完成拼接。基于特征點的圖像配準可能導致待拼接圖的旋轉,并且拼接后的圖像尺寸難以確定。而數碼迷彩圖案對旋轉敏感,且拼接尺寸固定,不利于特征點的配準,同時數碼迷彩的顏色單一,不利于圖像融合。這導致難以直接將傳統的拼接算法應用于數碼迷彩的拼接上。
由于三維偽裝目標的形狀各異,文獻[11]提出一種基于圓柱體的數碼迷彩拼接方案。該方法通過添加多列過渡迷彩,讓兩幅數碼迷彩圖案在拼接處能夠平滑過渡,但會增加拼接后的圖案寬度(或高度),并且難以在顯著接縫處形成過渡自然的區(qū)域。
為了增強數碼迷彩拼接方法的通用性,本文提出一種結合紋理合成[12-16]與最佳縫合線[5,7-10]的數碼迷彩拼接方法。紋理合成是利用給定的樣本紋理,生成大范圍的紋理圖案,使得生成的紋理圖案在局部上具有樣本的紋理特征,整體上又呈現出一定的隨機性。通過尋找最優(yōu)路徑得到的縫合線,能夠保證縫合線兩側的像素差異最小,使得拼接處的圖案過渡更為自然。
雖然運用紋理合成技術可以得到一幅足夠大的二維圖案,直接作為拼接圖案,但是紋理合成的隨機性可能會產生新的顯著接縫(因為有一側的整個圖案都是合成出來的,可能和原始圖案完全不同;假如說合成出來的部分在拼接圖的左邊,無法保證整個拼接圖的左側能夠和另一個面的圖案平滑過渡)。本文運用紋理合成技術,人為創(chuàng)造了數碼迷彩圖案的偽重疊區(qū)域,避免了特征點配準所帶來的圖像旋轉和尺寸變化問題,通過尋找重疊區(qū)域的最佳縫合線完成數碼迷彩圖案的拼接。
紋理合成技術是可以解決紋理映射中存在的接縫走樣等問題。目前紋理合成方法可分為兩類:一類為過程紋理合成,另一類為基于樣圖的紋理合成[12-16]。
1)過程紋理合成通過對物理生成過程的仿真直接在曲面上生成紋理,如毛發(fā)、云霧、木紋等,從而避免了紋理映射帶來的失真。該方法可以獲得非常逼真的紋理,但對每一種新紋理,需要反復調整參數并測試,非常不便,有的甚至無法得到有效的參數。
2)基于樣圖的紋理合成是在給定的小區(qū)域紋理樣本中,按照目標表面的幾何形狀,拼合生成整個曲面的紋理,它在視覺上是相似而連續(xù)的。該方法既克服了傳統紋理映射的缺點,又可以避免過程紋理合成中調整參數的繁瑣,因而受到越來越多的關注,成為計算機圖形學、計算機視覺和圖像處理領域的研究熱點之一。
基于特征點匹配的圖像拼接算法在早期通常用加權融合的方式來完成拼接操作[5-6],但是這種融合方式容易導致拼接圖像出現鬼影、重影。為了解決該問題,人們提出了最佳縫合線算法。該算法通過評估和計算重疊區(qū)域的差異,找到一條最為相似的分割線,使得分割線兩側的圖像在分割線處實現無縫拼接,這條分割線就是所尋找的最佳縫合線[5,7-10]??p合線算法可以有效地消除圖像拼接過程中出現的重影,在圖像拼接領域有廣泛應用。
一條理想的縫合線應該滿足以下兩個要求[7-8]:
1)顏色強度上,兩幅圖像的顏色差異最小。
2)結構強度上,兩幅圖像的結構差異最小。
縫合線的計算準則[7]為
(1)
通過(1)式可以得到重疊區(qū)域的能量評估圖:評估值越小,該點的顏色差異和結構差異就越??;評估值越大,則該點的顏色差異和結構差異就越大。
最佳縫合線的搜索就是找到一條路徑,這條路徑將重疊區(qū)域分為左右兩個部分,同時路徑上各點的評估值之和E最小[5,7-8]。通過尋找E最小的路徑,讓左右兩幅圖在縫合線處的局部差異最小,使得拼接效果最好。
最佳縫合線的搜索策略:將評估圖中第一行的每一個點作為起始點,將左、左下、下、右下和右等5個方向的最近鄰節(jié)點作為候選點,每次擴展都選擇候選點中評估值最小的點,直至擴展到評估圖的最后一行。最后從所有的路徑中選擇評估值最小的路徑作為最佳縫合線。搜索策略如圖1所示,其中圖1(a)是得到的評估圖,圖1(b)是節(jié)點的5個擴展方向,圖1(c)~圖1(f)是節(jié)點擴展的具體步驟。
圖1 縫合線搜索策略Fig.1 Sarch strategy of seam line algorithm
為了解決數碼迷彩拼接過程中存在的接縫顯著性問題,提出了一種結合紋理合成與最佳縫合線的拼接方法。同時,引入了接縫顯著性指標對拼接效果進行定量評價。
數碼迷彩實施到三維目標表面的時候,不同平面的邊界處必然會存在由于色塊的不連續(xù)分布而產生的顯著接縫[4,11]??紤]到拼接接縫形成的原因和特性,本文提出一種數碼迷彩拼接算法來達到以下目的:1)消除接縫處的直線特征;2)避免產生新的暴露特征。
基于特征點的圖像拼接通常做法是,首先計算匹配兩幅圖像的特征點,然后據此計算獲得兩幅圖像的重疊區(qū)域,接著計算最佳縫合線,最后用圖像融合算法消除縫合線兩側的色差。
數碼迷彩圖案特征點的配準可能導致圖案的旋轉,且拼接后的尺寸不固定,不利于數碼迷彩的拼接。同時,數碼迷彩的待拼接圖通常沒有嚴格的重疊區(qū)域,這導致迷彩圖案的配準效果較差。為了避免旋轉和尺寸變化所帶來的問題,本文運用紋理合成的方法,制造了過渡自然的擴展區(qū)域,以此構造了一個偽重疊區(qū)域;接著在該區(qū)域內尋找一條最佳縫合線,使縫合線兩側圖案能夠平滑過渡,實現對數碼迷彩圖案的拼接。由于圖像融合可能會產生新的顏色,不利于數碼迷彩的拼接,所以本文算法在拼接時并未進行圖像融合。
本文算法的基本流程如圖2所示:
步驟1依據目標背景設計數碼迷彩圖案A.
步驟2以圖案A為樣本,運用紋理合成技術生成一幅足夠大的數碼迷彩圖案B(B的大小取決于拼接圖案的尺寸,本文取拼接圖案尺寸的10倍作為B的大小)。
步驟3在數碼迷彩圖案B中尋找任意兩個小尺寸的圖案C1和C2作為待拼接圖案,并假設C1拼在C2的左邊(C1和C2的尺寸相同)。
步驟4運用紋理合成技術,將圖案C1向右側擴展,生成與C1同等高度的圖案D1,如圖3(a)所示。同理,將圖案C2向左側擴展,得到與C2等高的圖案D2,如圖3(b)所示。C1中與D2重疊的部分和D2一起構成了偽重疊區(qū)域Ω1,圖3(c)中的陰影部分表示Ω1. 同理,C2中與D1重疊的部分和D1也是一個偽重疊區(qū)域Ω2,如圖3(d)所示,其中陰影部分表示Ω2. 圖3(c)、圖3(d)的重疊區(qū)內部曲線為縫合線(本文取D1和D2的寬度為C1或C2寬度的三分之一)。
步驟5分別計算C2和D1,C1和D2的偽重疊區(qū)域的最佳縫合線L1和L2,如圖3(c)、圖3(d)所示。選擇評估值之和E較小的縫合線作為最終拼接的最佳縫合線。
步驟6對C1和C2進行縫合線拼接。
圖2 拼接算法流程Fig.2 Flow chart of stitching algorithm
圖3 拼接圖案區(qū)域劃分圖Fig.3 Regionalization of stitched patterns
圖3是拼接圖案的區(qū)域劃分示意圖,其中:圖3(a)和圖3(b)中的C1和C2是待拼接的兩個圖案,D1和D2分別是C1和C2的擴展圖案;圖3(c)和圖3(d)是兩個重疊區(qū)域的示意圖,將C1和C2拼在一起的時候,擴展的圖案和拼接圖重疊的部分構成了偽重疊區(qū)域Ω,用斜線陰影表示;圖3(c)和圖3(d)中的L1和L2分別是在偽重疊區(qū)域Ω1和Ω2內搜索得到的最佳縫合線。
圖4 原始背景圖像和數碼迷彩圖案Fig.4 Background image and digital camouflage patterns
迷彩圖案的拼接接縫是一種顯著的暴露特征,會直接影響目標偽裝效果。為了評價數碼迷彩的拼接效果,設計了一種能夠描述接縫顯著性的技術指標,該指標用[0,1]內的小數表示。算法步驟如下:
步驟1分別截取C1、C2最靠近接縫的一列F1、F2,并創(chuàng)建一個和F1、F2同尺寸的列向量G.
步驟2判斷F1(i, 1)、F2(i, 1)的顏色是否一致(i表示該分量在G中的位置),如果相等,G(i, 1)=0,不相等則G(i, 1)=1,如(2)式所示,
(2)
步驟3去除掉列向量G中長度較短的邊界,例如(0, 1, 0)的長度只有1,于是去除掉。
步驟4統計列向量G中數值為1的元素個數n,并依據(7)式計算接縫顯著度S,
(3)
式中:length(G)為G的元素個數(整體長度)。
由于n∈[0,length(G)],所以S∈[0,1]. 當S→0時,n→0,表示直線段邊界越短,接縫顯著性越低;當S→1時,n→length(G),表示直線段邊界越長,接縫顯著性越高,越容易被識別。
本文對提出的算法進行了拼接試驗和同類算法間的對比試驗,并通過定性、定量的方法完成了對試驗結果的評價。
針對上述設計的數碼迷彩拼接算法,在文獻[2,11]的基礎上,選取某地區(qū)背景圖像進行了試驗驗證與分析。在圖4中:圖4(a)是原始目標背景圖像;圖4(b)是用文獻[2]算法生成的數碼迷彩圖案A;圖4(c)是以圖案A為樣本,運用紋理合成技術[12-13]生成的更大數碼迷彩圖案B. 圖4(c)中白色方框選中的是待拼接的兩幅迷彩圖案C1、C2. 為了便于觀察,上述C1、C2用圖5(a)、圖5(d)表示。
分別對數碼迷彩圖案C1和C2在拼接方向進行擴展,得到D1和D2,如圖5(b)、圖5(c)所示,其目的是人為構造重疊區(qū)域Ω1和Ω2. 分別計算重疊部分Ω1和Ω2的能量評估圖,最后在評估圖中搜索最佳縫合線,如圖5所示。
圖5 待拼接圖案及其縫合線Fig.5 Stitched pattern and best seam line
直接將C1、C2進行拼接形成圖6(a)所示圖案,用圖5(f)、圖5(h)進行拼接形成圖6(b)、圖6(c)所示圖案。
圖6 拼接效果及Canny算子檢測結果Fig.6 Stitched results and detection results of Canny operator
從圖6(a)可以看出,直接拼接的圖案在拼接處存在顯著的直線段特征。從圖6(b)、圖6(c)來看,L1和L2縫合線拼接都很好地將這一特征消除了,均難以發(fā)現拼接的縫隙。
對上述3個拼接結果分別進行Canny邊緣檢測后得到圖6(d)~圖6(f)所示結果。從圖6(d)可以發(fā)現,Canny算子成功檢測到了圖6(a)中的拼接縫隙;從圖6(e)、圖6(f)可以看出,圖6(b)、圖6(c)的縫隙直接被消除了。
為了確定最優(yōu)的拼接效果,需要在圖6(b)和圖6(c)中間選擇一個方案。這可以通過比較兩種方案的縫合線評估值之和E來確定。圖6(b)的EL1=0.982,圖6(c)的EL2=0.803,而E越小表示縫合線兩側的局部差異越小,拼接效果就越好,于是選擇評估值之和較小的圖6(c)作為最優(yōu)的拼接結果。
將文獻[11]的算法用于圖5中C1和C2的拼接,得到的結果如圖7(a)所示。對圖7(a)進行Canny邊緣檢測,得到圖7(b)所示結果。
圖7 文獻[11]的拼接結果Fig.7 Stitched results in Ref.[11]
從圖7可以看出,拼接結果依然能夠被Canny算子檢測出縫隙處的直線段特征,該算法難以有效地去除接縫的顯著性。
由于文獻[11]的算法是通過添加一列或多列過渡迷彩來完成數碼迷彩的拼接,而過渡迷彩是依據接縫兩側的顏色分布來決定的。在接縫不顯著情形下,過渡迷彩可以讓拼接處更為模糊,從而消除接縫;在接縫顯著情形下,例如圖6(a)中接縫左側存在單一顏色的較大區(qū)域,這就會對過渡迷彩的生成造成較大影響,使得過渡迷彩不能很好地消除顯著的拼接縫隙。
從圖4(c)的紋理合成圖案B中隨機選擇50個樣本對區(qū)域進行拼接試驗,計算其接縫顯著度,3種方法的接縫顯著度對比結果如圖8所示,顯著度數據見表1.
圖8 接縫顯著度試驗結果Fig.8 Experimental results of seam saliency
圖8對直接拼接,文獻[11]的算法和本文算法的接縫顯著度結果進行了比較。由圖8可以看出:直接進行拼接之后的接縫顯著度整體最高;文獻[11]的算法能降低拼接后的接縫顯著度,但是效果有限;本文算法結果的接縫顯著度整體最低,較文獻[11]的算法更優(yōu)。50組接縫顯著度試驗數據的均值如表2所示。
表1 接縫顯著度試驗數據
表2 接縫顯著度試驗數據的均值
由表2可知,對于直接拼接來說,文獻[11]的算法可以降低接縫顯著度45.7%左右,而本文算法可以降低76.9%左右,同時本文算法較文獻[11]的算法,提升了約57.5%的性能。綜上所述,本文算法能夠更好地應對顯著的拼接接縫。
本文針對不同平面數碼迷彩拼接的接縫顯著性問題,提出了一種結合紋理合成與最佳縫合線的拼接算法,并采用接縫顯著度指標來描述數碼迷彩拼接后的效果。該算法是為仿造數碼迷彩的拼接量身定制的,重點在于減少拼接處的顯著直線段特征,使偽裝目標與背景能夠更好地融合。由于變形迷彩的紋理較仿造迷彩更為簡單,斑塊邊緣更為清晰、顯著,運用紋理合成難以獲得一個效果較好的偽重疊區(qū)域,所以本文算法并不適用于變形迷彩。將本文算法與文獻[11]的算法做了拼接對比試驗。結果表明,本文算法相對于文獻[11]的算法,能夠更好地消除數碼迷彩拼接接縫,從而減少迷彩圖案的暴露特征,使迷彩圖案在拼接處過渡更為自然。