灰色世界法(greyworldmethod)
要計(jì)算未知光源的特性必須從圖片中提取相關(guān)的統(tǒng)計(jì)特性。當(dāng)我們能夠僅使用一個(gè)統(tǒng)計(jì)特性就獲得未知光源特性時(shí),算法就變得非常簡(jiǎn)單了。在這種情況下,未知光源必須在整幅圖片上都是統(tǒng)一的。均值于是就成為了此類方法之下最好的統(tǒng)計(jì)指標(biāo)。而灰色世界法正是利用了均值作為估算未知光源的關(guān)鍵統(tǒng)計(jì)量。
從物理意義上說(shuō),灰色世界法假設(shè)自然界景物對(duì)于光線的平均反射的均值在總體上是個(gè)定值,這個(gè)定值近似地為“灰色”。在給定圖片的白平衡算法中,灰色世界假設(shè)圖片中的反射面足夠豐富,以至于可以作為自然界景物的一個(gè)縮影。若這幅圖片是在經(jīng)典光源下拍攝的,其均值就應(yīng)該等于灰色。若這幅圖是在非經(jīng)典光源下拍攝的,那么均值就會(huì)大于或者小于灰色值。而該均值對(duì)于灰色的偏離程度則反映了未知光源相對(duì)于已知光源的特性。
雖然這個(gè)方法比較簡(jiǎn)單,但是仍然可以從一些方面進(jìn)行調(diào)整。一個(gè)方面就是對(duì)于灰色的定義形式的選擇。包括對(duì)于光譜的定義、對(duì)于光譜成分的定義和在經(jīng)典光源之下的RGB的響應(yīng)。另一個(gè)更加重要的調(diào)整方面就是對(duì)于灰色的選擇。不管如何定義灰色,最佳的灰色之選必然是自然界實(shí)事上出現(xiàn)的灰色。但是這個(gè)值是無(wú)法獲得的(除非是合成數(shù)據(jù)),所以對(duì)于灰色的選擇是不同的灰色世界算法的一個(gè)重要的區(qū)別點(diǎn)。 一個(gè)方法是假設(shè)這個(gè)灰色就是實(shí)事上的灰色。也就是說(shuō)反射光譜是均衡的。給定光源之下的RGB響應(yīng)是純白色對(duì)此光源的響應(yīng)值的一部分。比方說(shuō),可以使用50%作為反射率(雖然這個(gè)灰色值對(duì)于人眼視覺習(xí)慣而言可能過(guò)于明亮)。
另一種方法,就是根據(jù)大量的數(shù)據(jù)提煉出一個(gè)均值,并把它定義為灰色。這種方法提煉的灰色值可能因?yàn)閿?shù)據(jù)庫(kù)使用的不同而有所不同。最終提煉的灰色也能僅適用于原始的數(shù)據(jù)庫(kù),而對(duì)于數(shù)據(jù)庫(kù)未包括的圖片的適用度就會(huì)比較差一些。確定下來(lái)的灰色表達(dá)形式可以用來(lái)表示。下標(biāo)i表示信道,上標(biāo)c為canonical的首字母,表示經(jīng)典光源。
在確定灰色的表達(dá)形式后只要用RGB響應(yīng)與經(jīng)典光源下灰色的比值來(lái)歸一化圖片就可以了。假設(shè)RGB響應(yīng)均值為,下標(biāo)i表示信道,上標(biāo)U為Unknown的首字母,表示未知光源。那么歸一化率的計(jì)算式為如下式所示: 根據(jù)光源轉(zhuǎn)換理論,從未知光源到經(jīng)典光源下圖片表達(dá)式的轉(zhuǎn)換式如下式所定義: 那么,灰色世界法的計(jì)算過(guò)程如下圖所示:
?
本實(shí)驗(yàn)選擇的灰色值為(129,129,129),具體的matlab實(shí)現(xiàn)程序如下:
?
偏藍(lán)圖片
白平衡調(diào)整后的圖片
?
正常光照下的圖片
?
動(dòng)態(tài)閥值的自動(dòng)白平衡法
基于動(dòng)態(tài)閥值的自動(dòng)白平衡法(AutomaticWhiteBalanceMethod)這個(gè)算法是通過(guò)對(duì)圖片的ycbcr色空間的分析來(lái)確定參考白點(diǎn)的,所以次算法可以說(shuō)是自適應(yīng)白平衡算法。本算法選擇參考白點(diǎn)的閥值是動(dòng)態(tài)變化的,所以對(duì)于不同的圖片,其閥值也不同。通過(guò)對(duì)圖片的cbcr坐標(biāo)空間的分析,我們可以看到一個(gè)接近白色的區(qū)域(near-whiteregion)是包含著參考白點(diǎn)的。通過(guò)這個(gè)思路,我們可以通過(guò)對(duì)圖片分區(qū),然后找出參考白點(diǎn),然后在通過(guò)vonkviesmodel來(lái)調(diào)整圖片時(shí)期實(shí)現(xiàn)白平衡。這樣,這個(gè)算法就包括了兩個(gè)步驟了:尋找參考白點(diǎn),白點(diǎn)調(diào)整。尋找參考白點(diǎn):
為了確定一個(gè)接近白色的區(qū)域,我們就必須把RGB色空間轉(zhuǎn)換成YCbCr色空間。
色空間轉(zhuǎn)換后,就是計(jì)算Cb、Cr的均值Mb、Mr;然后通過(guò)下式計(jì)算Cb、Cr的均方差Db、Dr:
為了提高算法的穩(wěn)健性,將圖片分為幾個(gè)區(qū)域并且計(jì)算每個(gè)區(qū)域的Mb、Mr、Db、Dr,如果一個(gè)區(qū)域的Db,Dr太小,那么這個(gè)區(qū)域就沒(méi)有足夠的色彩變化,就可以丟棄掉了。這樣可以避免大面積的統(tǒng)一色調(diào)對(duì)結(jié)果的影響。
接下來(lái)就可以通過(guò)下面的關(guān)系式得到接近白色區(qū)域的所有像素點(diǎn)了:
根據(jù)亮度值,我們選擇接近白色區(qū)域中的10%的候選參考白點(diǎn)最為參考白點(diǎn)。在白點(diǎn)確定后,就可以從參考白點(diǎn)中得到信道增益的值了。為了維持整幅圖片的亮度不變,亮度的最大值被用來(lái)得到信道增益。所以信道增益不及和參考白點(diǎn)有關(guān)還與亮度的最大值有關(guān),其表達(dá)式如下:
其中是整幅圖片像素的亮度最大值,和是參考白點(diǎn)的RGB信道的均值。
最后,根據(jù)von-kviesmodel來(lái)調(diào)整圖片,使其達(dá)到白平衡的效果。調(diào)整的表達(dá)式如下:
其中RGB是圖片的像素點(diǎn)的三個(gè)信道值,是調(diào)整之后的圖片的像素點(diǎn)的三個(gè)信道值。其源程序如下:
%Programforwhitebalancing%
functionW=wbalance(im)
clearall;
closeall;
%讀取照片的信息%
[filename,pathname]=uigetfile(‘*.jpg;*.bmp;*.gif’,‘Pick an
image-file’);
ifisequal(filename,0)
Else
disp([‘Userselected’,fullfile(pathname,filename)]);
end
fname=strcat(pathname,filename);
im=imread(fname);im2=im;
im1=rgb2ycbcr(im);
%將圖片的RGB值轉(zhuǎn)換成YCbCr值%
Lu=im1(:,:,1);
Cb=im1(:,:,2);
Cr=im1(:,:,3);
[xyz]=size(im);
tst=zeros(x,y);
%計(jì)算Cb、Cr的均值Mb、Mr%
Mb=sum(sum(Cb));
Mr=sum(sum(Cr));
Mb=Mb/(x*y);
Mr=Mr/(x*y);
%計(jì)算Cb、Cr的均方差%
Db=sum(sum(Cb-Mb))/(x*y);
Dr=sum(sum(Cr-Mr))/(x*y);
%根據(jù)閥值的要求提取出near-white區(qū)域的像素點(diǎn)%
cnt=1;
fori=1:x
forj=1:y
b1=Cb(i,j)-(Mb+Db*sign(Mb));
b2=Cr(i,j)-(1.5*Mr+Dr*sign(Mr));
if(b1《abs(1.5*Db)&b2《abs(1.5*Dr))
Ciny(cnt)=Lu(i,j);
tst(i,j)=Lu(i,j);
cnt=cnt+1;
End
End
End
cnt=cnt-1;
iy=sort(Ciny,‘descend’);
%將提取出的像素點(diǎn)從亮度值大的點(diǎn)到小 的點(diǎn)依次排列%
nn=round(cnt/10);
Ciny2(1:nn)=iy(1:nn);%提取出near-white區(qū)域中10%的亮度值較 大的像素點(diǎn)做參考白點(diǎn)%
%提取出參考白點(diǎn)的RGB三信道的值%
?
%計(jì)算參考白點(diǎn)的RGB的均值%
黃偏色圖片
?
? ? ??
正常光照下的圖片
?
次算法的缺點(diǎn)是運(yùn)行速度慢,但是對(duì)圖片的還原效果還是比較顯著的。
其他白平衡算法 鏡面法(PerfectReflectorModel)
根據(jù)圖像形成理論,對(duì)于純白色的反射面而言,無(wú)論光源是什么顏色,最終反射后的顏色總能完全表現(xiàn)出光源的顏色。如果景物中有純白的部分,那么就可以直接從這些像素中提取出光源信息。基于這種思想的方法都被稱為是鏡面法。
與灰色世界法類似的,鏡面法也有多種調(diào)整方式。在本文中著重介紹兩種。
第一種方法較為基本也較為簡(jiǎn)便。這種方法假設(shè)圖片中一定有純白色面存在,那么在經(jīng)典光源下,圖片中所有像素點(diǎn)三個(gè)信道的最大值都應(yīng)該等于255,或者是一個(gè)給定的純白色的值。在任何其他的光源下,圖片純白色點(diǎn)的像素值就會(huì)小于經(jīng)典光源下的純白色,并且這些點(diǎn)將代表整幅圖片中最亮的點(diǎn)。那么只要將各信道的值按比例規(guī)一化到最大值(純白色)就可以獲得在經(jīng)典光源下的圖片了。
假設(shè)經(jīng)典的白色表達(dá)形式可以用來(lái)表示。下標(biāo)i表示信道,上標(biāo)c表示經(jīng)典光源。假設(shè)RGB響應(yīng)的最值為,下標(biāo)i表示信道,上標(biāo)U表示未知光源。那么歸一化率的計(jì)算式為如下式所示:
根據(jù)光源轉(zhuǎn)換理論,從未知光源到經(jīng)典光源下圖片表達(dá)式的轉(zhuǎn)換同樣可以用下式定義:
其計(jì)算過(guò)程如下:
?
當(dāng)選擇(255,255,255)為白色值的時(shí)候只需把每個(gè)信道的像素值拉伸到最大值即可。這種鏡面法最為簡(jiǎn)單,在有效性方面的表現(xiàn)也不錯(cuò)。
第二鏡面法算法在第一步的基礎(chǔ)上改進(jìn)了對(duì)于白色點(diǎn)的定義。它不是將白色定義為各信道值最大的點(diǎn)。而是將滿足某個(gè)條件的點(diǎn)都定義為白色點(diǎn),通過(guò)計(jì)算這些點(diǎn)的平均色溫,得到對(duì)于未知光源的估計(jì)值。這類算法首先將對(duì)于白色的定義形式轉(zhuǎn)換到了YCbCr空間:
在YCbCr空間中,Y是灰度,表示圖像的亮度,Cb和Cr是色度的藍(lán)色和紅色分量,代表圖像的色差。由于鏡面是圖像中亮度最大的部分,那么Y值最大的點(diǎn)就可以很好的代表圖像中的鏡面。
第二步就是在轉(zhuǎn)換完的空間中尋找到可以代表鏡面的點(diǎn)。在Y較小時(shí),Cb和Cr較小的像素表現(xiàn)為接近白色的灰度值;而在Y較大時(shí),Cb和Cr較大的像素仍可以認(rèn)為是白色物體受到光源污染得到的。因此我國(guó)的白平衡研究學(xué)者提出了下列約束條件:
由算法決定,不同鏡面算法的值不同。 在選出了合適的白色點(diǎn)之后,下一步就是要估計(jì)色溫,根據(jù)計(jì)算的色溫來(lái)還原已知光源下的圖片。色溫估計(jì)的計(jì)算式如下式所示: 其中下標(biāo)X標(biāo)示信道,在這種算法中X=Y、Cb、Cr。
進(jìn)行色溫估計(jì)之后,利用光源轉(zhuǎn)換式可以獲得如下圖所示的計(jì)算過(guò)程:
?
音階映射法(gamutmappingmodel)
音階映射法采用了與前幾種方法完全不同的思路,是第一個(gè)很好的描述了圖片統(tǒng)計(jì)特性的算法,由Forsyth在1990年首次提出。此方法的第一步是建造一個(gè)所有可能的R、G、B值得集合,這些值是在經(jīng)典光源下拍攝所有現(xiàn)實(shí)世界可能出現(xiàn)的反射面獲得的。這個(gè)集合是一個(gè)凸多面體,因此可使用其頂點(diǎn)來(lái)表征。在第二步中,使用相似的方法,將圖片中所有出現(xiàn)的R、G、B值繪成一個(gè)凸多面體。第三步是將這兩個(gè)凸多面體相互映射從而獲得對(duì)角變換矩陣。根據(jù)映射得來(lái)的變換矩陣一般不是唯一的,而是一個(gè)由許多矩陣組成的集合。所以第四步就是從這個(gè)集合中挑選出最終的變換矩陣。
音階映射法的主要優(yōu)點(diǎn)在于對(duì)于其應(yīng)用環(huán)境沒(méi)有特別的限制,因此其平均表現(xiàn)水平要高于灰色世界法和完美反射法。其不足之處主要有三:
第一,要獲得在經(jīng)典光源下所有可能出現(xiàn)的R、G、B值集合非常困難,一般只能獲得近似集合。
第二,映射兩個(gè)三維集合的計(jì)算量比較大。
第三,獲得的變換矩陣是一個(gè)集合,沒(méi)有有效的方法獲得最優(yōu)解。 1996年Finlayson提出透視色彩法,在音階映射法的基礎(chǔ)上作了兩點(diǎn)改進(jìn)。第一,這種方法使用了色度空間(r,g)=(R/(R+B+G),G/(R+B+G));第二,通過(guò)考慮可能出現(xiàn)的光源值來(lái)進(jìn)一步縮小得到的變換矩陣集合。使用色度空間之后,參數(shù)集合從三維降為兩維,降低了運(yùn)算復(fù)雜度。考慮可能出現(xiàn)的光源以后縮小了目標(biāo)變換矩陣的范圍,使得最后得到的結(jié)果更接近最優(yōu)解。 透視色彩法的主要缺陷在于光源集合是一個(gè)非凸集合,也就說(shuō)它無(wú)法僅僅使用頂點(diǎn)來(lái)精確表征。這樣就加大了運(yùn)算難度。
Barnard采用的方法是將其近似認(rèn)為一個(gè)凸集合,這樣就不需要增加額外的計(jì)算了,但是對(duì)最后變換矩陣集合的準(zhǔn)確獲得造成了一定負(fù)面影響。
接下來(lái)將對(duì)音階圖法的基本計(jì)算方法作一個(gè)闡述。所使用的色度空間為改進(jìn)后的二維色度空間(r,g)=(R/(R+B+G),G/(R+B+G))。
第一步為構(gòu)造色集合圖;第二步與第三步,構(gòu)造待測(cè)圖片的色集合圖并將其映射到測(cè)試色集合圖中。 經(jīng)過(guò)映射以后未知光源的圖片就與經(jīng)典光源下的可能圖像建立了映射關(guān)系。通常,建立的映射關(guān)系不是唯一的,而是一個(gè)集合,這樣就需要對(duì)這個(gè)集合中所有的映射關(guān)系進(jìn)行篩選從而獲得最佳結(jié)果。選擇的過(guò)程必須要建立額外的假設(shè),因此不是唯一的。
色相關(guān)法(colorbycorrelationmodel)
Finlayson提出了色相關(guān)法作為對(duì)于透視色彩法的改進(jìn)。色相關(guān)法的實(shí)質(zhì)就是將色彩空間離散化,從而進(jìn)一步降低計(jì)算復(fù)雜度。色相關(guān)法的基本思想是預(yù)先計(jì)算一個(gè)矩陣,這個(gè)矩陣描述了不用光源與特定圖像色彩出現(xiàn)之間的相關(guān)度。
矩陣的每一行對(duì)應(yīng)于一個(gè)不同的訓(xùn)練光源,每一列為可能出現(xiàn)的色彩值,這些色彩值是通過(guò)離散化染色空間(r,g)獲得的。行和列可以任意排列而不影響此方法的有效性。矩陣元素A(i,j)的含義為:在光源i之下拍攝的圖片中出現(xiàn)色彩j。
色相關(guān)法中提出了兩種定義矩陣元素A(i,j)的方法。在第一種方法中,A(i,j)只能取0或1。取0表示色彩j不可能出現(xiàn)在光源i之下,取1表示色彩j可能出現(xiàn)在光源i之下。在第二種方法中,A(i,j)可以去0到1之間的任何一個(gè)值,代表色彩i出現(xiàn)在光源j之下的概率。在計(jì)算完相關(guān)矩陣之后,使用類似的方法將目標(biāo)圖片的色彩空間離散化,形成一個(gè)相關(guān)矢量,與相關(guān)矩陣相乘以獲得這個(gè)未知光源下的圖象與各個(gè)已知光源的相關(guān)度。選取相關(guān)度最大的
一個(gè)或幾個(gè)已知光源對(duì)未知光源特性進(jìn)行估計(jì),求得未知光源特性。色相關(guān)法的好處在于,在充分考慮到圖像統(tǒng)計(jì)特性的前提下進(jìn)一步降低了計(jì)算復(fù)雜度。但是其不足也是明顯的。首先,與透視色彩法一樣,對(duì)于所有可能光源的估計(jì)是近似的,不完全的,可能影響到最后的估計(jì)結(jié)果。其次,離散化色彩空間的過(guò)程中丟失了許多色彩信息,在一些情況下,可能使相關(guān)矩陣和向量相乘后的結(jié)果為零向量。
以下將對(duì)色相關(guān)的計(jì)算步驟進(jìn)行簡(jiǎn)要介紹: 第一步,建立相關(guān)矩陣,其過(guò)程:(a)找出在參考光源下的彩色圖像的色度;(b)計(jì)算出每個(gè)色彩在參考光源下的出現(xiàn)概率;(c)將b所計(jì)算出的概率加入色相關(guān)矩陣M。
可以看到(a)中所示的色度集合是離散的,因?yàn)樯嚓P(guān)矩陣中的各種顏色分布也是離散的。(c)中相關(guān)矩陣的每一列代表不同的光源,在這一列中的每一個(gè)值代表了對(duì)應(yīng)的色彩區(qū)域出現(xiàn)的概率。
第二步是相關(guān)的過(guò)程。在進(jìn)行相關(guān)之前需要先構(gòu)造圖像向量,圖像向量的每一個(gè)元素值代表對(duì)應(yīng)的色彩區(qū)間是否出現(xiàn)在給定的需要進(jìn)行白平衡處理的圖片中。
接著就是相關(guān)過(guò)程了,相關(guān)矩陣與特征向量的相關(guān)過(guò)程可以簡(jiǎn)要表示:(a)從圖像色度集合中求出圖像向量;(b)將圖像數(shù)據(jù)與可能的光源進(jìn)行相關(guān);(c)選擇一個(gè)可能的光源。
第三步就是最佳光源的選取。最佳光源的選取有多種方法,包括最大相關(guān)值法:尋找所有相關(guān)向量中最大的元素;最大相關(guān)值平均法:將相關(guān)向量里最大的幾個(gè)值所對(duì)應(yīng)的光源色彩進(jìn)行平均,然后求出最佳光源;等等。
神經(jīng)網(wǎng)絡(luò)法(NeuralNetworkApproachtoColourConstancy)
神經(jīng)網(wǎng)絡(luò)法是處理視角比較獨(dú)特的一種白平衡算法。該方法同樣對(duì)染色空間(r,g)進(jìn)行了離散化處理,并將其與神經(jīng)網(wǎng)略結(jié)構(gòu)相聯(lián)系。目前提出的神經(jīng)網(wǎng)絡(luò)白平衡算法使用了3層結(jié)構(gòu),輸入層有X000個(gè)節(jié)點(diǎn),第一個(gè)隱藏層有X00個(gè)節(jié)點(diǎn),第二個(gè)隱藏層有X0個(gè)節(jié)點(diǎn),輸出層有2個(gè)節(jié)點(diǎn)。輸入層代表離散化的染色空間(r,g),每一個(gè)節(jié)點(diǎn)的輸入可取0或1,表示某個(gè)色彩值(ri,gi)是否在圖像中出現(xiàn)。輸出層表征了光源特性。上層為下層值得加權(quán)和。通過(guò)輸入不同的圖片,可以訓(xùn)練神經(jīng)網(wǎng)絡(luò)的權(quán)值,以獲得滿意的結(jié)果。
輸入神經(jīng)元有多個(gè),輸出神經(jīng)元為兩個(gè)。神經(jīng)網(wǎng)絡(luò)的輸出描述了未知光源特性,輸入則代表了圖像的色彩特性。 對(duì)于各層結(jié)點(diǎn)數(shù)為多少時(shí)處理效果最優(yōu)這個(gè)問(wèn)題,目前還沒(méi)有辦法在理論上進(jìn)行驗(yàn)證。試驗(yàn)經(jīng)驗(yàn)表明,在一定的范圍內(nèi),結(jié)點(diǎn)數(shù)的多少不影響處理的最終效果。但這也同時(shí)表明了,神經(jīng)網(wǎng)絡(luò)發(fā)的處理效果優(yōu)化存在一定難度。
評(píng)論