王淳
(四川大學計算機學院,成都610065)
陰影是大多數室外場景中常見的現象,在實際的圖像處理中會帶來許多問題。在圖像分割中,陰影邊界可能與真實物體邊界混淆。在運動估計中,光流的計算容易受到陰影引起的光照變化的影響。在監控中,由于陰影的影響,可能會跟蹤錯誤的目標。因此,在計算機視覺領域,陰影檢測是一項非常重要且有意義的工作。
目前,單幀圖片的陰影檢測已經有許多成熟的方法。從技術角度出發,這些方法大體上可以分為兩類:基于物理模型的陰影檢測和基于陰影特征的陰影檢測。基于物理模型的陰影檢測方法是指通過先驗信息,如光照、場景信息、運動目標等,建立陰影模型,從而實現對陰影的檢測。Xiong等人[1]使用Retinex增強算法分別處理圖像中的陰影區域和非陰影區域,通過在陰影邊緣強制添加平滑光和引入陰影邊緣遮罩,降低了陰影去除過程中陰影邊緣的影響。Tian等人[2]基于圖像形成理論,推導了描述陰影與其非陰影背景之間衰減關系的三色衰減模型(TAM)。根據普朗克黑體輻照度定律,利用太陽光和天光的光譜功率分布(SPD)確定TAM的參數,提出了一種基于TAM的多步陰影檢測算法。基于陰影特征的陰影檢測是根據陰影區域和非陰影區域的特征,如亮度差、梯度、紋理等,訓練分類器,從而識別出陰影與非陰影。
近年來,結合陰影特征,通過機器學習等方式來檢測陰影與非陰影的方法得到了越來越多的關注。2010年,Zhu等人[3]討論了從單色自然圖像中識別陰影的問題。從光照、紋理和梯度特征出發,訓練分類器從而提升決策樹,并集成到一個條件隨機場中,增強像素標簽的局部一致性。2010年,Lalonde等人[4]假設室外場景中構成地面的材料類型相對有限,建立了一個由三層過程組成的檢測器,包括在一組圍繞每個圖像邊緣計算的陰影敏感特征上訓練決策樹分類器、基于條件隨機場的優化以對檢測到的陰影邊緣進行分組從而生成相應的陰影輪廓以及合并任何特定訓練的分類器來檢測圖像中的地面。2013年,Guo等人[5]提出了一種基于區域的方法,預測分割出來的不同區域之間的相對光照條件,并按對進行分類。2016年,Tian等人[6]通過驗證Canny邊兩邊的像素值是否滿足由陰影特性導出的三個陰影驗證準則,將邊緣分為陰影邊緣和非陰影邊緣。
除去傳統的陰影檢測方法,水平集方法在醫學圖像分割、邊緣檢測等方面有很大的應用,是目前非常受關注的研究方向,而活動輪廓模型是此方法中典型的模型之一。活動輪廓模型是一條能量遞減曲線,分為基于邊界和基于區域兩類,總體的目的都是通過演化輪廓使得內部能量和外部能量之和最小,從而讓演化輪廓最終停止于目標邊緣附近。1989年,Mumford等人提出了Mumford-Shah模型(即MS模型)[7],這是一種基于區域的模型。2001年,Chan等人簡化了MS模型,提出Chan-Vese模型(即CV模型)[8]。
但是,水平集方法多用于醫學圖像等灰度圖的分割。王斌等人[9]提出了一種基于圖像邊緣和區域信息的先驗水平集圖像分割方法,有效地分割出圖像中的目標。朱曉舒等人[10]提出了一種新的基于凸優化的自適應CV模型,有效地提高了分割效率。薛維琴等人[11]提出一種耦合了血管影像的幾何信息、邊緣信息和區域信息的水平集分割方法,在分割嚴重灰度不均勻的血管造影影像上能夠準確提取血管,并精確定位血管邊緣。
本文基于傳統的Chan-Vese模型,引入了形狀模板和錨點,將水平集方法應用于單幀彩色圖片的陰影檢測,克服了傳統CV模型僅僅依賴灰度進行演化并且容易陷入局部最優的問題,得到了較為準確的陰影邊緣。
2001年,Chan和Vese簡化了MS模型,對演化過程中的曲線進行了平滑約束,提出了CV模型。該模型在原來的能量函數的基礎上,添加了長度項和面積項,CV模型的能量函數如下:

其中:λ1,λ2>0,ν≥0(一般取λ1=λ2=1,ν=0);邊界C將圖像劃分為outside(C)和inside(C)兩塊區域;c1和c2分別是演化曲線C內部和外部的灰度均值。通過計算內部區域圖像灰度值與常數c1的平方誤差以及外部區域圖像灰度值與常數c2的平方誤差,驅使曲線向目標邊緣演化。能量函數的第一項和第二項為擬合項,負責使曲線C向目標輪廓演化;第三項是長度項,使獲得的能量曲線足夠短和光滑。
構建好能量泛函之后,通常采用水平集方法來使得能量函數最小化。將曲線C用水平集函數?(x,y)代替,當點(x,y)在曲線 C 內部時,?(x,y)>0;當點(x,y)在曲線 C外部時,?(x,y)<0;當點(x,y)恰好在曲線 C上時,?(x,y)=0。于是:

其中:H(?)是海氏(Heaviside)函數。演化曲線C內部和外部的灰度均值c1和c2的計算公式如下:

通過求解公式(2)對應的歐拉-拉格朗日方程,得到如下的演化方程:

在傳統的活動輪廓模型常應用于的場景中,由于往往是對醫學圖像等灰度圖進行圖像分割或者邊緣檢測,因此CV模型可以得到較好的結果。但在單幀彩色圖片的陰影檢測中,由于場景的復雜性,陰影往往會落于多種不同材質上面,從而使得待檢測的陰影被分為亮度差異較大的幾部分,在這種情況下,傳統的CV模型的效果會變差甚至失效,因此,本文加入了形狀模板約束,使得演化輪廓的過程受到該因素的影響。
形狀模板約束的能量函數的定義方法有許多種,最常見的分為單目標和多目標兩種。對于單目標的形狀先驗模型,可表示為,但計算復雜度較高,需要針對每一個像素點,分別去計算它們到形狀模板輪廓的最小值,不適用于在很多場景中都要求計算效率的陰影檢測工作。文獻[12]提出了一種新的表示形式,給每個像素分配一個該像素位于形狀內部的概率,一定程度上解決了上述方法的問題。形狀概率的表示形式如下:

該方法計算復雜度較低、表示形式簡單,因此,文章采用該方法來設定形狀模板。形狀約束的能量函數如下:

求導后得到添加形狀先驗模板的CV模型:

圖1是添加形狀模板前后的效果對比。

圖1
錨點限制項是由Ukwatta等人[13]提出的,文章采用此項能量,在細節方面進一步提升陰影檢測的準確率。添加錨點項后的效果如圖2所示。

圖2
從圖2中可以看出,增加了錨點項后,結果會在細節上更加準確。實際上,錨點項的作用就是在錨點附近產生一個吸引力,使得演化輪廓的過程中一定會經過預先設定的錨點。錨點項的定義為:其中NA是錨點的個數,Ai(x)是一個以錨點xi A為中心,rA為半徑的圓形區域:


從(8)、(9)兩式可以看出,由于活動輪廓模型的最終目的是使得內外能量之和最小,因此若要使得錨點項的能量最小,當演化輪廓在一個錨點半徑rA的范圍內時,就會受到錨點的吸引力,使得演化輪廓經過錨點。當演化輪廓經過所有的錨點時,錨點項的能量便達到最小值。
首先是一組草地上的例子,見圖3。

圖3
由圖3可以看出,在形狀模板結果已經很準確的情況下,便沒有必要添加錨點。
如圖4,形狀模板有效地控制了演化輪廓,而添加錨點項后,細節部分更為精確。

圖4
如圖5所示,當陰影位于不同材質的區域使得同一個目標的陰影分為亮度差異較大的幾部分時,形狀模板的作用便會減弱,此時添加錨點有助于吸引演化輪廓經過錨點,從而得到較好的結果。

圖5
本文提出了一種改進的CV模型,通過添加形狀模板約束和錨點約束,實現了單幀彩色圖片的陰影檢測,特別是解決了當陰影由于材質原因分為亮度差異較大的幾部分時的問題。單幀圖片的陰影檢測已經有許多成熟的方法,本文舍棄傳統的陰影檢測方法,從水平集這個角度切入,得到了較好的結果。
該方法的不足之處在于,形狀模板和錨點的特殊性使得該方法處理視頻中的陰影檢測問題時需耗費大量的人力以及時間,因此不適用于對視頻的陰影檢測。在后續的工作中,將重點解決形狀模板的初始化以及錨點設置的問題,從而使得該方法可以進一步應用于視頻中的陰影檢測。