鄒星明,劉艷麗
(1.四川大學(xué)計(jì)算機(jī)學(xué)院,成都610065;2.四川大學(xué)視覺(jué)合成圖形圖像國(guó)防重點(diǎn)實(shí)驗(yàn)室,成都610065)
陰影為人眼理解自然場(chǎng)景提供了重要的視覺(jué)提示,例如估計(jì)光源的位置,對(duì)象的組成和距離以及對(duì)象與其周?chē)h(huán)境之間的空間關(guān)系。在增強(qiáng)現(xiàn)實(shí)(AR)領(lǐng)域中,為了確保合成物體與真實(shí)物體之間的照明一致性,模擬真實(shí)對(duì)象與合成對(duì)象之間的陰影交互是重要環(huán)節(jié)。從實(shí)時(shí)視頻中檢測(cè)真實(shí)陰影則是模擬陰影交互的第一步。目前已經(jīng)提出了各種基于圖像的用于檢測(cè)具有靜態(tài)或動(dòng)態(tài)背景的實(shí)時(shí)視頻中的陰影的方法,但現(xiàn)有的大多數(shù)方法旨在檢測(cè)固定視點(diǎn)下捕獲的監(jiān)視視頻中的陰影。從固定視點(diǎn)與移動(dòng)視點(diǎn)下的視頻進(jìn)行檢測(cè)陰影的關(guān)鍵區(qū)別是,具有固定視點(diǎn)的視頻很容易獲取背景參考圖像,然后利用背景差分法對(duì)陰影進(jìn)行檢測(cè)和識(shí)別;而對(duì)于移動(dòng)視點(diǎn)的視頻,不存在參考圖像。我們還意識(shí)到利用深度學(xué)習(xí)技術(shù)從單幅圖像檢測(cè)陰影的方法即使在處理復(fù)雜紋理時(shí)也取得了很大的成功。但是,單幅圖像獨(dú)立檢測(cè)陰影往往會(huì)喪失視頻所具有的時(shí)間和空間一致性,因此在圖像噪聲和光照變化時(shí)而導(dǎo)致檢測(cè)結(jié)果不穩(wěn)定。所以,相對(duì)于固定視點(diǎn)視頻和單幅圖像檢測(cè),移動(dòng)視點(diǎn)下的實(shí)時(shí)陰影檢測(cè)更具有挑戰(zhàn)性。
為了解決以往方法的局限性,本文提出一種新穎的框架,用于從移動(dòng)視點(diǎn)下的視頻中實(shí)時(shí)對(duì)室外陰影進(jìn)行檢測(cè)??蚣苁紫葘⑤斎胍曨l中的每一幀分割為跟蹤區(qū)域(TR)和新進(jìn)區(qū)域(ER)。前者指前后幀的公共場(chǎng)景區(qū)域,通過(guò)光流計(jì)算可從前一幀得出后一幀的跟蹤區(qū)域;后者指由于攝像機(jī)的移動(dòng),被新引入當(dāng)前幀的場(chǎng)景區(qū)域。然后,框架將利用光流跟蹤TR 中的陰影邊緣,且使用sigmoid 陰影邊緣模型校正,并提取陰影邊緣特征實(shí)現(xiàn)動(dòng)態(tài)檢測(cè)ER 中出現(xiàn)的陰影邊緣,且使用空間布局約束消除偽影。最后使用檢測(cè)的陰影完成AR中的陰影交互效果。
本文的主要內(nèi)容有:
(1)提出了一種新的實(shí)時(shí)框架,用于檢測(cè)在移動(dòng)視點(diǎn)下捕獲的戶(hù)外實(shí)時(shí)視頻中的陰影;
(2)提出了一種基于灰度值的陰影邊緣模型,該模型分析了從候選陰影邊緣周?chē)奶荻确较虻贸龅奶卣?,以進(jìn)行精確的陰影跟蹤和檢測(cè)。
(3)引入了一種自適應(yīng)學(xué)習(xí)策略,該策略不存在第三方訓(xùn)練數(shù)據(jù)集進(jìn)行陰影檢測(cè)所產(chǎn)生的依賴(lài)性,這對(duì)于視頻場(chǎng)景照明變化也很可靠。
(4)開(kāi)發(fā)了一種集成解決方案,可以成功地模擬真實(shí)對(duì)象與虛擬對(duì)象之間的陰影交互,從而可以顯著增強(qiáng)AR 應(yīng)用程序所生成場(chǎng)景的真實(shí)感。
目前主流的室外陰影檢測(cè)分為兩大類(lèi):基于靜態(tài)圖像和基于視頻的檢測(cè)算法
從單幅圖像進(jìn)行陰影檢測(cè)在圖像處理和計(jì)算機(jī)視覺(jué)鄰域已經(jīng)有大量研究[1-6,18]。文獻(xiàn)[1]研究了太陽(yáng)和天空下陰影邊界的特征。他們發(fā)現(xiàn)室外陰影的清晰度與遮擋物的高度以及陽(yáng)光的入射角之間的關(guān)系。文獻(xiàn)[2]提出了一種基于局部邊緣的模型,并結(jié)合了基于水平集的方法來(lái)描述軟陰影的硬邊緣和軟邊緣。文獻(xiàn)[6]利用日光和天光的光譜特性來(lái)檢測(cè)室外陰影邊界。
鑒于單幅圖像提供的信息有限,研究人員已嘗試學(xué)習(xí)從大型數(shù)據(jù)集中提取的高維特征以導(dǎo)出補(bǔ)充信息。例如,Huang 等[1]從135 張圖像的數(shù)據(jù)集中提取35D 特征,以訓(xùn)練AdaBoost 分類(lèi)器來(lái)檢測(cè)圖像中的地面陰影。最近,KHan 等[7]使用多個(gè)卷積深度神經(jīng)網(wǎng)絡(luò)(ConvNets)學(xué)習(xí)超像素級(jí)的陰影特征以及優(yōu)勢(shì)圖像邊界。由于深度學(xué)習(xí)技術(shù)的飛速發(fā)展,從單幅圖像進(jìn)行陰影檢測(cè)在處理復(fù)雜紋理方面取得了巨大的成功[5,8-9]。然而,由于圖像噪聲和光照變化,單幅圖像陰影檢測(cè)方法很難獲得實(shí)時(shí)視頻的穩(wěn)定陰影檢測(cè)結(jié)果。
基于視頻的檢測(cè)算法較于靜態(tài)圖像更具有困難性。在視頻監(jiān)視研究領(lǐng)域,為了促進(jìn)對(duì)象檢測(cè),已經(jīng)開(kāi)發(fā)了許多算法來(lái)檢測(cè)實(shí)況視頻中行駛的汽車(chē)或行人所投射的陰影[10-13]。這些方法大多數(shù)都是基于背景差分的思想。經(jīng)典過(guò)程包括以下三個(gè)步驟,包括:(1)學(xué)習(xí)背景參考圖像;(2)將圖像分割成前景和背景區(qū)域;(3)根據(jù)陰影的形狀,邊界或紋理特征從前景區(qū)域識(shí)別陰影。盡管運(yùn)動(dòng)陰影檢測(cè)已取得顯著進(jìn)展,但是基于背景差分的那些方法僅限于處理在固定視點(diǎn)下捕獲的視頻,該視頻適合處理監(jiān)視視頻,但不適用于具有移動(dòng)視點(diǎn)的視頻,因?yàn)闆](méi)有參考圖像可用。
本文框架首先將當(dāng)前幀分為跟蹤區(qū)域(TR)和新進(jìn)區(qū)域(ER)。具體而言,通過(guò)光流算法[14]從當(dāng)前幀減去跟蹤的前一幀的邊界框來(lái)計(jì)算ER。然后從前一幀跟蹤TR 中的陰影邊緣,并從ER 中的Canny 邊緣區(qū)分陰影和非陰影邊緣。為了解決不可避免的光流跟蹤誤差,引入了基于強(qiáng)度的陰影邊緣sigmoid 模型進(jìn)行校正。為了檢測(cè)ER 的陰影邊緣,從TR 中提取正陰影特征和負(fù)陰影特征,然后利用自學(xué)習(xí)的貝葉斯分類(lèi)器進(jìn)行預(yù)測(cè),并且新進(jìn)陰影的空間布局約束可進(jìn)一步用于消除預(yù)測(cè)的錯(cuò)誤陰影邊緣。
為了保證視頻陰影檢測(cè)的穩(wěn)定性,以及避免重復(fù)檢測(cè),我們首先使用光流算法把上一幀的陰影邊緣跟蹤至當(dāng)前幀作為T(mén)R 的陰影邊緣結(jié)果。但光流算法都具有不可避免的計(jì)算誤差,因此對(duì)于較長(zhǎng)的視頻,隨著幀數(shù)的增加,跟蹤的陰影邊緣與實(shí)際陰影邊緣的偏差巨大(圖3 的第一行)。正如文獻(xiàn)[15]中采用的方法,我們嘗試在跟蹤的陰影邊緣附近直接使用Canny 邊緣來(lái)代替。但是,我們發(fā)現(xiàn)使用Canny 邊緣檢測(cè)器很難檢測(cè)到軟影的完整邊界。此外,由于Canny 邊緣對(duì)閾值敏感,對(duì)同一視頻不同幀的邊緣檢測(cè)結(jié)果不一致,從而導(dǎo)致相鄰幀之間的邊緣抖動(dòng)。并且使用附近的Canny邊緣替換跟蹤的陰影邊緣會(huì)引入錯(cuò)誤的陰影邊緣,這些陰影邊緣會(huì)隨光流跟蹤一起傳播并產(chǎn)生較差的結(jié)果。
圖像中陰影的灰度值共同取決于基礎(chǔ)場(chǎng)景的幾何形狀、陰影所投射表面的紋理以及光照條件。為了檢查軟影中的輻射變化,文獻(xiàn)[2]研究了不同類(lèi)型的投射表面(包括平坦、彎曲、簡(jiǎn)單和復(fù)雜的紋理表面)上沿著陰影邊緣的梯度方向的強(qiáng)度變化,并發(fā)現(xiàn)整個(gè)強(qiáng)度變化在投射表面局部平坦并且在軟陰影內(nèi)具有相似的紋理的前提下,陰影邊緣非常接近S 型函數(shù)。
受到上訴工作的啟發(fā),我們研究了沿陰影邊緣梯度方向像素強(qiáng)度的變化。首先我們使用雙邊濾波器平滑每一個(gè)視頻幀,然后將濾波后的圖像從RGB 顏色空間轉(zhuǎn)換至HSV 顏色空間,接著從V 通道執(zhí)行以下操作。對(duì)于由Canny 邊緣檢測(cè)器檢測(cè)到的邊緣像素p,我們將其梯度方向表示為G(p),然后在G(p)的每一側(cè)取k 個(gè)像素灰度值。為了減少紋理對(duì)灰度值的影響,計(jì) 算 相 對(duì) 偏 移 向 量N2k+1(p)=((Ip-k-...,(Ip-...,(Ipk-,其中p-k和pk分別表示梯度方向上距離像素p 有k 個(gè)像素距離的點(diǎn),Ip表示像素灰度值,Iˉ表示2k+1 個(gè)像素灰度值的平均值。在實(shí)驗(yàn)中,對(duì)于640×360 分辨率的視頻,k 通常取5。
我們以G(p)為橫坐標(biāo),N2k+1(p)為縱坐標(biāo),像素p為原點(diǎn),如圖1 所示,陰影邊緣呈現(xiàn)平滑的S 型曲線,而非陰影邊緣則呈現(xiàn)階梯函數(shù)曲線。我們根據(jù)離散點(diǎn)進(jìn)行擬合,發(fā)現(xiàn)陰影邊緣可以很好地?cái)M合成sigmoid 函數(shù),公式如下:
f(x)=a/(1+exp(bx+c))+d (1)
根據(jù)函數(shù)性質(zhì),當(dāng)f′(x0) 取極值,即x0=-c/b 是G(p)的中點(diǎn)。依據(jù)f′(x)的凹凸性,我們?nèi)′(x)的兩個(gè)拐點(diǎn)xl和xr,定義ω= ||xl-xr為軟影的寬度,τ 為擬合誤差。從圖1 可以看出,陰影邊緣有較寬的軟影的寬度和較低的擬合誤差,這些信息都可運(yùn)用在后續(xù)ER 陰影檢測(cè)當(dāng)中。
我們根據(jù)陰影邊緣sigmoid 模型,對(duì)跟蹤陰影邊緣上的像素x,我們通過(guò)擬合灰度變化找到與其對(duì)應(yīng)曲線的中點(diǎn),也即精確陰影像素x?。對(duì)于少部分因?yàn)樾U鴣G失的陰影邊緣,我們使用漫水算法得到完整的陰影區(qū)域,然后再提取邊緣以補(bǔ)全丟失的陰影邊緣。圖2 的第一行顯示光流跟蹤結(jié)果,第二行顯示了所有跟蹤陰影邊界的精確結(jié)果。顯然,與x 相比,x?的位置更精確,這表明從陰影邊緣附近的任何初始像素開(kāi)始,我們的方法都能夠精確地定位它。這樣,所提出的方法校正了每幀的陰影邊緣的偏離,并且累積了相對(duì)較少的跟蹤誤差,從而導(dǎo)致更準(zhǔn)確和穩(wěn)定的跟蹤性能。
由于新進(jìn)區(qū)域中存在因移動(dòng)視點(diǎn)而被引入場(chǎng)景的陰影邊緣,為了能夠檢測(cè)到新進(jìn)場(chǎng)景中的陰影,我們首先把TR 中的已被校正的陰影邊緣作為正樣本,其余Canny 邊緣作為負(fù)樣本,然后構(gòu)造幾組特征向量放入貝葉斯分類(lèi)器中進(jìn)行訓(xùn)練。
第一組特征是像素梯度方向的2n+1 個(gè)灰度值。沿著邊緣的梯度方向的灰度值分布提供了區(qū)分陰影和反射邊緣的有效提示。為了消除圖像噪點(diǎn),對(duì)于TR 中的正樣本像素p,我們提取N2n+1(p?),p?是擬合后的中點(diǎn);而對(duì)于負(fù)樣本,我們?nèi)∑?n+1 個(gè)原始灰度值作為負(fù)特征。在實(shí)驗(yàn)中,n 取值為5。
第二、三組特征如第一組類(lèi)似,取像素梯度方向的Lab 顏色空間的a、b 通道的2n+1 個(gè)強(qiáng)度值和。這兩組特征是為了減少不同紋理給正負(fù)樣本所帶來(lái)的影響。
第四組特征是不同顏色通道的梯度方向。文章[1]提出,對(duì)于反射率局部恒定的陰影邊界處的像素,圖像梯度在所有顏色通道中應(yīng)具有相同的方向,而對(duì)于其他非陰影邊緣則沒(méi)有此特征。對(duì)RGB 三種顏色計(jì)算梯度方向向量γ=(γrg,γgb,γbr),其中γrg=min( ||γr-γg,2π- ||γr-γg),γr、γg、γb分別是RGB 通道的梯度方向。
第五組特征是擬合曲線后的軟影寬度ω 和擬合誤差τ。如圖3 所示,陰影邊緣的軟影寬度大多數(shù)處于1~3 個(gè)像素寬度左右,而非陰影邊緣的寬度則集中于1個(gè)像素以?xún)?nèi)。對(duì)于擬合誤差來(lái)說(shuō),陰影的擬合誤差比非陰影的擬合誤差大部分更小。因此,軟影寬度和擬合誤差也是區(qū)分陰影和非陰影的重要特征。
圖1 陰影邊緣和非陰影邊緣擬合結(jié)果
圖2 第一行光流結(jié)果,第二行校正結(jié)果,第三行擬合曲線
圖3 擬合誤差和軟影寬度的統(tǒng)計(jì)
從TR 中提取了正陰影特征和負(fù)陰影特征后,現(xiàn)在我們可以使用這些特征來(lái)訓(xùn)練貝葉斯分類(lèi)器。為了獨(dú)立控制像素值變化和擬合誤差以及軟影寬度的影響,我們?cè)O(shè)計(jì)了兩個(gè)貝葉斯聯(lián)立模式。第一個(gè)貝葉斯分類(lèi)器考慮像素值變化描和色度特征u=(N2n+1,+1,,本文實(shí)驗(yàn)中n=5;第二個(gè)分類(lèi)器考慮擬合誤差和軟影寬度v=(τ,ω)。最終ER 中邊緣像素i 是陰影的概率由如下加權(quán)分類(lèi)器確定:
log P(yi|Fi)=log P(yi|ui)+λ log P(yi|vi) (2)
本文實(shí)驗(yàn)中根據(jù)不同場(chǎng)景適當(dāng)修改λ 值,其默認(rèn)值為10。
圖4 陰影的空間布局信息
即使我們從TR 的校正后的跟蹤陰影邊緣中學(xué)到了各種特征,但由于室外場(chǎng)景中的復(fù)雜紋理,按像素分類(lèi)仍然存在誤檢測(cè)的情況。因此為了細(xì)化像素分類(lèi),應(yīng)該利用新陰影的高級(jí)信息。這里我們加入陰影的空間布局信息進(jìn)行優(yōu)化。如圖4 所示,新進(jìn)陰影我們分為兩類(lèi),一類(lèi)是連接陰影,一類(lèi)是獨(dú)立陰影。前者是ER 中陰影區(qū)域和TR 陰影區(qū)域聯(lián)通的陰影,后者是新進(jìn)入場(chǎng)景的陰影區(qū)域且不和TR 的陰影區(qū)域聯(lián)通。對(duì)于ER 中每個(gè)陰影邊緣l,我們根據(jù)梯度方向選擇種子點(diǎn),然后利用漫水填充算法得到區(qū)域Sl;同理可以由TR 中的陰影邊緣得到陰影區(qū)域STR。?Sl是Sl的邊界集合,B 是視頻幀的邊界。根據(jù)公式(3),我們以陰影邊緣yl為單位進(jìn)行判斷來(lái)消除偽影。本文實(shí)驗(yàn)中ε1和ε2都設(shè)置為0.8。
本文實(shí)驗(yàn)視頻來(lái)自手持?jǐn)z像機(jī)或者手機(jī)拍攝的視頻。首先,我們和最新的兩種光流算法EpicFlow[16]和FlowNet2.0[17]進(jìn)行比較。圖5 可以看到隨著視頻幀的推移,由于光流的累計(jì)誤差所導(dǎo)致光流的結(jié)果逐漸偏移,甚至導(dǎo)致邊緣結(jié)果完全失效。本文算法對(duì)跟蹤區(qū)域的陰影可以準(zhǔn)確且穩(wěn)定的跟蹤。
圖5 從左至右依次是視頻的第4、35,175,442幀
另外,本文算法還和單幅圖像陰影檢測(cè)算法Tian等[6]、最新的基于深度學(xué)習(xí)的陰影檢測(cè)算法DSDNet[9]進(jìn)行比較。如圖6 所示,單幅圖像陰影檢測(cè)算法因?yàn)楹雎粤艘曨l的時(shí)間和空間一致性的信息,存在不穩(wěn)定的結(jié)果。本文算法則考慮了視頻前后幀的連續(xù)性,則能保持很好的穩(wěn)定性,以及使用自適應(yīng)學(xué)習(xí)的貝葉斯分類(lèi)器也能很好地檢測(cè)出新進(jìn)的陰影。
最后我們選取幾個(gè)場(chǎng)景進(jìn)行陰影檢測(cè)和跟蹤,并且應(yīng)用于AR 中,其實(shí)驗(yàn)結(jié)果和AR 效果如圖7 所示,實(shí)驗(yàn)結(jié)果驗(yàn)證了本文算法的有效性和準(zhǔn)確性,并且對(duì)AR 中的陰影交互效果起到了明顯的增強(qiáng)效果。
圖6 從左至右依次是視頻的第11,12,79,80幀
圖7 第一行為本文算法的檢測(cè)結(jié)果,第二行是AR中的陰影交互效果
本文算法是通過(guò)CUDA 與GeForce GTX 980 顯卡在GPU 上實(shí)現(xiàn),其中軟件環(huán)境為Clion2018 +OpenCV3.0。對(duì)于輸入的視頻,算法的時(shí)間消耗取決于視頻分辨率和每幀中的陰影大小。平均而言,對(duì)于分辨率為640×360 的視頻,未優(yōu)化代碼的平均時(shí)間為每幀39.73 毫秒,即25fps,達(dá)到實(shí)時(shí)的效果。
本文提出了一種新的實(shí)時(shí)框架,用于從移動(dòng)視點(diǎn)下拍攝的視頻中檢測(cè)室外陰影。該方法特別適合于模擬AR 應(yīng)用程序中的陰影交互。為了考慮移動(dòng)視點(diǎn),提出框架首先通過(guò)光流跟蹤將當(dāng)前幀分為跟蹤區(qū)域和新進(jìn)區(qū)域。然后,框架將基于灰度值的邊緣模型用于優(yōu)化最初跟蹤的陰影邊界。進(jìn)一步采用了一種自學(xué)習(xí)策略,該策略從TR 中已跟蹤的陰影邊界中識(shí)別陰影特征。最后,另外利用新進(jìn)陰影的空間布局約束來(lái)去除偽影。各種具有挑戰(zhàn)性的場(chǎng)景結(jié)果表明,提出的框架能夠檢測(cè)類(lèi)型不斷變化的陰影,具有復(fù)雜紋理的背景上投射的陰影以及高精度的快速移動(dòng)陰影。最后利用陰影結(jié)果成功為AR 應(yīng)用程序生成了場(chǎng)景交互的逼真的陰影。
本文算法提供了一個(gè)檢測(cè)室外陰影并應(yīng)用于AR程序的框架。但依然存在改進(jìn)的地方,例如視頻的首幀我們需要利用已有的單幅圖像的陰影檢測(cè)算法[6,9]作為初始化步驟,初始化可能需要人工的調(diào)整;以及在陰影被遮擋的場(chǎng)景中,陰影遮擋導(dǎo)致光流算法以及sig?moid 模型失效,因此本文算法并不適合此類(lèi)場(chǎng)景。未來(lái)我們將針對(duì)這些問(wèn)題,繼續(xù)對(duì)框架進(jìn)行優(yōu)化。