鄒星明,劉艷麗
(1.四川大學計算機學院,成都610065;2.四川大學視覺合成圖形圖像國防重點實驗室,成都610065)
陰影為人眼理解自然場景提供了重要的視覺提示,例如估計光源的位置,對象的組成和距離以及對象與其周圍環(huán)境之間的空間關系。在增強現(xiàn)實(AR)領域中,為了確保合成物體與真實物體之間的照明一致性,模擬真實對象與合成對象之間的陰影交互是重要環(huán)節(jié)。從實時視頻中檢測真實陰影則是模擬陰影交互的第一步。目前已經提出了各種基于圖像的用于檢測具有靜態(tài)或動態(tài)背景的實時視頻中的陰影的方法,但現(xiàn)有的大多數方法旨在檢測固定視點下捕獲的監(jiān)視視頻中的陰影。從固定視點與移動視點下的視頻進行檢測陰影的關鍵區(qū)別是,具有固定視點的視頻很容易獲取背景參考圖像,然后利用背景差分法對陰影進行檢測和識別;而對于移動視點的視頻,不存在參考圖像。我們還意識到利用深度學習技術從單幅圖像檢測陰影的方法即使在處理復雜紋理時也取得了很大的成功。但是,單幅圖像獨立檢測陰影往往會喪失視頻所具有的時間和空間一致性,因此在圖像噪聲和光照變化時而導致檢測結果不穩(wěn)定。所以,相對于固定視點視頻和單幅圖像檢測,移動視點下的實時陰影檢測更具有挑戰(zhàn)性。
為了解決以往方法的局限性,本文提出一種新穎的框架,用于從移動視點下的視頻中實時對室外陰影進行檢測。框架首先將輸入視頻中的每一幀分割為跟蹤區(qū)域(TR)和新進區(qū)域(ER)。前者指前后幀的公共場景區(qū)域,通過光流計算可從前一幀得出后一幀的跟蹤區(qū)域;后者指由于攝像機的移動,被新引入當前幀的場景區(qū)域。然后,框架將利用光流跟蹤TR 中的陰影邊緣,且使用sigmoid 陰影邊緣模型校正,并提取陰影邊緣特征實現(xiàn)動態(tài)檢測ER 中出現(xiàn)的陰影邊緣,且使用空間布局約束消除偽影。最后使用檢測的陰影完成AR中的陰影交互效果。
本文的主要內容有:
(1)提出了一種新的實時框架,用于檢測在移動視點下捕獲的戶外實時視頻中的陰影;
(2)提出了一種基于灰度值的陰影邊緣模型,該模型分析了從候選陰影邊緣周圍的梯度方向得出的特征,以進行精確的陰影跟蹤和檢測。
(3)引入了一種自適應學習策略,該策略不存在第三方訓練數據集進行陰影檢測所產生的依賴性,這對于視頻場景照明變化也很可靠。
(4)開發(fā)了一種集成解決方案,可以成功地模擬真實對象與虛擬對象之間的陰影交互,從而可以顯著增強AR 應用程序所生成場景的真實感。
目前主流的室外陰影檢測分為兩大類:基于靜態(tài)圖像和基于視頻的檢測算法
從單幅圖像進行陰影檢測在圖像處理和計算機視覺鄰域已經有大量研究[1-6,18]。文獻[1]研究了太陽和天空下陰影邊界的特征。他們發(fā)現(xiàn)室外陰影的清晰度與遮擋物的高度以及陽光的入射角之間的關系。文獻[2]提出了一種基于局部邊緣的模型,并結合了基于水平集的方法來描述軟陰影的硬邊緣和軟邊緣。文獻[6]利用日光和天光的光譜特性來檢測室外陰影邊界。
鑒于單幅圖像提供的信息有限,研究人員已嘗試學習從大型數據集中提取的高維特征以導出補充信息。例如,Huang 等[1]從135 張圖像的數據集中提取35D 特征,以訓練AdaBoost 分類器來檢測圖像中的地面陰影。最近,KHan 等[7]使用多個卷積深度神經網絡(ConvNets)學習超像素級的陰影特征以及優(yōu)勢圖像邊界。由于深度學習技術的飛速發(fā)展,從單幅圖像進行陰影檢測在處理復雜紋理方面取得了巨大的成功[5,8-9]。然而,由于圖像噪聲和光照變化,單幅圖像陰影檢測方法很難獲得實時視頻的穩(wěn)定陰影檢測結果。
基于視頻的檢測算法較于靜態(tài)圖像更具有困難性。在視頻監(jiān)視研究領域,為了促進對象檢測,已經開發(fā)了許多算法來檢測實況視頻中行駛的汽車或行人所投射的陰影[10-13]。這些方法大多數都是基于背景差分的思想。經典過程包括以下三個步驟,包括:(1)學習背景參考圖像;(2)將圖像分割成前景和背景區(qū)域;(3)根據陰影的形狀,邊界或紋理特征從前景區(qū)域識別陰影。盡管運動陰影檢測已取得顯著進展,但是基于背景差分的那些方法僅限于處理在固定視點下捕獲的視頻,該視頻適合處理監(jiān)視視頻,但不適用于具有移動視點的視頻,因為沒有參考圖像可用。
本文框架首先將當前幀分為跟蹤區(qū)域(TR)和新進區(qū)域(ER)。具體而言,通過光流算法[14]從當前幀減去跟蹤的前一幀的邊界框來計算ER。然后從前一幀跟蹤TR 中的陰影邊緣,并從ER 中的Canny 邊緣區(qū)分陰影和非陰影邊緣。為了解決不可避免的光流跟蹤誤差,引入了基于強度的陰影邊緣sigmoid 模型進行校正。為了檢測ER 的陰影邊緣,從TR 中提取正陰影特征和負陰影特征,然后利用自學習的貝葉斯分類器進行預測,并且新進陰影的空間布局約束可進一步用于消除預測的錯誤陰影邊緣。
為了保證視頻陰影檢測的穩(wěn)定性,以及避免重復檢測,我們首先使用光流算法把上一幀的陰影邊緣跟蹤至當前幀作為TR 的陰影邊緣結果。但光流算法都具有不可避免的計算誤差,因此對于較長的視頻,隨著幀數的增加,跟蹤的陰影邊緣與實際陰影邊緣的偏差巨大(圖3 的第一行)。正如文獻[15]中采用的方法,我們嘗試在跟蹤的陰影邊緣附近直接使用Canny 邊緣來代替。但是,我們發(fā)現(xiàn)使用Canny 邊緣檢測器很難檢測到軟影的完整邊界。此外,由于Canny 邊緣對閾值敏感,對同一視頻不同幀的邊緣檢測結果不一致,從而導致相鄰幀之間的邊緣抖動。并且使用附近的Canny邊緣替換跟蹤的陰影邊緣會引入錯誤的陰影邊緣,這些陰影邊緣會隨光流跟蹤一起傳播并產生較差的結果。
圖像中陰影的灰度值共同取決于基礎場景的幾何形狀、陰影所投射表面的紋理以及光照條件。為了檢查軟影中的輻射變化,文獻[2]研究了不同類型的投射表面(包括平坦、彎曲、簡單和復雜的紋理表面)上沿著陰影邊緣的梯度方向的強度變化,并發(fā)現(xiàn)整個強度變化在投射表面局部平坦并且在軟陰影內具有相似的紋理的前提下,陰影邊緣非常接近S 型函數。
受到上訴工作的啟發(fā),我們研究了沿陰影邊緣梯度方向像素強度的變化。首先我們使用雙邊濾波器平滑每一個視頻幀,然后將濾波后的圖像從RGB 顏色空間轉換至HSV 顏色空間,接著從V 通道執(zhí)行以下操作。對于由Canny 邊緣檢測器檢測到的邊緣像素p,我們將其梯度方向表示為G(p),然后在G(p)的每一側取k 個像素灰度值。為了減少紋理對灰度值的影響,計 算 相 對 偏 移 向 量N2k+1(p)=((Ip-k-...,(Ip-...,(Ipk-,其中p-k和pk分別表示梯度方向上距離像素p 有k 個像素距離的點,Ip表示像素灰度值,Iˉ表示2k+1 個像素灰度值的平均值。在實驗中,對于640×360 分辨率的視頻,k 通常取5。
我們以G(p)為橫坐標,N2k+1(p)為縱坐標,像素p為原點,如圖1 所示,陰影邊緣呈現(xiàn)平滑的S 型曲線,而非陰影邊緣則呈現(xiàn)階梯函數曲線。我們根據離散點進行擬合,發(fā)現(xiàn)陰影邊緣可以很好地擬合成sigmoid 函數,公式如下:
f(x)=a/(1+exp(bx+c))+d (1)
根據函數性質,當f′(x0) 取極值,即x0=-c/b 是G(p)的中點。依據f′(x)的凹凸性,我們取f′(x)的兩個拐點xl和xr,定義ω= ||xl-xr為軟影的寬度,τ 為擬合誤差。從圖1 可以看出,陰影邊緣有較寬的軟影的寬度和較低的擬合誤差,這些信息都可運用在后續(xù)ER 陰影檢測當中。
我們根據陰影邊緣sigmoid 模型,對跟蹤陰影邊緣上的像素x,我們通過擬合灰度變化找到與其對應曲線的中點,也即精確陰影像素x?。對于少部分因為校正而丟失的陰影邊緣,我們使用漫水算法得到完整的陰影區(qū)域,然后再提取邊緣以補全丟失的陰影邊緣。圖2 的第一行顯示光流跟蹤結果,第二行顯示了所有跟蹤陰影邊界的精確結果。顯然,與x 相比,x?的位置更精確,這表明從陰影邊緣附近的任何初始像素開始,我們的方法都能夠精確地定位它。這樣,所提出的方法校正了每幀的陰影邊緣的偏離,并且累積了相對較少的跟蹤誤差,從而導致更準確和穩(wěn)定的跟蹤性能。
由于新進區(qū)域中存在因移動視點而被引入場景的陰影邊緣,為了能夠檢測到新進場景中的陰影,我們首先把TR 中的已被校正的陰影邊緣作為正樣本,其余Canny 邊緣作為負樣本,然后構造幾組特征向量放入貝葉斯分類器中進行訓練。
第一組特征是像素梯度方向的2n+1 個灰度值。沿著邊緣的梯度方向的灰度值分布提供了區(qū)分陰影和反射邊緣的有效提示。為了消除圖像噪點,對于TR 中的正樣本像素p,我們提取N2n+1(p?),p?是擬合后的中點;而對于負樣本,我們取其2n+1 個原始灰度值作為負特征。在實驗中,n 取值為5。
第二、三組特征如第一組類似,取像素梯度方向的Lab 顏色空間的a、b 通道的2n+1 個強度值和。這兩組特征是為了減少不同紋理給正負樣本所帶來的影響。
第四組特征是不同顏色通道的梯度方向。文章[1]提出,對于反射率局部恒定的陰影邊界處的像素,圖像梯度在所有顏色通道中應具有相同的方向,而對于其他非陰影邊緣則沒有此特征。對RGB 三種顏色計算梯度方向向量γ=(γrg,γgb,γbr),其中γrg=min( ||γr-γg,2π- ||γr-γg),γr、γg、γb分別是RGB 通道的梯度方向。
第五組特征是擬合曲線后的軟影寬度ω 和擬合誤差τ。如圖3 所示,陰影邊緣的軟影寬度大多數處于1~3 個像素寬度左右,而非陰影邊緣的寬度則集中于1個像素以內。對于擬合誤差來說,陰影的擬合誤差比非陰影的擬合誤差大部分更小。因此,軟影寬度和擬合誤差也是區(qū)分陰影和非陰影的重要特征。

圖1 陰影邊緣和非陰影邊緣擬合結果

圖2 第一行光流結果,第二行校正結果,第三行擬合曲線

圖3 擬合誤差和軟影寬度的統(tǒng)計
從TR 中提取了正陰影特征和負陰影特征后,現(xiàn)在我們可以使用這些特征來訓練貝葉斯分類器。為了獨立控制像素值變化和擬合誤差以及軟影寬度的影響,我們設計了兩個貝葉斯聯(lián)立模式。第一個貝葉斯分類器考慮像素值變化描和色度特征u=(N2n+1,+1,,本文實驗中n=5;第二個分類器考慮擬合誤差和軟影寬度v=(τ,ω)。最終ER 中邊緣像素i 是陰影的概率由如下加權分類器確定:
log P(yi|Fi)=log P(yi|ui)+λ log P(yi|vi) (2)
本文實驗中根據不同場景適當修改λ 值,其默認值為10。

圖4 陰影的空間布局信息
即使我們從TR 的校正后的跟蹤陰影邊緣中學到了各種特征,但由于室外場景中的復雜紋理,按像素分類仍然存在誤檢測的情況。因此為了細化像素分類,應該利用新陰影的高級信息。這里我們加入陰影的空間布局信息進行優(yōu)化。如圖4 所示,新進陰影我們分為兩類,一類是連接陰影,一類是獨立陰影。前者是ER 中陰影區(qū)域和TR 陰影區(qū)域聯(lián)通的陰影,后者是新進入場景的陰影區(qū)域且不和TR 的陰影區(qū)域聯(lián)通。對于ER 中每個陰影邊緣l,我們根據梯度方向選擇種子點,然后利用漫水填充算法得到區(qū)域Sl;同理可以由TR 中的陰影邊緣得到陰影區(qū)域STR。?Sl是Sl的邊界集合,B 是視頻幀的邊界。根據公式(3),我們以陰影邊緣yl為單位進行判斷來消除偽影。本文實驗中ε1和ε2都設置為0.8。

本文實驗視頻來自手持攝像機或者手機拍攝的視頻。首先,我們和最新的兩種光流算法EpicFlow[16]和FlowNet2.0[17]進行比較。圖5 可以看到隨著視頻幀的推移,由于光流的累計誤差所導致光流的結果逐漸偏移,甚至導致邊緣結果完全失效。本文算法對跟蹤區(qū)域的陰影可以準確且穩(wěn)定的跟蹤。

圖5 從左至右依次是視頻的第4、35,175,442幀
另外,本文算法還和單幅圖像陰影檢測算法Tian等[6]、最新的基于深度學習的陰影檢測算法DSDNet[9]進行比較。如圖6 所示,單幅圖像陰影檢測算法因為忽略了視頻的時間和空間一致性的信息,存在不穩(wěn)定的結果。本文算法則考慮了視頻前后幀的連續(xù)性,則能保持很好的穩(wěn)定性,以及使用自適應學習的貝葉斯分類器也能很好地檢測出新進的陰影。
最后我們選取幾個場景進行陰影檢測和跟蹤,并且應用于AR 中,其實驗結果和AR 效果如圖7 所示,實驗結果驗證了本文算法的有效性和準確性,并且對AR 中的陰影交互效果起到了明顯的增強效果。

圖6 從左至右依次是視頻的第11,12,79,80幀

圖7 第一行為本文算法的檢測結果,第二行是AR中的陰影交互效果
本文算法是通過CUDA 與GeForce GTX 980 顯卡在GPU 上實現(xiàn),其中軟件環(huán)境為Clion2018 +OpenCV3.0。對于輸入的視頻,算法的時間消耗取決于視頻分辨率和每幀中的陰影大小。平均而言,對于分辨率為640×360 的視頻,未優(yōu)化代碼的平均時間為每幀39.73 毫秒,即25fps,達到實時的效果。
本文提出了一種新的實時框架,用于從移動視點下拍攝的視頻中檢測室外陰影。該方法特別適合于模擬AR 應用程序中的陰影交互。為了考慮移動視點,提出框架首先通過光流跟蹤將當前幀分為跟蹤區(qū)域和新進區(qū)域。然后,框架將基于灰度值的邊緣模型用于優(yōu)化最初跟蹤的陰影邊界。進一步采用了一種自學習策略,該策略從TR 中已跟蹤的陰影邊界中識別陰影特征。最后,另外利用新進陰影的空間布局約束來去除偽影。各種具有挑戰(zhàn)性的場景結果表明,提出的框架能夠檢測類型不斷變化的陰影,具有復雜紋理的背景上投射的陰影以及高精度的快速移動陰影。最后利用陰影結果成功為AR 應用程序生成了場景交互的逼真的陰影。
本文算法提供了一個檢測室外陰影并應用于AR程序的框架。但依然存在改進的地方,例如視頻的首幀我們需要利用已有的單幅圖像的陰影檢測算法[6,9]作為初始化步驟,初始化可能需要人工的調整;以及在陰影被遮擋的場景中,陰影遮擋導致光流算法以及sig?moid 模型失效,因此本文算法并不適合此類場景。未來我們將針對這些問題,繼續(xù)對框架進行優(yōu)化。