郭碧茹,孔韋韋,陳 斌
1.西安郵電大學 計算機學院,西安 710121
2.陜西省網絡數據分析與智能處理重點實驗室,西安 710121
機器視覺應用過程中涉及的檢測算法與采圖效果有很強的關聯性。然而,在實際場景中,由于環(huán)境光的限制,導致很多情況下無法獲得理想的打光效果。譬如,當目標物體的表面較為光滑時,可能會出現反光現象,而反光部分在圖像中通常是顯著區(qū)別于周圍顏色的高光區(qū)域,在該區(qū)域中,目標物體原有的紋理、形狀、顏色等特征都會出現不同程度的減弱甚至消失。與此同時,圖像中高光區(qū)域的存在,還會直接導致圖像分割[1]、圖像識別[2]及特征匹配[3]過程中產生錯誤。因此,圖像中高光區(qū)域的存在是影響機器視覺應用的一個重要問題,有必要研究如何去除圖像中的高光從而恢復物體的原有特征的有效方法。
針對該問題,國內外主流解決方法大致分為兩類:基于實驗室標定的序列圖像高光補償方法[4]以及基于雙色反射模型[5]的單張圖像高光去除方法。因為基于序列圖像高光補償的方法對光源的數量和位置變化有要求[6],實際情況下往往難以獲得合格的序列圖像,因此,對單張圖像的高光去除方法顯得尤為重要。
基于單張圖像的高光去除方法主要基于由鏡面反射和漫反射構成的雙色反射模型。Shafer[5]率先提出了能夠分離鏡面反射分量的雙色反射模型。之后,Tan等[7]根據Shafer的研究,將像素點投射到最大強度色度空間,采用從鏡面到漫射機制和強度對數微分的方法,分離出了漫反射分量和鏡面反射分量,但在分離過程中,像素點色度發(fā)生了變化,從而導致圖像的顏色失真;鄭芝寰等[8]為解決顏色失真的問題,提出基于色度聚類的高光區(qū)域選取算法和利用MSF圖像尋找高光點的體色度的算法,但計算過程較為復雜;Yang等[9]基于漫反射分量的最大部分在彩色圖像中平滑變化的特性,將低通濾波器應用到顏色分量的最大部分用于估計鏡面反射分量,該方法可以去除高光,但是對于黑色像素點會出現褪色和紋理缺失現象;高如新等[10]針對褪色和紋理缺失問題,將漫反射分量的像素點和鏡面反射分量的像素點加以分離,應用雙邊濾波器對兩類像素點的最大漫反射色度分別進行了估算,去除了鏡面反射分量,但由于雙邊濾波出現了梯度反轉,導致一些圖像出現了偽影[11];許麗等[12]針對高光區(qū)域顏色失真和紋理缺失的現象,采用x-means聚類算法,在最大最小色度空間進行像素聚類,最終將漫反射像素點與鏡面反射像素點分離,但x-means聚類算法需要用戶初始輸入最小聚類數和最大聚類數方可運行,這導致聚類結果依賴于人工設定的聚類數。
在此背景下,為了防止黑色像素點褪色、較好地保留圖像邊緣和紋理信息、避免偽影,本文提出了一種導向濾波的高光去除改進算法。該算法通過設定閾值將圖像中的黑色像素加以分離,并分別估算黑色像素和其他像素的最大漫反射色度;同時,該算法還利用導向濾波器保邊濾波和梯度保持的優(yōu)點,對最大色度圖進行了平滑處理,最大限度地保留了圖像的邊緣和紋理,避免了偽影效應;此外,本文在分離漫反射分量時,根據公式中分母與設定閾值的關系,將像素點劃分為兩類,并采用不同方法實現了漫反射分量的精確分離。根據實驗結果,該算法相比于傳統算法,在防止黑色像素褪色、保留圖像邊緣紋理信息和避免偽影方面均表現出優(yōu)勢。
本文算法基于Tan等的基于雙色反射的高光去除模型[7]。任意光線的反射能量都可以分為漫反射和鏡面反射兩種分量,不同光線中兩種分量所占的比例不同。文獻[5]提出,圖像中任意像素點的反射光線可以表示為:
文獻[7]對圖像中任意像素點的色度進行了定義:其中,α(x)代表像素顏色有關的色度,β(x)代表漫反射色度,γ(x)代表鏡面反射色度。
同時,文獻[7]定義任意像素點的最大色度為:
定義任意像素點的最大漫反射色度為:
假設光源為標準白光,文獻[7]提出,圖像中每一個像素點的漫反射分量I d(x)可以表示為:
其中,αmax(x)、Imax(x)容易求出,但最大漫反射色度βmax(x)并非已知。因此,若能求解βmax(x),便可得到每個像素點的漫反射分量,故圖像的高光去除問題可以簡化為每個像素點的最大漫反射色度βmax(x)的求取問題。
進一步的,文獻[9]提出,最大漫反射色度βmax(x)可用式(7)進行估計:
給定一幅含高光的toys圖像(圖1(a)),文獻[9]對每個像素點的最大色度加以求解,得到了toys圖像的最大色度圖(圖1(b))。設置最大漫反射色度βmax(x)的估計值為常數0.5,使用式(5)、式(6)提取出漫反射分量,然后根據所提取的漫反射分量計算最大漫反射色度,得到最大漫反射色度圖(圖1(c))。通過觀察最大漫反射色度圖不難發(fā)現,在表面顏色相似的局部區(qū)域,最大漫反射色度的方差非常小,具有局部平滑的特征。進一步比較最大色度圖和最大漫反射色度圖得知,二者的區(qū)別僅在于高光部分。因此,對最大色度圖應用低通濾波,將會平滑高光引起的方差,得到真正的最大漫反射色度βmax(x)。
圖1 文獻[9]的最大色度圖和最大漫反射色度圖Fig.1 Maximum chromaticity image and maximum diffuse chromaticity image of literature[9]
因而,最大漫反射色度的估算值βmax(x)所對應的灰度圖可以作為引導圖來平滑最大色度圖αmax(x),從而獲得每個像素點濾波后的最大色度顯然,濾波后的最大色度比αmax(x)更接近βmax(x)。然而,在平滑過程中,漫反射像素點也會被鏡面反射像素點影響,導致漫反射像素點濾波后的灰度值略低于濾波前的灰度值,即漫反射像素點的略小于αmax(x)。然而,由于漫反射像素點不包含鏡面反射分量,其最大漫反射色度值與最大色度值相等。因此,文獻[9]為了消除漫反射像素點所受到的影響,選取與αmax(x)兩者中的最大值,作為真實的最大漫反射色度值βmax(x),即:
最后,將βmax(x)代入式(6)得到,再將代入式(5)中,可得到圖像的漫反射分量I d(x),I d(x)即為原圖像去除高光后的圖像。
基于第1章的分析可以得到傳統的圖像高光去除算法。
步驟1提取原圖像中每個像素點的RGB三通道值,代入式(3)計算每個像素點的最大色度αmax(x),得到最大色度圖。
步驟2通過式(7)計算每個像素點的最大漫反射色度估算值βmax(x),得到最大漫反射色度估算圖。
步驟3采用雙邊濾波器對最大色度圖過濾高光,并在此過程中,將最大漫反射色度估算圖作為濾波引導圖像,得到濾波后的最大色度
步驟4在得到每個像素點的濾波后的最大色度后,將其與濾波前的最大色度αmax(x)進行比較,取較大值作為真實的最大漫反射色度值βmax(x)。
步驟5將βmax(x)代入式(6),得到,再將代入式(5)中,得到每個像素點的漫反射分量I d(x),由每個像素點的漫反射分量I d(x)構成的圖像即為原圖像去除高光后的圖像。
通過研究發(fā)現,基于現有文獻所提出的算法,去除高光后的效果圖中有部分原圖像顏色為黑色的區(qū)域在去除高光后發(fā)生了褪色,且同時產生了光暈。文獻[9]和文獻[13]中的cups圖像的原圖像和去除高光后的效果圖如圖2所示。
圖2 文獻[9]、文獻[13]去除高光效果圖Fig.2 Highlight removal effect of literature[9]and literature[13]
在圖2(b)和圖2(c)中,女孩的頭部以及頭部以上區(qū)域由原圖像中的黑色褪色為了灰色,并產生了不同程度的光暈。由此發(fā)現,上述文獻在對黑色的像素點進行去高光處理時出現了錯誤。究其原因,文獻[9]和文獻[13]在步驟2中均采用傳統算法計算最大漫反射色度的估算值,而傳統算法利用式(7)計算最大漫反射色度估算值。對于黑色的像素,RGB三通道值均較小且RGB三通道值之間差值較小,使得式(7)中分子αmax(x)-αmin(x)的值接近于0,導致計算出的最大漫反射色度的估算值與實際值產生了偏差。
因此,本文設定閾值th1∈[10,20],即th1為區(qū)間[10,20]中的某一設定值。當某像素點的三通道值中的最大值小于閾值th1時,將該像素點視為黑色像素。由于圖像中的高光通常接近于白光,而黑色像素三通道值中的最大值小于閾值th1,因此可以認為黑色像素不含高光部分,即黑色像素點為漫反射像素點。漫反射像素點的最大漫反射色度等于像素點的最大色度。因此,區(qū)別于傳統算法,將包括黑色像素在內的每個像素點的最大漫反射色度的估算值β?max(x)進行統一計算,本文將黑色像素的最大漫反射色度的估算值β?max(x)置為最大色度值αmax(x),從而避免對黑色像素的最大漫反射值產生錯誤估計。
漫反射像素點的最大漫反射色度值等于最大色度值的證明如下:
基于上述改進的最大漫反射色度估算值的計算方法,得到本文的最大漫反射色度估算圖,并采用傳統算法計算得到傳統最大漫反射色度估算圖。本文最大漫反射色度估算圖和傳統最大漫反射色度估算圖如圖3所示。
圖3 本文最大漫反射色度和傳統最大漫反射色度估算圖Fig.3 Proposed maximum diffuse chromaticity and traditional maximum diffuse chromaticity estimation images
可以看出,相比于傳統的最大漫反射色度估算圖,本文對于黑色像素的最大漫反射色度的估計更為準確,使得黑色像素的區(qū)域更為顯著,圖像的邊緣和細節(jié)更清晰,有利于最大漫反射色度估算圖在作為引導圖引導平滑過程時能夠更好地保留圖像邊緣和細節(jié)。
雙邊濾波器雖然能保邊濾波,但對于圖像的細節(jié)和紋理信息保留較差,且在像素點周圍相似亮度的像素點很少時,輸出亮度會變暗,引起梯度反轉,導致光暈偽影的出現。針對雙邊濾波器的缺陷,在傳統算法的步驟3中,本文決定采用導向濾波器[14]來平滑高光。
導向濾波器引入了一個包含導向圖像和輸入圖像的局部線性模型,其中,導向圖像作為濾波內容圖像,對輸入圖像進行引導濾波,這就保證了導向濾波既可以平滑噪聲,又可以保留導向圖像的邊緣紋理信息。同時,導向濾波的權值不僅取決于歐式距離,還取決于亮度差,這就避免了由于亮度差導致的偽影效應。
假設導向濾波的輸入圖像為P,輸出圖像為q。則輸出圖像q可以表示為:
其中,I i為導向圖像I的像素值,ωk為濾波窗口為窗口ωk中像素點的個數,另外,
其中,μk和分別是導向圖I在窗口ωk中的均值和方差,ε是正則化參數。
為了方便對比,本文分別采用雙邊濾波器和導向濾波器,在相似的濾波強度下進行平滑濾波,雙邊濾波的效果圖和導向濾波的效果圖如圖4所示。
圖4 雙邊濾波和導向濾波效果圖Fig.4 Result image of bilateral filter and guided filter
可以看出,圖4(a)中存在較多未被完全平滑的高光區(qū)域,如右側玩具的雙臂,同時部分漫反射像素點被過度平滑,如圖4(a)框選部分的物體已經被平滑得很模糊;此外,相比圖4(b),圖4(a)的邊緣部分較為模糊。細節(jié)信息的保留程度也較差,例如在圖4(a)中,魚眼和魚尾部位的紋理相比圖4(b)顯得模糊。因此,總體上看,相比于雙邊濾波,導向濾波在邊緣和細節(jié)方面表現更好。
此外,導向濾波算法的時間復雜度與濾波半徑的大小無關,因此在采用較大濾波半徑處理圖像時效率更高;而采用雙邊濾波平滑高光,包括了兩個卷積運算,時間成本較高。本文采用導向濾波器在運行效率上有明顯的提升。在上述圖4的濾波處理中,雙邊濾波的處理時間為5.054 s,導向濾波的處理時間為0.145 s,導向濾波的處理效率提高了35倍。
在傳統算法的步驟5中,將βmax(x)代入式(6)中可得到圖像的漫反射分量∑I d(x)。
在仿真實驗過程中,當式(6)的分母αmax(x)(3βmax(x)-1)接近于0時,得到的∑I d(x)數值相比真實值大很多。因此,本文針對漫反射分量的計算方法加以了改進。
記f(x)=αmax(x)(3βmax(x)-1),閾值th2∈[10-6,10-4],即th2為區(qū)間[10-6,10-4]中的某個設定值。依據閾值th2將圖像中的像素點分為兩類,第一類像素點為f(x)≤th2的像素點,第二類像素點為f(x)>th2的像素點。
對于第一類像素點,因f(x)≤th2,則有f(x)→0,因此有αmax(x)→0或(3βmax(x)-1)→0。下面對αmax(x)→0和(3βmax(x)-1)→0兩種情況分別作以分析:
(1)αmax(x)→0的情況
(2)(3βmax(x)-1)→0的情況
若(3βmax(x)-1)→0,則有:
由此可得出:因為假設光源為標準白光,而標準白光的色度坐標[14]為,R為,G為B為,因此有:
由式(16)可知,該像素點的鏡面反射分量為0,因此,該像素點為漫反射像素點。因此,該像素點的三通道值的漫反射分量分別與該像素點的三通道值相同。
綜合上述(1)和(2)兩種情況可得出,第一類像素點的三通道值的漫反射分量分別與該像素點的三通道值相同。
對于第二類像素點,由于f(x)>th2,因此可直接根據式(6)與式(5)計算漫反射分量I d(x)。
綜上,本文在傳統算法的步驟5中計算圖像中每個像素點的漫反射分量時,首先根據f(x)和th2的大小關系判斷像素點屬于哪一類像素點,然后根據像素點的類別采用不同方法計算該像素點的漫反射分量,這樣避免了在分母接近于0時對∑I d(x)的錯誤計算。
綜合本節(jié)內容,得到本文的圖像高光去除算法流程圖如圖5所示。
圖5 本文算法流程圖Fig.5 Flow chart of algorithm in this paper
為了驗證本文算法的有效性,本文選取目前視覺效果較好的文獻提出的算法加以比較。本文所使用的計算機配置為Intel64 Family 6 Model 142 Stepping 11 GenuineIntel~1 800 MHz的處理器,4 GB內存,64位版本的Windows操作系統以及MATLAB R2019b軟件。
Toys圖像去除高光后的效果如圖6所示。不難看出,在圖6(c)、圖6(d)中,魚眼白部位的顏色發(fā)紅,與原圖像該位置的白色差別明顯。這是因為魚眼白部分與魚眼珠、眼圈部分亮度差異較大,文獻[10]和文獻[13]在雙邊濾波過程中產生了梯度反轉,使魚眼白部分受到周邊梯度域顏色的影響產生了偽影。本文由于采用了導向濾波,魚眼白部位的顏色沒有發(fā)生偏差,與輸入圖顏色相同。并且,本文算法得出的圖像邊緣輪廓和紋理細節(jié)都更為清晰,視覺效果更好。
圖6 toys圖像去除高光效果圖Fig.6 Highlight removal effect of toys image
為了進行更為全面的比較,本文針對masks、cups、fruits、animals四幅圖像進行去除高光處理,并與文獻[11]、文獻[13]、文獻[15]得出的結果進行了對比。
圖7給出了masks圖像去除高光后的效果圖。masks圖像包括有較多紋理??梢钥吹轿墨I[13]的算法在臉部具有明顯的光暈,文獻[11]、文獻[15]臉部的高光也去除得不太徹底。綜合來看,本文算法對高光的去除較為徹底。
圖7 masks圖像去除高光效果圖Fig.7 Highlight removal effect of masks image
圖8給出了cups圖像去除高光后的效果圖??梢钥吹?,相比于原圖像,文獻[11]算法得到的圖像對比度不佳;基于文獻[13]的算法,女孩的頭頂產生了光暈,產生光暈的原因在于該方法不能很好地處理黑色像素;此外,文獻[13]和文獻[15]右側杯子的高光去除也不徹底。本文算法女孩頭頂沒有光暈,且右側杯子的高光去除得較好。
圖8 cups圖像去除高光效果圖Fig.8 Highlight removal effect of cups image
圖9給出了fruits圖像去除高光后的效果圖。該圖像在不同水果表面上具有不同形狀的高光??梢园l(fā)現,文獻[13]和文獻[15]對于黃色水果的高光去除得不是很徹底,本文算法在視覺效果上與真實值最為接近。
圖9 fruits圖像去除高光效果圖Fig.9 Highlight removal effect of fruits image
圖10給出了animals圖像去除高光后的效果圖??梢钥吹接覀韧米佣涮幍母吖獗容^難以去除。文獻[11]的算法高光去除得較好,但圖像紋理模糊;文獻[15]因為去除了過多的高光導致線條變淡;文獻[13]和本文算法去除高光效果相當,但本文色彩更接近于真實值。
圖10 animals圖像去除高光效果圖Fig.10 Highlight removal effect of animals image
本文算法與其他算法的峰值信噪比值(PSNR)對比結果如表1所示。
表1 不同算法的PSNR值對比Table 1 Comparison of PSNR of different algorithms dB
從表1可以看出,與其他算法相比,本文算法對應的PSNR指標表現最好,與視覺效果表現基本一致。因此,本文算法無論在主觀視覺效果還是客觀評價結果方面均優(yōu)于傳統算法。
本文算法與其他算法的運行時間對比結果如表2所示。
表2 不同算法的運行時間對比Table 2 Comparison of running time of different algorithms s
從表2可以看出,在算法運行時間方面,本文算法的表現最優(yōu)。文獻[11]在使用x-means聚類算法過程中,需要迭代進行2-means聚類,并計算貝葉斯信息準則分數以確定最優(yōu)分類數,從而導致運行時間過長;文獻[13]和文獻[15]也涉及到聚類算法,需要多次迭代確定聚類簇,導致運行時間較長。本文算法采用的導向濾波為時間復雜度為O(1)的快速濾波器,整體提高了運行效率,使得本文算法適用于實時處理。
針對圖像高光去除問題,本文進行了理論分析和實驗觀察,從中發(fā)現傳統算法的一些問題。首先,傳統算法在計算最大漫反射色度時對黑色像素沒有進行分開處理,導致對黑色像素的最大漫反射色度估算產生偏差;其次,傳統算法使用雙邊濾波器對最大色度圖進行濾波,導致紋理細節(jié)部分沒有得到很好保留且出現了偽影;此外,傳統算法在濾波后計算漫反射分量時,忽略了公式中分母接近于0的情況,導致計算結果比真實值大。針對傳統算法中存在的上述缺陷,本文提出了一種導向濾波的高光去除改進算法。首先,通過閾值th1分離出圖像中的黑色像素,并分別估算黑色像素和其他像素的最大漫反射色度;其次,利用導向濾波器保邊濾波和梯度保持的優(yōu)點,對最大色度圖進行平滑處理,從而最大限度地保留了圖像的邊緣和紋理,避免了偽影效應,且相比于采用雙邊濾波,運行效率得到了提升;此外,本文在分離漫反射分量時,根據公式中分母與閾值th2的關系,將像素點分為兩類,分別采用不同方法實現了漫反射分量的精確分離??陀^評價指標和主觀視覺感受表明,本文算法相比于傳統算法,在防止黑色像素褪色、保留圖像邊緣紋理信息和避免偽影方面均表現出優(yōu)勢。
然而,本文對于高光區(qū)域占比較大的圖像處理效果不太理想,這是因為本文是將高光區(qū)域作為噪點進行去高光處理,對于高光區(qū)域占比較大的圖像,濾波算法不能很好地區(qū)分噪聲對象和需保留的對象,導致濾波效果較差。因此,未來的研究方向是如何對高光區(qū)域占比較大的圖像進行去高光處理。