管鑠磊,孫國強(qiáng)
(上海理工大學(xué) 光電信息與計算機(jī)工程學(xué)院,上海 200093)
隨著計算機(jī)技術(shù)和人工智能的不斷發(fā)展,計算機(jī)視覺的相關(guān)技術(shù)已經(jīng)深入到生活的各個方面。在圖像獲取的過程中,陰影往往是難以避免的,它的存在會導(dǎo)致圖像質(zhì)量的下降,影響圖像信息提取的精度,還將導(dǎo)致邊緣提取、目標(biāo)識別等算法的結(jié)果不穩(wěn)定甚至失敗。如果能夠檢測陰影,可以更好地定位目標(biāo),判斷目標(biāo)形狀和屬性。因此,研究陰影去除具有重要的實際意義和研究價值。
陰影去除算法包含兩個子任務(wù):陰影檢測和陰影去除。陰影檢測分為自動檢測方法和用戶交互的檢測方法。基于自動檢測的方法,主要根據(jù)亮度、梯度和紋理等信息確定圖像中的陰影。Finlayson[1]提出基于光照無關(guān)圖的檢測方法。Guo[2]采用相似特征的圖像片段進(jìn)行分類來檢測陰影,并使用消光算法去除陰影。Saritha[3]通過Shearlet變換選擇圖像的陰影區(qū)域,然后使用 inpainting后處理技術(shù)去除陰影。Sabri等人[4]提出了一種基于BEMD的陰影檢測與去除方法。用戶輔助方法是以用戶輸入為代價實現(xiàn)更好的陰影檢測和去除。Gong[6]需要兩種類型的筆畫來標(biāo)記光照和陰影像素,通過學(xué)習(xí)實現(xiàn)陰影檢測。Arbel[8]要求用戶指定多個紋理錨點以檢測陰影,但陰影分布在多個區(qū)域時,輸入開銷會增加。近年來,深度學(xué)習(xí)被應(yīng)用于陰影去除。文獻(xiàn)[9]提出了堆疊條件生成對抗網(wǎng)絡(luò)(ST-CGAN),可以實現(xiàn)陰影檢測和陰影去除的聯(lián)合學(xué)習(xí)。Le[10]使用了 SP-Net和M-Net兩種深度網(wǎng)絡(luò)來預(yù)測陰影參數(shù)和陰影去除。
以上算法中圖像只存在一種陰影強(qiáng)度,而在采取圖像時,會存在多個光源的情況或者物體的透光性不一致會造成各種物體產(chǎn)生的陰影強(qiáng)度不同。本文提出了一種可以去除單幅圖像中不同陰影強(qiáng)度的算法,采用局部樣本估計恢復(fù)陰影的光照。
現(xiàn)有的公開數(shù)據(jù)集 SBU[11],Guo[2],SRD[12]和ISTD[9]中圖像都只有一種陰影強(qiáng)度。而本文旨在研究具有不同陰影強(qiáng)度的圖像,圖1所示,我們對上述數(shù)據(jù)集采用Gong[5]文中的方法進(jìn)行陰影編輯,又通過圖像裁剪、合成得到具有不同陰影強(qiáng)度的圖像。
圖1 經(jīng)過陰影編輯過的圖像Fig.1 Is a shadow edited image
在檢測算法中,自動檢測算法對于和陰影的像素值極其接近的物體(例如井蓋,深色物體)可能錯分成陰影。本文采用交互式陰影檢測算法。所需要的只是用戶提供覆蓋相關(guān)陰影和非陰影像素的線條(圖4(a)),不需要明確區(qū)分陰影和非陰影像素,余下的像素自動分類和識別。線條經(jīng)過的區(qū)域,我們采用模糊聚類FCM進(jìn)行二分類。分類所需要的特征是歸一化的RGB強(qiáng)度、歸一化位置和局部熵值。
局部熵值定義為選擇圖像的鄰域灰度均值作為灰度分布的空間特征量,公式(1)是離散的圖像二維熵,反映了某像素位置上的灰度值與其周圍像素灰度分布的空間特征。
式中 (,)f i j為特征二元組出現(xiàn)的頻數(shù),N為圖像的尺度,i表示像素的灰度值, j表示鄰域灰度均值。
將上述特征和得到的分類結(jié)果作為 SVM 的訓(xùn)練集,預(yù)測其他像素的標(biāo)簽。通過高斯濾波,形態(tài)學(xué)處理得到最終的陰影掩模,如圖3(b)。
圖2 Guo[2],Gong[6]和Gong[7]和本文算法陰影去除效果Fig.2 Guo[1], Gong[6] and Gong[7] and the shadow removal effect of our algorithm
為了處理復(fù)雜的陰影(例如不同陰影強(qiáng)度和不同表面材質(zhì)的陰影),引入了局部陰影去除任務(wù)。針對原圖中每一塊連通的陰影都獨(dú)立的恢復(fù)光照。圖3顯示了提出的陰影去除方法的概述。(a)到(b)生成陰影掩模,(a)到(c)生成融合圖像,(a)到(d)超像素分割圖像,(g)是邊界點的采樣,(e)是區(qū)域塊圖和陰影掩模相乘的結(jié)果,(f)是2個尺度4個方向的紋理圖像,(h)對圖像邊界出的陰影點采樣,(i)是 RGB三個通道的陰影尺度場,(j)是由原圖和陰影尺度場得到恢復(fù)光照后的圖像。
圖 2展示了 Guo[2],Gong[6],Gong[7]和我們的算法的對比,實驗對象是具有不同陰影強(qiáng)度的圖像。從圖中可以看出 Guo[2]對于多陰影強(qiáng)度的圖像不敏感,算法采用全局思想,對全局陰影進(jìn)行去除,會出現(xiàn)圖中的情況。Gong[6][7]對于某部分的陰影會出現(xiàn)過度去除或弱去除。本文的算法可以有效的去除不同陰影強(qiáng)度的陰影。
圖3 陰影去除Fig.3 Shadow removal
3.1.1 陰影模型
陰影通常被定義具有本影和半影區(qū)域,半影存在于陰影的邊界,本影到半影陰影強(qiáng)度逐漸的變化,陰影圖像可以被認(rèn)為是陰影尺度層和陰影圖像的哈達(dá)瑪積,c是圖像中的通道。陰影恢復(fù)模型定義如下:
光照區(qū)域的尺度 Sc(x, y)為1,陰影區(qū)域的尺度Sc(x, y)范圍是0到1。
3.1.2 融合圖像
融合圖像提供光照不敏感層,它可以通過線性融合YCrCb色彩空間的通道來獲得。融合圖像 f被計算為3個歸一化通道iC的加權(quán)和,如下:
其中i是通道指數(shù),iσ是iC陰影部分的標(biāo)準(zhǔn)差與iC標(biāo)準(zhǔn)差的比值。φ是確定每個通道權(quán)重指數(shù)函數(shù)。其中α是像素強(qiáng)度值。
為了抑制紋理噪聲,將具有大小為1h(默認(rèn)為10)中值濾波器進(jìn)一步應(yīng)用于融合圖像 f。
3.1.3 區(qū)域分塊
我們將使用簡單線性迭代聚類 SLIC[13]算法對圖像粗略區(qū)域分塊,得到超像素分塊圖像,如圖3(d)。
3.1.4 紋理特征
選取2個尺度4個方向的Gabor濾波器提取圖像紋理特征,最終圖像每個像素都會得到一個8維的特征向量 [t1, t2, … ,t8],如圖3(f)所示。
為了得到穩(wěn)健的陰影尺度估計,需要對陰影邊界進(jìn)行采樣。首先,通過融合圖像配合陰影掩模得到像素。沿著垂直于陰影邊界的采樣線采用基于曲率的自適應(yīng)強(qiáng)度采樣提取RGB強(qiáng)度分布。這里沒有在每個陰影邊界點測量采樣線,避免了因為采樣間隔的不一致,在不均勻的邊界采樣線上造成偽影。采樣標(biāo)記計算如下。為陰影邊界點,圖像邊界處陰影點,如圖3(e)。
3.2.1 陰影邊界點采樣
其中n是邊界點的數(shù)量,m指定邊界點的索引,D是采樣標(biāo)記數(shù)組。采樣情況主要有三種,第一種情況,計算曲率數(shù)組mC ,大于閾值t時,該點設(shè)為采樣點。第二種情況,首尾邊界點設(shè)為采樣點。第三種情況,若邊界是直的,將該段的采樣間隔固定為最大值2t。
為了適應(yīng)半影區(qū)域的強(qiáng)度變化,我們計算融合圖像的梯度,建立光照梯度場,進(jìn)行引導(dǎo)采樣線長度的選擇,同時找到采樣線的兩個端點。
3.2.2 剔除異常強(qiáng)度樣本
異常的采樣強(qiáng)度樣本會導(dǎo)致不自然的陰影去除,接下來從兩個方面剔除了異常值。
(1)采樣線的長度。采樣線過長或者太短不利于圖像恢復(fù)光照。采用閾值法剔除采樣線小于1或者大于的樣本。
有效樣本滿足上式,sl有效樣本集的長度,sil單個樣本長度,lμ是指所有采樣線的平均長度,lσ是指所有采樣線的標(biāo)準(zhǔn)差。
(2)光照變化引起的異常值。樣本的強(qiáng)度異常值通常是由表面紋理引起的震蕩,會影響光照變化的估計。使用離散余弦變換DCT將采樣點下采樣到3個像素來粗略估計RGB強(qiáng)度的分布,并且轉(zhuǎn)換到對數(shù)域,可以有效的抑制紋理噪聲。用采樣點RGB通道的一階導(dǎo)數(shù)表示光照變化的特征,這樣每個采樣線有一個6維特征向量。采用DBSCAN聚類方法對樣本進(jìn)行分類。刪除最少數(shù)類別中樣本,去除光照變化引起的異常值。
3.2.3 圖像陰影邊界處理
本文算法基于局部陰影塊進(jìn)行處理,每一塊陰影作為獨(dú)立的部分進(jìn)行處理。采樣線處理后,需要對圖像陰影邊界處理。利用圖 3(e)結(jié)果,分別對每個連通陰影區(qū)域中的區(qū)域塊計算紋理特征向量均值和像素強(qiáng)度均值。采用模糊聚類FCM_S算法,對樣本進(jìn)行分類[15]。該算法可以有效的抑制噪聲。通過最小化公式(7)的目標(biāo)函數(shù),將區(qū)域塊進(jìn)行分類。
其中N代表落入 xk周圍窗口的鄰域集合, NR是其基數(shù)。參數(shù)α控制懲罰的效果。uik隸屬度矩陣,C是聚類中心個數(shù), xk是樣本數(shù)據(jù),vi是聚類中心。通過迭代更新 uik和 vi,最小化目標(biāo)函數(shù),得到最優(yōu)的區(qū)域塊分類結(jié)果,達(dá)到合并區(qū)域塊的目的。
3.3.1 半影尺度估計
由于光源的照射角度不同,強(qiáng)度不同和可能存在多個光源,導(dǎo)致陰影區(qū)域通常分為本影區(qū)域和半影區(qū)域。陰影尺度的估計首先需要估計出半影部分的陰影尺度。對樣本的RGB強(qiáng)度陰影尺度進(jìn)行建模如下:
其中x為采樣線的像素位置,x1和x2分別確定半影的起點和終點,K為本影區(qū)域內(nèi)采樣點的正尺度常數(shù) ( x<x1)。常數(shù)1是指落在光照區(qū)域。函數(shù)fc被 K , v1, v2參數(shù)化如下:
其中是三次函數(shù),y是輸入,v1,v2是用于定義照明變化函數(shù)的兩個參數(shù),并且與1x和2x線性相關(guān)。B是一條光滑的曲線,存在一階導(dǎo)數(shù),可以粗略地擬合強(qiáng)度的變化。采樣線參數(shù)可以通過線性二次規(guī)劃算法求解。
圖4 傳播陰影尺度場Fig.4 Propagation shadow scale field
3.3.2 傳播陰影尺度場及恢復(fù)光照
若使陰影恢復(fù)光照,需要構(gòu)建全圖陰影尺度場,本文算法是對不同陰影區(qū)域的尺度分別估計,最后得到陰影尺度場。上文得到了半影的恢復(fù)尺度,下面估計出的尺度。使用3.2.3的結(jié)果,使得不同強(qiáng)度樣本與類別對齊。不同陰影區(qū)域的的強(qiáng)度都不同,所以使用不同區(qū)域的強(qiáng)度樣本尺度來估計的尺度。圖 4(b)所示,估計出黃色點和藍(lán)色點的陰影尺度。光照區(qū)域恢復(fù)尺度為1。
圖像修復(fù)用于使用來自周圍的信息填充圖像的目標(biāo)區(qū)域。本文的陰影尺度估計使用圖像修復(fù)來傳播陰影尺度。采用了Bertalmio[14]提出的修補(bǔ)技術(shù)對陰影區(qū)域的尺度進(jìn)行估計和外推處理。圖4(c)(d)(f)展示了RGB三個通道的陰影尺度場,可以看出陰影強(qiáng)度不同的區(qū)域,陰影尺度也不一致。
在高度處理圖像時,色調(diào)和對比度等特征的差異,可能出現(xiàn)在陰影校正區(qū)域。在恢復(fù)光照過程中,應(yīng)用了非線性操作,打破了像素之間的線性關(guān)系。所以,要對恢復(fù)光照的圖像進(jìn)行色彩校正。
本文將恢復(fù)光照的圖像在CIELAB色彩空間進(jìn)行調(diào)整。偽影是由于強(qiáng)度差異造成的,色彩校正的來源來自半影區(qū)附近的光照像素lP和陰影像素uP。用oI表示需要調(diào)整的像素,采用雙邊濾波器對aI濾波得到圖像 Ib。計算高頻變化圖像 Ie= Ia- Ib。通過公式(10)計算校正后的圖像。
其中 M ( x)是中值絕對偏差函數(shù),計算半影兩側(cè)像素的中值絕對偏差的比值,得到校正后的圖像。最后,使用公式(11)消除色彩通道中的重疊。通過圖像的校正去除視覺上的偽影,使圖像更具可視性。
本文陰影檢測和陰影去除算法如圖5所示。
本文算法使用 MATLAB開發(fā)平臺進(jìn)行編程實現(xiàn),選擇配置為Inter四核CPU,主頻為2.4 GHz,內(nèi)存為 8 GB的 PC機(jī)。算法對 Guo[2],SRD[12]和ISTD[9]陰影編輯過的數(shù)據(jù)集進(jìn)行定量評估。
圖5 陰影去除流程圖Fig.5 Shadow removal flowchart
從圖6可以看出本文算法更易去除不同強(qiáng)度的陰影。對于地板、公路面、墻壁、巖石等部分的陰影,本文算法有很好的視覺效果,同時紋理得到很好的保留。Guo[2]算法能夠去除部分陰影,弱化陰影強(qiáng)度比較強(qiáng)的陰影,對于多種強(qiáng)度的陰影圖像適應(yīng)性較弱。Gong[6]和Gong[7]算法會對不同陰影強(qiáng)度圖像的部分陰影過度去除或者弱去除。
(1)均方根錯誤率(RMSER)
均方根誤差(RMSE)衡量gtI和reI之間的像素差異。 我們使用 Gong[7]提出的錯誤率,以消除由于具有不同大小和密度陰影的圖像的RMSE而引起的偏差。RMSER計算如下:
(2)峰值信噪比(PNSR)
PNSR使用最大像素值計算gtI和reI之間的均方誤差之比。PNSR值越高表示圖像質(zhì)量越好。PNSR計算如下:
(3)結(jié)構(gòu)相似度指數(shù)(SSIM)
圖6 各種算法下陰影去除結(jié)果對比Fig.6 Comparison of shadow removal results under various algorithms
SSIM是亮度,對比度和結(jié)構(gòu)這三個相似性度量的加權(quán)乘積。它評估圖像之間結(jié)構(gòu)相似性。SSIM值越高結(jié)果越好。SSIM計算如下:
式中,xμ是x的平均值,yμ是y的平均值,xσ是x的方差,yσ是y的方差,xyσ是和y的協(xié)方差。和2c是常數(shù)。
將本文提出的陰影去除算法與其他算法進(jìn)行對比,與 Guo[2],Gong[6]和 Gong[7]的算法進(jìn)行對比。分別計算不同數(shù)據(jù)集的陰影去除的評估指標(biāo),即RMSER,PNSR和SSIM。在表 1中,RMSER1和RMSER2分別是對圖像全局和陰影區(qū)域像素進(jìn)行評估的 RMSER值。經(jīng)過對比發(fā)現(xiàn),在多數(shù)情況下,本文的算法對具有不同陰影強(qiáng)度的圖像的陰影去除效果優(yōu)于其他算法。通過本文的方法獲得的RMSER小于使用其他現(xiàn)有方法獲得的RMSER值。PNSR和SSIM 的指標(biāo)也為本文算法陰影去除提供了良好的值。SSIM值接近最大值1表示通過這些方法得到的與對應(yīng)的 Igt非常相似。
表1 本文算法與其他算法定量比較Tab.1 Quantitative comparison between the algorithm in this paper and other algorithms
本文提出了基于局部恢復(fù)陰影的算法,可以去除圖像中不同強(qiáng)度的陰影。首先通過人工交互得到訓(xùn)練數(shù)據(jù),進(jìn)一步得到陰影掩模。然后,通過預(yù)處理得到融合圖像,紋理圖像和超像素分割圖像,用于邊界點陰影尺度估計,使用圖像修復(fù)算法得到全圖陰影尺度場。最后,恢復(fù)陰影部分的光照,對色彩進(jìn)行校正。實驗表明,該算法有效的去除了圖像中不同陰影強(qiáng)度的陰影。與其他陰影去除算法進(jìn)行定量比較,本文算法的結(jié)果取得了良好的結(jié)果。在未來的研究中,將繼續(xù)優(yōu)化陰影檢測的準(zhǔn)確度和去除復(fù)雜環(huán)境下的陰影。