楊 濤,羅健欣,金鳳林
(中國人民解放軍陸軍工程大學(xué) 指揮控制工程學(xué)院,江蘇 南京 210007)
隨著數(shù)碼相機(jī)與攝像頭的普及并應(yīng)用于手機(jī)、無人機(jī)等各種移動平臺,移動場景下拍攝的視頻成為了網(wǎng)絡(luò)中最活躍的媒體形式之一。然而移動平臺下捕捉的視頻通常會在人們所預(yù)期的運(yùn)動之上存在一定程度的抖動甚至旋轉(zhuǎn)變形,這就需要人為對相機(jī)的運(yùn)動進(jìn)行區(qū)分和過濾,數(shù)字視頻穩(wěn)像[1](Digital Video Stablization,DVS) 就是完成這樣的工作。相機(jī)運(yùn)動估計[2]是視頻穩(wěn)像中的一個基礎(chǔ)環(huán)節(jié),完成對相機(jī)運(yùn)動路徑的估計之后就可以通過濾波、曲線擬合等方式對其進(jìn)行運(yùn)動補(bǔ)償,最后進(jìn)行適當(dāng)?shù)膱D像修補(bǔ)和變形,從而達(dá)到視頻穩(wěn)像的效果。
相機(jī)運(yùn)動估計在選定的相機(jī)模型下,根據(jù)視頻幀序列重疊區(qū)域之間的變換來估計相機(jī)運(yùn)動姿態(tài)。根據(jù)使用的變換模型不同,可以將相機(jī)運(yùn)動估計的方法大致分為四種:傳統(tǒng)2D相機(jī)運(yùn)動估計方法、3D相機(jī)運(yùn)動估計方法、傳感器輔助運(yùn)動估計方法、新興2D相機(jī)運(yùn)動估計方法[2]。傳統(tǒng)的2D相機(jī)運(yùn)動估計通常使用單個仿射矩陣或者單應(yīng)性矩陣來建模相鄰幀間的相機(jī)運(yùn)動,計算簡單,算法魯棒性較好。典型的方法有基于像素點的塊匹配法[3]、光流法[4-5]、相位相關(guān)法[6-8]和基于特征點的方法[9]。但是傳統(tǒng)的2D方法一方面忽略了相機(jī)的空間運(yùn)動信息,另一方面對于圖像各局部景物深度不一樣的情況,單一的矩陣難以處理視差問題。3D相機(jī)運(yùn)動估計最常用的傳統(tǒng)方法是運(yùn)動恢復(fù)結(jié)構(gòu)(Structure From Motion,SFM)[10],該算法從2D視頻幀序列中恢復(fù)出相應(yīng)的3D運(yùn)動信息。應(yīng)用該算法比較經(jīng)典的例子是2009年LIU F等人提出的CPW方案[11],該方案首先使用SFM算法恢復(fù)相機(jī)的原始運(yùn)動以及3D場景點云,而后使用3D點云和參考幀圖像進(jìn)行運(yùn)動平滑和圖像變形修復(fù)。在修復(fù)過程中,使用了內(nèi)容保持的圖像變形技術(shù)。然而,SFM技術(shù)依然面臨著重建條件不足和計算效率低的問題[12]。傳感器輔助運(yùn)動估計則使用陀螺儀、加速度傳感器等建立相機(jī)旋轉(zhuǎn)運(yùn)動模型,簡化了運(yùn)動估計,然而從實質(zhì)上它們依然屬于2D解決方案,無法避免視差問題。LIU等人[13]通過引入深度攝像頭,將深度圖像與原圖像結(jié)合進(jìn)行3D運(yùn)動估計,但是深度攝像頭成本較高;新興的2D相機(jī)運(yùn)動估計則試圖利用2D的方法在一定程度上解決視差問題,在無需三維重建的情況下得到接近3D的運(yùn)動估計效果。文獻(xiàn)[2]將此類方法分為特征軌跡法和多路徑算法。特征軌跡法的代表是LIU F等人提出的Subspace[14]方法,而多路徑方案則是將“As Similar As Possible”[15]的思路引入到相機(jī)運(yùn)動估計中,提出一種多重的、時空可變的網(wǎng)格變形模型,使圖像的不同網(wǎng)格可以有獨(dú)立的運(yùn)動路徑。本文正是在此基礎(chǔ)上添加直線保持約束進(jìn)行改進(jìn)的新興2D方法。
本文使用網(wǎng)格變形模型來表示連續(xù)圖像幀之間的運(yùn)動,不同于傳統(tǒng)單個2D線性變換模型,網(wǎng)格化表示相機(jī)路徑具有更強(qiáng)的建模能力[16]。算法在原內(nèi)容保持變形CPW算法的基礎(chǔ)上,提出了具有直線約束的相機(jī)運(yùn)動估計方法。算法流程如圖1所示。
圖1 算法流程
圖2 全局相機(jī)路徑表示
(1)
圖3 特征點保持約束
(2)
(3)
按照LIU S等人的方法,相似性保持項用來衡量變形后的每個網(wǎng)格與原網(wǎng)格的相似程度。具體而言,在幀F(xiàn)t中,將每個網(wǎng)格分成兩個三角形,三角形中的每一個頂點都可以由另外兩個頂點所形成的向量和與該向量垂直的向量為基底形成的坐標(biāo)系來表示。以v1為例,可以通過等式(4)表示。
v1-v2=u(v2-v3)+vR90(v2-v3)
(4)
由(4)可得:
v1=v2+u(v2-v3)+vR90(v2-v3)
(5)
圖4 v1的坐標(biāo)
(6)
(1)四個網(wǎng)格頂點,如圖5(a)所示;
(2)網(wǎng)格邊緣除頂點外的點,如圖5(b)所示;
(3)內(nèi)部網(wǎng)格線交點,如圖5(c)所示。
圖5 v1所處位置及三角形劃分
在實驗中,圖5(a)、(b)、(c)中的v1將分別受到2、4、8個三角形的相似性約束。
特征點約束和相似性約束均是在單網(wǎng)格內(nèi)對網(wǎng)格的變形加以約束,并且沒有考慮圖像中的具體紋理。通常認(rèn)為,人眼對直線結(jié)構(gòu)是較為敏感的。對于這樣的直線結(jié)構(gòu),如果在網(wǎng)格變形的過程中發(fā)生較大程度的扭曲或挫切,會直接影響視覺效果。此外,圖像中長度較長的直線結(jié)構(gòu)會存在跨越多個網(wǎng)格的情況。因此考慮在特征點約束和相似性約束的基礎(chǔ)上,增加直線保持約束。首先運(yùn)用GIOI G R V等人[20]提出的LSD(Line Segment Detector)方法對前一幀圖像進(jìn)行直線提取,如圖6所示。
圖6 直線提取示例
考慮到時間連續(xù)性問題,對一些長度較短的直線進(jìn)行剔除,只保留長度大于網(wǎng)格寬度和高度的直線。而后將提取的線段平均切分為N段,N+1個子線段端點為p0,p1,…,pj,…,pN,其中p0和pN分別代表原直線的兩個端點。在實驗中,選取N=5,端點pj可由兩端點表示為:
(7)
同時pj也可由所在網(wǎng)格的四個頂點Vj雙線插值表示。因此,式(7)可如下轉(zhuǎn)換:
(8)
類似于前兩項約束,直線保持約束可定義為:
(9)
其中l(wèi)代表檢測出的所有符合條件的直線。
對于α2,認(rèn)為在1.4節(jié)中對直線的長度加以限制后,篩選出的直線條數(shù)應(yīng)當(dāng)影響直線保持約束的權(quán)值。直線條數(shù)越多,越需要增大α2加強(qiáng)直線保持約束以避免直線扭曲和挫切。
由于式(1)中三個約束均為二次項,因此可以通過稀疏線性系統(tǒng)求解最小化。具體地,將待求解的變形后的網(wǎng)格頂點的像素坐標(biāo)按順序編號表示成向量X:
X=[x1,y1,x2,y2,…,xi,yi,…,xn,yn]T
(10)
X=A
(11)
(12)
按照1.1節(jié)中所述,可以將相機(jī)的全局運(yùn)動定義為隨空間變化的各網(wǎng)格的運(yùn)動路徑的集合,如圖7所示。假設(shè)Ci(t)表示在t時刻網(wǎng)格單元i處的相機(jī)位姿,單個網(wǎng)格所表示的局部相機(jī)路徑可表示為:
Ci(t)=Ci(t-1)Hi(t-1)
=Hi(0)Hi(1)…Hi(t-1),
1≤t≤T,1≤i≤n×m
(13)
其中,T為總幀數(shù),n×m為網(wǎng)格總數(shù),且Ci(0)定義為單位矩陣。至此,增加直線約束的相機(jī)運(yùn)動估計完成。后續(xù)可以在此基礎(chǔ)上完成各網(wǎng)格相機(jī)路徑的平滑,并通過原始路徑向平滑后路徑的重投影對視頻進(jìn)行穩(wěn)像。
圖7 全局相機(jī)路徑
首先,為了更直觀地驗證直線保持約束的有效性,在估計出t時刻到t+1時刻的相機(jī)運(yùn)動之后,將t時刻的幀F(xiàn)t逐網(wǎng)格重投影到估計出的相機(jī)位姿上,即從Ft+1的拍攝視角重建Ft,從直觀上比較兩種網(wǎng)格變形模型的效果。實驗視頻幀選用LIU S等人提供的網(wǎng)格變形模型的demo中直線結(jié)構(gòu)較為明顯的兩對相鄰幀,如表1所示,分辨率為640×360。
表1 選用的相鄰幀
經(jīng)過原算法的變形之后的Ft如圖8所示。
圖8 原算法變形效果
可以觀察到,在黑色粗方框的位置存在明顯的直線扭曲,經(jīng)放大后更加清晰,如圖9所示。
圖9 扭曲細(xì)節(jié)放大
在保持α=1等參數(shù)相同的情況下,增加了直線保持約束之后,直線扭曲得到了明顯的改善,如圖10所示。
圖10 改進(jìn)算法變形效果
將之前發(fā)生扭曲的部分細(xì)節(jié)放大,觀察改善之后的效果,如圖11所示。
圖11 改進(jìn)后細(xì)節(jié)放大
其次,分析相似性約束的權(quán)重α1是如何調(diào)節(jié)整體的變形的。對同一幀在其他參數(shù)不變的情況下,取不同的α1值進(jìn)行圖像變形,不同效果如圖12所示。
圖12 不同α1變形效果
通過觀察可以發(fā)現(xiàn),如1.1節(jié)中所述,α1可以用來整體調(diào)節(jié)變形的剛性。具體而言,α1值越大,變形越趨于剛性,受特征點約束越弱,網(wǎng)格頂點越趨向于保持原來的位置,運(yùn)動越簡單,越體現(xiàn)出相似性保持的作用。
表2 實驗數(shù)據(jù)幀
表3 與原算法對比結(jié)果
通過實驗可以發(fā)現(xiàn),將幀重投影到估計的相機(jī)運(yùn)動位姿上,增加了直線結(jié)構(gòu)保持約束的網(wǎng)格變形方法得到的圖像對于目標(biāo)位置幀的PSNR值和SSIM值比增加直線約束之前都有小幅度的提升。更重要的是,在直觀的視覺感受上,保持了人眼較為敏感的直線結(jié)構(gòu)不變形,提升了主觀視覺質(zhì)量。
本文在原內(nèi)容保持變形CPW算法的網(wǎng)格變形模型基礎(chǔ)上添加了對圖像中的直線結(jié)構(gòu)進(jìn)行保護(hù)的直線保持約束。通過稀疏線性系統(tǒng)求解,對相鄰幀的各個網(wǎng)格的相機(jī)運(yùn)動進(jìn)行獨(dú)立的估計。實驗證明,在根據(jù)算法估計出的運(yùn)動路徑對圖像變形時,較好地保護(hù)了圖像中的直線結(jié)構(gòu),從直觀上提升了圖像變形的視覺效果。后續(xù)可以基于本文的網(wǎng)格變形模型估計的相機(jī)運(yùn)動路徑,進(jìn)行路徑平滑和圖像重投影,從而提升視頻穩(wěn)像和視頻拼接的效果。