鄭芝寰,沈會良,程岳
(浙江大學(xué)信息與電子工程學(xué)系,浙江杭州310027)
現(xiàn)有的計(jì)算機(jī)領(lǐng)域多數(shù)算法大都建立在朗伯反射表面的假設(shè)上,然而真實(shí)世界中很多材質(zhì)的物體表面都會產(chǎn)生鏡面反射現(xiàn)象,導(dǎo)致現(xiàn)有算法失效甚至得到錯誤的結(jié)果,因此去高光算法在邊緣檢測[1],顏色一致性等圖像處理領(lǐng)域起著重要的作用。目前已有多種去除圖像高光的算法。首次提出specularfree(SF)圖像的概念,利用迭代的方法對圖像中的高光部分進(jìn)行有效的去除[2]。在SF圖像的基礎(chǔ)上提出MSF圖像的概念,將圖像象素大致劃分成漫反射點(diǎn)和高光點(diǎn),利用最小二乘法得到去除高光后的圖像[3]。基于SF圖像,利用雙邊濾波技術(shù)提出的一種高效算法,可以達(dá)到實(shí)時運(yùn)行[4]。然而,目前已有的基于SF或MSF圖像的去高光算法在處理某些圖像時會出現(xiàn)顏色失真的現(xiàn)象。針對這一問題,本文提出了一種基于MSF圖像的局部去除高光算法。
根據(jù)雙色反射模型[5],象素點(diǎn)p的顏色V(p)可以表達(dá)為該點(diǎn)漫反射分量的顏色Λb(體色度)和高光分量的顏色Γs(光源色度)的線性組合:
式中,α(p)和β(p)是兩種反射分量的系數(shù)。Γs在高光處理前被校正到純白色,即Γs=[1/3,1/3,1/3]T。去高光過程可以大致分為兩個步驟:(1)將圖像象素大致劃分為漫反射點(diǎn)和高光點(diǎn);(2)為每個象素點(diǎn)尋找合適的體色度Λb,用最小二乘法求出該點(diǎn)漫反射分量和高光分量的系數(shù),從而得到去除高光后的圖像。
MSF圖像的計(jì)算過程如下:
式中,Vi(p)是象素p第i個通道的顏色值,并且:
式中,N是圖像象素點(diǎn)的個數(shù)。
通過比較Vi(p)和Vmsf,i(p)之間的差值,可以將圖像象素劃分為漫反射點(diǎn)和高光點(diǎn):
這種方法在大多數(shù)圖像中都可以得到比較好的效果。但是,由于只有一個閾值的限制,該方法并不能適用于所有類型的圖像。
本文提出了一種改進(jìn)的高光區(qū)域選取方法。首先根據(jù)MSF圖像的色度對原圖像中的象素進(jìn)行聚類。象素x和y在MSF圖像中的色度距離可以定義為:
式中,cmsf(x)和cmsf(y)分別是象素x和象素y在MSF圖像中的色度。如果兩個象素的色度距離小于某一閾值,則可以將這兩個象素劃分到同一個聚類Gi中。對于大多數(shù)圖像來說,這一閾值設(shè)為0.2都可以得到很好的聚類結(jié)果。將圖像中任一象素p的三通道最大值記為Vmax(p),則對于任一聚類Gi,可以得到集合Vmax(Gi),高光象素點(diǎn)根據(jù)candidate進(jìn)行判斷:
式中,med(·)為中值運(yùn)算,η為調(diào)節(jié)系數(shù),取值范圍為0.6~1.2。
實(shí)驗(yàn)發(fā)現(xiàn),將式5、7做邏輯與操作,可以得到更為準(zhǔn)確的高光區(qū)域。
高光去除算法的核心思想是,對于每個高光象素點(diǎn),在MSF圖像中尋找與其色度最接近的漫反射象素點(diǎn),將此漫反射點(diǎn)的體色度作為高光點(diǎn)的體色度[3]。但是由于體色度相差較大的兩個象素點(diǎn),它們在MSF圖像中的色度可能非常接近,因此采用這種全局的方法很可能導(dǎo)致高光象素點(diǎn)的體色度被錯選,從而使去除高光后的圖像中出現(xiàn)顏色失真。
針對這一問題,本文提出了一個假設(shè),即對于每個高光象素點(diǎn),在其所在的連通區(qū)域周圍,都應(yīng)該存在與其體色度相同的漫反射象素點(diǎn)。如不存在,則在此連通區(qū)域內(nèi)尋找最合適的體色度作為此高光點(diǎn)的體色度。去高光算法的流程簡要描述如下:
(1)將高光區(qū)域標(biāo)記成獨(dú)立的連通區(qū)域,對于任一聯(lián)通區(qū)域Ri,通過膨脹可以得到環(huán)繞此區(qū)域的一段封閉的區(qū)域,相應(yīng)的記作NRi;
(2)對于Ri中未經(jīng)處理的高光象素p,計(jì)算p與NRi內(nèi)所有漫反射象素的MSF色度距離,將其中最小的距離記為dmin;
(3)若dmin≤TD(TD為色度閾值,本文取TD=0.02),將最小色度距離對應(yīng)的漫反射象素記作pdmin,則象素p的體色度可以用pdmin的體色度代替。同時,對于此連通區(qū)域中尚未處理的高光象素q,如果滿足p和q之間的色度距離小于dmin+TD,則將其與象素p一并處理;
(4)若dmin>TD,則說明與p的體色度相近的象素點(diǎn)均在Ri中。找出Ri中與p的MSF色度距離小于2TD的所有象素,用集合P表示,計(jì)算P中各象素三通道的最小值Vmin(P),將min(Vmin(P))對應(yīng)的象素記為qmin,則P中所有象素的體色度都可用qmin的體色度代替;
(5)根據(jù)雙色反射模型公式求解每個象素點(diǎn)的漫反射分量和高光分量。
用上述算法分別對兩幅圖像(武士、魚)進(jìn)行測試,并將得到的結(jié)果與原有的算法進(jìn)行了比較,結(jié)果如圖1、2所示,魚眼的局部細(xì)節(jié)如圖3所示。
圖1 高光去除結(jié)果
圖2 高光去除結(jié)果
圖3 去高光結(jié)果中魚眼部分的細(xì)節(jié)比較
可以看到,圖1中武士皮膚的顏色和圖3中的魚眼顏色都得到了較好的恢復(fù),沒有出現(xiàn)其它算法中的顏色失真,去高光結(jié)果也比較理想。
本文針對已有算法在去高光過程中存在的問題,提出了一種基于顏色聚類的高光區(qū)域選取算法和基于MSF圖像的局部高光去除算法,有效地解決了高光去除過程中的顏色失真問題,得到了比較理想的去高光結(jié)果。
[1]Gevers T,Stokman H.Classifying color edges in video into shadow-geometry,highlight,or material transitions[J].IEEE Transactions Multimedia,2003,5(2):237-243.
[2]Tan R T,Nishino K,Ikeuchi K.Separating reflection components of textured surfaces using a single image[J].IEEE Transactions on Pattern Analysis and Machine Intelligence,2005,27(2):178-193.
[3]Shen H L,Zhang H G,Shao S J,et al.Chromaticity-based separation of reflection components in a single image[J].Pattern Recognition,2008,41(8):2461-2469.
[4]Yang Q,Wang S,Ahuja N.Real-time specular highlight removal using bilateral filtering[C].Greece:European Conference on Computer Vision,2010:87-100.
[5]Shafer S A.Using color to separate reflection components[J].Color Research and Application,1985,10(4):210-218.