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