摘 要: 在圖像處理中,,為了提高傳統(tǒng)色彩平衡算法的計(jì)算速度,、降低算法的復(fù)雜度,提出了一種全新的快速色彩平衡算法,,即過濾少量極端像素顏色值并按比例提高剩余的非極端像素顏色值的方法,。通過對(duì)多幅圖片的處理,相對(duì)于傳統(tǒng)的色彩平衡方法,,該算法得到了更好的效果,、具有更好的性能。
關(guān)鍵詞: 色彩平衡,;排序算法,;直方圖算法;白平衡
在圖像采集的過程中,,由于不同光照下獲取的圖片顏色值差異較大,,對(duì)圖片的顯示及圖片的分析產(chǎn)生困難。因此,,在攝影和圖像處理中,,不少學(xué)者提出了通過色彩平衡來解決這個(gè)難點(diǎn)。色彩平衡是一種通過全局調(diào)整圖像的RGB顏色信息使得圖片中出現(xiàn)色偏的顏色正?;姆椒?。學(xué)術(shù)界中提出的較普遍的算法有灰平衡、中性平衡或白平衡算法[1-3],。圖像處理過程中,假設(shè)原來圖像中某些像素點(diǎn)是白色的,,但由于圖像獲取過程中由于光線照射等原因產(chǎn)生色偏現(xiàn)象,,使得這些像素點(diǎn)的R、G,、B值不再保持相同,。WANG[4]提出了白平衡算法,即通過調(diào)整R、G,、B三個(gè)分量的值使之達(dá)到平衡,,然后按照這個(gè)調(diào)整比例對(duì)整幅圖像進(jìn)行調(diào)整,達(dá)到色彩平衡的效果,。LEE Hsien Che[5]提出的算法原理是在CCD或CMOS矩陣表示的原RGB顏色值下將其轉(zhuǎn)換為更加標(biāo)準(zhǔn)的感性顏色,。
本文提出了一種新型的快速色彩平衡算法,首先取一個(gè)最大值Vmax和一個(gè)最小值Vmin,,把小于Vmin的值全部改成Vmin,,把大于Vmax的值全部改成Vmax。執(zhí)行過程中,,首先需要優(yōu)化一些極端值,,優(yōu)化的極端值數(shù)量由輸入的優(yōu)化率s決定;再根據(jù)s為整幅圖像分別確定一個(gè)合適的最大值Vmax和最小值Vmin,,顏色值在[Vmin,,Vmax]范圍外的像素即為極端像素,將極端像素的值改在[Vmin,,Vmax]范圍內(nèi),,最后再根據(jù)Vmin、Vmax和s按比例來提高非極端像素的顏色值,。
1 新型色彩平衡算法
本文中算法的理論基礎(chǔ)是在RGB模式中顏色值越高越接近白色,,顏色值越低越接近黑色。如果圖像是在黑暗中拍攝的,,其像素最高的顏色值一定小于255,,則通過擴(kuò)大顏色值的范圍,圖像就會(huì)變亮,。例如,,閃電的主要顏色是R和G,那么通過色彩平衡就要增強(qiáng)B,,這樣會(huì)減少一些微黃色色調(diào),,圖像會(huì)更亮一些,不但增加了畫面的和諧性,,而且使圖像看起來更自然,。
綜上所述,本算法的目的是增加R,、G,、B三個(gè)顏色通道的顏色值,并使它們的范圍保持在[0,,255],。最簡(jiǎn)單的實(shí)現(xiàn)方式就是給每個(gè)通道ax+b的顏色值,。其中,a,、b是比例因子,,需要通過計(jì)算得到,x是初始顏色值,,ax+b必須在[0,,255]的范圍內(nèi)。
在實(shí)際圖像中經(jīng)常會(huì)遇到顏色值為0或255的像素,。在本算法中,,需要將這些點(diǎn)稍微優(yōu)化一下,因?yàn)檫\(yùn)用本算法會(huì)產(chǎn)生全白或全黑的區(qū)域,,但不必?fù)?dān)心優(yōu)化這些點(diǎn)會(huì)產(chǎn)生很大的影響,。因?yàn)橥环鶊D上顏色相近的點(diǎn)有很多,只需要將這些點(diǎn)的值改為與它們顏色最接近的點(diǎn)的值就可以了,。實(shí)際需要優(yōu)化的點(diǎn)或許很多,,或許只有一個(gè),不好確定確切的數(shù)目,,所以必須用優(yōu)化率來決定究竟要改變多少個(gè)點(diǎn)的值,。假設(shè)一幅圖像上有N個(gè)像素點(diǎn),優(yōu)化率為s,,則需要優(yōu)化N×s個(gè)點(diǎn),,并使0<N×s<255。優(yōu)化率的選取不能太大,,因?yàn)樾枰獌?yōu)化的點(diǎn)通常只占很少一部分,。
2 新型色彩平衡算法實(shí)現(xiàn)過程
本文介紹了排序和直方圖兩種改進(jìn)的算法來實(shí)現(xiàn)色彩平衡的過程,,下面闡述兩種算法的實(shí)現(xiàn)和實(shí)用性,。
2.1 排序算法
算法流程如下:
(1)排序
將N個(gè)像素存入矩陣,并將它們按顏色值大小從低到高進(jìn)行排序(排序之前要先將矩陣備份,,因?yàn)橐院筮€要用到),。
(2)確定優(yōu)化數(shù)量和最大最小值
輸入優(yōu)化率s,,則優(yōu)化數(shù)量為N×s,需要優(yōu)化的點(diǎn)是排序后的矩陣的前N×s/2和后N×s/2,。因此,,Vmin、Vmax分別產(chǎn)生在N×s/2和N×(1-s/2)-1的點(diǎn),。
(3)優(yōu)化像素
將顏色值小于Vmin的全部改為Vmin,,將顏色值大于Vmax的全部改為Vmax。
(4)生成顏色值范圍為[min,,max]的新圖像
假設(shè)新顏色值為f(x)=ax+b(x為舊顏色值),,則有:
2.2 直方圖算法
N個(gè)像素顏色值排序的時(shí)間復(fù)雜度是O(Nlog(N))。還有一種更高效的方法,,即以直方圖為基礎(chǔ)的改編版本,,最壞情況下其時(shí)間復(fù)雜度也僅為O(N)。
算法流程如下:
(1)建立一個(gè)關(guān)于像素顏色值的直方圖
橫向i表示顏色值,,縱向表示≤i的像素?cái)?shù)量q,。
(2)確定優(yōu)化數(shù)量和最大最小值
根據(jù)直方圖表示的意義,柱的高度>N×s/2的最小顏色值i,,即為Vmin,;同理,柱的高度≤N×(1-s/2)的最大顏色值i,,即為Vmax,。如果s=0,那么i的最小值即為Vmin,,i的最大值即為Vmax,。
(3)優(yōu)化像素
將顏色值小于Vmin的全部改為Vmin,將顏色值>Vmax的全部改為Vmax,。
(4)生成顏色值范圍為[min,,max]的新圖像
假設(shè)新顏色值為f(x)=ax+b(x為舊顏色值),則有:
對(duì)于16位像素值,,直方圖算法是非常好的算法,,只需要大約256 KB的內(nèi)存,得到Vmin和Vmax的速度非???,其速度可與二分法媲美。
但對(duì)于32位像素值,,直方圖算法大約需要耗費(fèi)18 MB內(nèi)存,。這種情況下,最好采用排序算法,。
3 實(shí)驗(yàn)結(jié)果
將本文提出的算法用于改善曝光不足或采光條件不好或特殊光線下(如日落)生成的圖像的一種算法,。該算法可以運(yùn)用于大部分圖像,即使原圖是在正常光線下拍攝的也同樣適用,。但有一種情況例外:如果圖像是純色的,,即所有像素含有相同的值v,則比v大和比v小的像素?cái)?shù)量都是0,,不論s取何值,,Vmin=Vmax,這種情況下不能使用本算法,。
圖1分別展現(xiàn)了原圖分別經(jīng)優(yōu)化率為0%,、1%,、2%和3%的色彩平衡算法優(yōu)化后的結(jié)果。由圖可以看出,,其圖像的優(yōu)化率不同,,優(yōu)化結(jié)果也不同。
與基于CCD或CMOS矩陣轉(zhuǎn)換原RGB顏色為更加標(biāo)準(zhǔn)的感性顏色及白平衡算法等傳統(tǒng)的色彩平衡算法不同,,本文提出的新型快速色彩平衡算法,,通過獲取一個(gè)由優(yōu)化率s決定的區(qū)間[Vmin,Vmax],,然后將這個(gè)區(qū)間外的像素點(diǎn)改在[Vmin,,Vmax]內(nèi),最后再根據(jù)Vmin,、Vmax和s按比例來提高區(qū)間[Vmin,,Vmax]內(nèi)像素的顏色值。實(shí)驗(yàn)結(jié)果表明,,本算法能得到較好的效果,,與其他算法相比更為簡(jiǎn)明、快速,。
參考文獻(xiàn)
[1] MARC E. Color constancy[M]. 111 River Street Hoboken,, NJ. John Wiley & Sons, 2007.
[2] Wikipedia Contributors. Color balance[OL]. Wikipedia,, The Free Encyclopedia.http://en.wikipedia.org/w/index.php?title=Color_balance&oldid=336334367.2010.
[3] JONATHAN S. Color balancing techniques[J]. Digital Light & Color,, 2007(1):1-19.
[4] WANG Y G,GAO N Y. Color balance in color image[J]. Computer and Information Technology,, 2009(1):101-102.
[5] HSIEN C L. Introduction to color imaging science[J]. Cambridge University Press,, 2005(1):450.