張友鵬
(四川大學(xué)視覺(jué)合成圖形圖像國(guó)防重點(diǎn)實(shí)驗(yàn)室,成都 610065)
陰影檢測(cè)與跟蹤在計(jì)算機(jī)視覺(jué)等領(lǐng)域具有重要的研究意義。一方面,陰影對(duì)于場(chǎng)景理解有著重要作用,它可以揭示場(chǎng)景的相對(duì)深度、光照條件等信息。另一方面,計(jì)算機(jī)視覺(jué)領(lǐng)域很多目前的算法如目標(biāo)追蹤和目標(biāo)識(shí)別等,會(huì)因?yàn)殛幱暗母蓴_導(dǎo)致算法最后的處理結(jié)果不穩(wěn)定或失敗。因此視頻中的動(dòng)態(tài)陰影檢測(cè)與跟蹤是很有重要意義和挑戰(zhàn)的工作。
目前,在視頻跟蹤領(lǐng)域,已經(jīng)有大量的在線檢測(cè)與跟蹤運(yùn)動(dòng)陰影的工作。但大多數(shù)方法都局限于檢測(cè)與跟蹤固定視點(diǎn)下的運(yùn)動(dòng)陰影,如跟蹤視點(diǎn)固定的監(jiān)控?cái)z像頭拍攝的視頻中的運(yùn)動(dòng)人體或行駛中的汽車的陰影。這些方法的主要流程是先使用背景相減或背景建模來(lái)構(gòu)建參考圖像進(jìn)而提取變化的前景,然后再對(duì)前景中的陰影進(jìn)行分離。然而,在移動(dòng)視點(diǎn)拍攝的視頻中,由于視點(diǎn)的移動(dòng),每幀都可能會(huì)有場(chǎng)景增量進(jìn)入視野,而這些場(chǎng)景增量中可能含有部分待跟蹤的運(yùn)動(dòng)陰影,因此移動(dòng)視點(diǎn)下無(wú)法直接構(gòu)建視頻的背景圖像或參考圖像。所以,相對(duì)于固定視點(diǎn),移動(dòng)視點(diǎn)下的運(yùn)動(dòng)陰影的檢測(cè)與跟蹤面臨更大的挑戰(zhàn)。
本文主要針對(duì)室外場(chǎng)景移動(dòng)視點(diǎn)視頻中的運(yùn)動(dòng)陰影的在線檢測(cè)和跟蹤進(jìn)行研究。主要內(nèi)容包括:
(1)提出了一個(gè)室外場(chǎng)景移動(dòng)視點(diǎn)下的動(dòng)態(tài)陰影檢測(cè)與跟蹤算法框架。
(2)構(gòu)建了一個(gè)反映陰影邊緣特征的9維特征向量,用該特征向量來(lái)訓(xùn)練我們選擇的機(jī)器學(xué)習(xí)方法(隨機(jī)森林),可以準(zhǔn)確地區(qū)分陰影邊緣和其他邊緣。
(3)針對(duì)視點(diǎn)移動(dòng)所帶來(lái)的新場(chǎng)景的問(wèn)題,我們會(huì)每隔固定的時(shí)間更新RF模型。
目前主流的陰影檢測(cè)的算法基本有兩大類:基于靜態(tài)圖像的和基于視頻流的。
現(xiàn)在基于單幅圖像的陰影檢測(cè)已經(jīng)有了很多的成果。文獻(xiàn)[5-9]介紹最近的基于單幅圖像的陰影檢測(cè)算法。文獻(xiàn)[6]介紹了基于室外光照模型的軟影檢測(cè)算法。文獻(xiàn)[9]介紹了基于光照模型和梯度信息的陰影檢測(cè)算法。和文獻(xiàn)[6,9]不同,文獻(xiàn)[5,7-8]提出了利用機(jī)器學(xué)習(xí)模型SVM的陰影檢測(cè)方法,通過(guò)提取陰影的特征,并通過(guò)大量數(shù)據(jù)的訓(xùn)練得到分類器用于陰影的檢測(cè)。
雖然基于視頻的陰影檢測(cè)相較于單幅圖像有很多的困難,但是現(xiàn)在針對(duì)視頻的陰影檢測(cè)研究也出現(xiàn)了越來(lái)越多的成果。文獻(xiàn)[1-4,10]介紹了檢測(cè)視頻中陰影的算法。文獻(xiàn)[1]利用每幀圖像亮度的信息將圖像分為不同的各個(gè)小區(qū)域,然后通過(guò)分析各個(gè)區(qū)域的本質(zhì)特征將各個(gè)小區(qū)域標(biāo)識(shí)為是否為陰影,文獻(xiàn)[2]和文獻(xiàn)[1]的算法類似,不同在于文獻(xiàn)[2]介紹一種新的篩選陰影區(qū)域的方法[3]。在HSV顏色空間中分析了陰影的特征,將其用于視頻陰影的檢測(cè)。文獻(xiàn)[10]介紹了一種高效的、實(shí)時(shí)的視頻檢測(cè)算法。
而解決動(dòng)態(tài)陰影的跟蹤問(wèn)題,現(xiàn)有方法可以簡(jiǎn)單分類為幾何信息方法[14-15]、顏色空間差異方法[16]和多級(jí)方法[17]。最近幾年,研究者們也在這個(gè)領(lǐng)域內(nèi)獲得了一些成果。2013年,Guo等[21]提出分割區(qū)域配對(duì)的陰影檢測(cè)算法,但是該算法僅利用了區(qū)域信息并且使用了三次分類器,陰影檢測(cè)的準(zhǔn)確性和效率都有待提高。2014年,Khare等[11]提出了一種高效的實(shí)時(shí)視頻陰影檢測(cè)算法。2016年,Tian等[22]利用新的4個(gè)基于物理的陰影特征,在室外圖像邊緣提取后,快速有效地從中檢測(cè)出陰影邊緣。但是該算法只適用于檢測(cè)單幅圖像的陰影邊緣。
本文提出了一種基于光流和機(jī)器學(xué)習(xí)的運(yùn)動(dòng)人體投射陰影檢測(cè)和跟蹤算法。本文的算法的主要流程為:
(1)人工交互獲得視頻中第N幀的真實(shí)陰影邊緣,獲取這些陰影邊緣點(diǎn)和普通邊緣點(diǎn)的特征集合分別作為正負(fù)樣本用于訓(xùn)練RF模型。
(2)每隔固定時(shí)間更新隨機(jī)森林模型。對(duì)于第N+1幀,使用光流跟蹤算法,得到N+1幀的初始邊緣結(jié)果。
(3)使用中位值光流算法找出跟蹤誤差較大的點(diǎn),在這些點(diǎn)的鄰域獲取Canny邊緣點(diǎn)作為候選點(diǎn),并用訓(xùn)練好的RF對(duì)這些點(diǎn)進(jìn)行分類。
在一幀圖片里,通常只有少量像素是用來(lái)描述邊緣的。因此,我們的算法首先對(duì)圖片進(jìn)行高斯濾波,然后通過(guò)Canny邊緣檢測(cè)算法[13]找出可能是邊緣的像素。為了得到可能屬于陰影邊緣的像素點(diǎn),我們選取了幾個(gè)特征放入支持向量機(jī)(隨機(jī)森林)里進(jìn)行訓(xùn)練[8]。
第一個(gè)特征代表太陽(yáng)光和天空光在陰影邊緣兩側(cè)的光照強(qiáng)度比。我們將光照側(cè)的RGB通道均值分別表示為 Hr、Hg、Hb,而陰影側(cè)表示為 Lr、Lg、Lb。之后用向量(tr,tg,tb)=(Lr/Hr,Lg/Hg,Lb/Hb)來(lái)表示陰影邊緣兩側(cè)光照強(qiáng)度的比值。最后,我們使用特征向量:
第二個(gè)特征代表陰影邊緣兩側(cè)光照強(qiáng)度的梯度。首先,我們得到陰影邊緣的像素點(diǎn)上顏色的梯度(Sr,Sg,Sb)。這個(gè)向量相當(dāng)于太陽(yáng)光在邊緣上的光照強(qiáng)度的梯度,但是也受到了局部的反射率值的影響。最后,我們使用特征向量來(lái)抵消反射帶來(lái)的影響,這樣可以只保留下光照強(qiáng)度的梯度。
第三個(gè)特征代表顏色的梯度方向(γr,γg,γb)。對(duì)任意可能屬于陰影邊緣,且反射率是局部連續(xù)的像素點(diǎn)來(lái)說(shuō),當(dāng)RGB的光照梯度都垂直于陰影邊緣的時(shí)候,圖片的梯度在所有的顏色通道上應(yīng)該具有相同的方向,而其他類型的邊緣則可能沒(méi)有這個(gè)特點(diǎn)。因此,第三個(gè)特征利用了這一點(diǎn),對(duì)每種顏色計(jì)算梯度方向上的不同(γrg,γgb,γbr) ,其中:
綜上所述,我們構(gòu)建了一個(gè)反映陰影邊緣特征的9維特征向量(t ,trb,tgb,δr,δg,δb,γrg,γgb,γbr) ,其中每一個(gè)特征在識(shí)別陰影邊緣的時(shí)候都提供了它獨(dú)有的特性。我們用這個(gè)特征集合來(lái)訓(xùn)練我們選擇的機(jī)器學(xué)習(xí)方法(隨機(jī)森林),從而區(qū)分邊緣候選邊緣中的陰影邊緣和其他邊緣。
為了保證陰影邊緣檢測(cè)的穩(wěn)定性,避免重復(fù)檢測(cè),我們首先使用了光流跟蹤[12]。但是光流跟蹤會(huì)帶來(lái)不可避免地累計(jì)誤差,特別是在視頻序列比較長(zhǎng)的時(shí)候,如果僅依賴光流跟蹤,即使是簡(jiǎn)單場(chǎng)景,誤差也會(huì)越來(lái)越明顯。如圖2的第一行,我們可以清楚地看到,僅使用光流算法時(shí),無(wú)論從準(zhǔn)確度還是連續(xù)性來(lái)看,效果都很不理想。特別是鏡頭大幅抖動(dòng)時(shí),光流算法基本失效。
圖1 第一行是光流跟蹤的結(jié)果,第二行是本文算法的結(jié)果
圖2 第一行是光流誤差圖,紅色點(diǎn)為誤差較大的點(diǎn),綠色點(diǎn)為準(zhǔn)確點(diǎn)。第二行是Canny結(jié)果圖
為了解決這個(gè)問(wèn)題,我們?cè)诠饬鞲櫟幕A(chǔ)上通過(guò)殘差中值定位誤差較大的點(diǎn)。我們使用了Median-Flow追蹤算法[19],追蹤的結(jié)果,如圖3所示。之后在誤檢測(cè)點(diǎn)(圖3中紅色的點(diǎn))的一定鄰域內(nèi)利用Canny邊緣置信,得到邊緣候選像素點(diǎn)。
圖3 使用更新策略后的分類結(jié)果
實(shí)驗(yàn)結(jié)果如圖2第二行所示,可以看出,經(jīng)過(guò)本算法的處理,光流跟蹤的準(zhǔn)確度和連續(xù)性明顯高于原始算法,保證了前后兩幀陰影邊緣檢測(cè)的穩(wěn)定性。
首先我們計(jì)算獲取周圍置信區(qū)域內(nèi)的待分類點(diǎn)的特征向量,然后利用之前訓(xùn)練好的隨機(jī)森林模型進(jìn)行分類。
但是,隨著相機(jī)和人影的運(yùn)動(dòng),當(dāng)前幀可能會(huì)出現(xiàn)新的場(chǎng)景,陰影可能會(huì)投射在新的場(chǎng)景材質(zhì)區(qū)域上,從而導(dǎo)致之前的RF模型在新出現(xiàn)的場(chǎng)景材質(zhì)區(qū)域上效果變差甚至失效。針對(duì)這種情況,我們采取了一種邊檢測(cè)邊更新的方法。
當(dāng)相機(jī)和人影運(yùn)動(dòng)時(shí),場(chǎng)景會(huì)發(fā)生變化,新的場(chǎng)景會(huì)進(jìn)入視頻,此時(shí)應(yīng)該對(duì)RF模型進(jìn)行更新,由于時(shí)間不好選擇,我們采用固定的時(shí)間間隔更新,本文采用的是每10幀更新一次。如圖3所示,藍(lán)色點(diǎn)是認(rèn)為屬于陰影邊緣的像素點(diǎn),紅色點(diǎn)則是判定為非陰影邊緣的像素點(diǎn)。可以看出,使用該方法后,隨機(jī)森林可以準(zhǔn)確地對(duì)新材質(zhì)區(qū)域的邊緣進(jìn)行分類。
本文使用的實(shí)驗(yàn)視頻來(lái)自于手持?jǐn)z像機(jī)和手機(jī)拍攝的視頻片段。首先,我們僅使用光流算法對(duì)上一幀圖片中已檢測(cè)到的陰影邊緣進(jìn)行跟蹤,得到的效果如圖1和圖2所示,可以看到,光流跟蹤的效果并不是很好,這是因?yàn)楣饬鞲櫛旧頃?huì)有一定的誤差,此誤差會(huì)隨著序列變長(zhǎng)而逐漸累積。為此,我們使用2.1和2.2中介紹的算法對(duì)光流跟蹤的結(jié)果進(jìn)行優(yōu)化。
第一組實(shí)驗(yàn)結(jié)果如圖4所示。第二組實(shí)驗(yàn)結(jié)果如圖5所示。第三組實(shí)驗(yàn)結(jié)果如圖6所示。當(dāng)從側(cè)面拍攝運(yùn)動(dòng)陰影時(shí),可以看到,我們的算法略有不足,但仍保持著不錯(cuò)的效果。
圖4 第一組實(shí)驗(yàn)結(jié)果
圖5 第二組實(shí)驗(yàn)
圖6 從側(cè)面拍攝運(yùn)動(dòng)陰影時(shí)的效果圖
另外,由于我們是在光流跟蹤錯(cuò)誤的鄰域使用隨機(jī)森林進(jìn)行分類來(lái)篩選出屬于陰影邊緣的點(diǎn),因此陰影內(nèi)部和外部可能會(huì)有一些誤分類的點(diǎn)。為了解決這個(gè)問(wèn)題,我們對(duì)上一幀檢測(cè)出的陰影邊緣進(jìn)行形態(tài)學(xué)梯度操作,作為下一幀的掩膜,進(jìn)而篩選掉一些誤檢測(cè)的像素點(diǎn)。
為了定量地判斷陰影邊緣位置的準(zhǔn)確性,我們計(jì)算了本算法檢測(cè)的陰影邊緣位置與ground truth的位置的差異。將兩者距離差距在1個(gè)像素之內(nèi)的標(biāo)注點(diǎn)認(rèn)作準(zhǔn)確點(diǎn)。我們對(duì)圖4、圖5和圖6中的實(shí)驗(yàn)進(jìn)行了結(jié)果分析。我們對(duì)每個(gè)實(shí)驗(yàn)的連續(xù)200幀效果圖,每隔10幀進(jìn)行一次準(zhǔn)確率的計(jì)算,結(jié)果準(zhǔn)確率能達(dá)到80%到85%。
從以上可以看出,本算法對(duì)簡(jiǎn)單場(chǎng)景下的運(yùn)動(dòng)陰影的檢測(cè)準(zhǔn)確度較高,對(duì)有深色區(qū)域(如地面的坑)和人影會(huì)進(jìn)入新材質(zhì)的場(chǎng)景也有較高的準(zhǔn)確度和穩(wěn)定性。
我們?cè)?.10GHz CPU,8G內(nèi)存的PC上運(yùn)行了本文算法,其中軟件環(huán)境為VS2013+OpenCV3.0。未經(jīng)代碼優(yōu)化的算法對(duì)于480×360分辨率的視頻處理速度為5fps。
本文在光流跟蹤算法的基礎(chǔ)上,通過(guò)多種途徑實(shí)現(xiàn)了移動(dòng)視點(diǎn)室外場(chǎng)景中的運(yùn)動(dòng)人體投射陰影的檢測(cè)與跟蹤。從實(shí)驗(yàn)結(jié)果可以看出算法的結(jié)果較為準(zhǔn)確,基本能達(dá)到目標(biāo)效果。但是本文算法還有很多的不足之處:①由于本算法會(huì)對(duì)光流跟蹤出錯(cuò)的點(diǎn)的鄰域進(jìn)行Canny置信,因此即使對(duì)陰影邊緣進(jìn)行形態(tài)學(xué)梯度操作進(jìn)而篩選一定的雜點(diǎn),也依然會(huì)有一些誤檢測(cè)的點(diǎn)保留下來(lái)。②在更為復(fù)雜的場(chǎng)景下,隨機(jī)森林的更新時(shí)機(jī)不好選擇。③光流和圖像分割需要耗費(fèi)較多的時(shí)間,使得算法的速度較慢。未來(lái)我們會(huì)針對(duì)這些問(wèn)題,進(jìn)一步的優(yōu)化算法。