張全法,楊海彬,任朝棟,李 煥
(鄭州大學(xué) 物理工程學(xué)院 河南 鄭州 450052)
彩色圖像的快速高保真灰度化方法研究
張全法,楊海彬,任朝棟,李 煥
(鄭州大學(xué) 物理工程學(xué)院 河南 鄭州 450052)
為了實(shí)現(xiàn)彩色圖像到灰度圖像的快速高保真轉(zhuǎn)換,比較了幾種現(xiàn)有的轉(zhuǎn)換算法,分析了哪些因素限制著它們的轉(zhuǎn)換速度以及它們是如何產(chǎn)生失真的.指出了提高轉(zhuǎn)換速度的一般方法,包括采用合適的位圖形式表示灰度圖像、在VC 6.0中采取各種措施提高運(yùn)算速度等.在此基礎(chǔ)上,通過(guò)合理近似紅、綠、藍(lán)分量的權(quán)值,得到了保真度很高且轉(zhuǎn)換速度很快的計(jì)算公式.實(shí)驗(yàn)比較了各種轉(zhuǎn)換算法的轉(zhuǎn)換效果、轉(zhuǎn)換速度和轉(zhuǎn)換誤差,證明了新算法的優(yōu)越性.
圖像處理; 彩色圖像; 灰度圖像; 快速轉(zhuǎn)換; 高保真
灰度圖像已廣泛應(yīng)用于圖像模式識(shí)別、圖像分割、圖像增強(qiáng)[1]和圖像檢索[2]等領(lǐng)域.為了方便后續(xù)處理,在諸如車牌照識(shí)別、計(jì)算機(jī)視覺(jué)測(cè)量、運(yùn)動(dòng)物體的檢測(cè)與跟蹤等場(chǎng)合,都需要在預(yù)處理階段將采集來(lái)的彩色圖像轉(zhuǎn)換為灰度圖像.與此相適應(yīng),出現(xiàn)了多種彩色圖像灰度化算法,包括單一分量法[3]、最大值法、平均值法、加權(quán)平均值法[1]、HLS模型算法[4]、改進(jìn)的基于彩色空間距離的算法[5]、基于梯度域的算法[6]和基于TV復(fù)原模型的改進(jìn)的Sapiro算法[7]等.
這些算法中,后面3種分別有利于保持圖像的邊緣信息、保留彩色圖像中亮度相似但顏色不同的可視細(xì)節(jié)、在保持形狀的同時(shí)提高邊緣銳度.它們的共同缺點(diǎn)是算法復(fù)雜、速度慢,適合于對(duì)轉(zhuǎn)換速度要求不高的場(chǎng)合.在對(duì)轉(zhuǎn)換速度要求很高的基于視頻的應(yīng)用中,通常只能選擇前5種簡(jiǎn)單算法之一.這5種算法中,第4種能獲得最符合人眼視覺(jué)感受的灰度圖像,然而速度最慢;其他幾種算法速度比較快,卻存在很嚴(yán)重的亮度失真.為了兼顧速度和保真度,提出了新的轉(zhuǎn)換算法,可以用在對(duì)二者要求都比較高的場(chǎng)合.
為了獲得比較快的轉(zhuǎn)換速度和比較小的亮度失真,先對(duì)上述5種簡(jiǎn)單算法進(jìn)行比較,分析哪些因素限制了轉(zhuǎn)換速度、如何產(chǎn)生了亮度失真.為了方便,將這5種算法分為線性變換法和非線性變換法進(jìn)行討論.
1.1線性變換法
線性變換法包括單一分量法、平均值法和加權(quán)平均值法.加權(quán)平均值法的計(jì)算公式為
g=WRR+WGG+WBB,
(1)
式中,g為灰度圖像中某個(gè)像素的灰度值;R、G、B分別為彩色圖像中對(duì)應(yīng)像素的紅、綠、藍(lán)分量;WR、WG、WB分別為紅、綠、藍(lán)分量的權(quán)值,并且應(yīng)該滿足WR+WG+WB=1.所謂線性變換是指在變換過(guò)程中權(quán)值固定.當(dāng)WR=0.299,WG=0.587,WB=0.114時(shí)所得灰度圖像最符合人眼的視覺(jué)感受[1],這3個(gè)值稱為它們的最佳組合.一般情況下提到加權(quán)平均值法時(shí)皆意味著權(quán)值為最佳組合.
單一分量法和平均值法可以看成加權(quán)平均值法的變形.單一分量法只考慮一種分量,例如只考慮綠色分量時(shí)相當(dāng)于取WG=1、WR=WB=0,只有賦值運(yùn)算,其速度在這5種算法中是最快的.平均值法相當(dāng)于取WR=WG=WB=1/3,編程時(shí)可以先對(duì)R、G、B求和再除以3,則既能減少運(yùn)算量又能將浮點(diǎn)運(yùn)算轉(zhuǎn)化為整數(shù)運(yùn)算,速度比加權(quán)平均值法快.但是,由于二者的權(quán)值偏離最佳組合很遠(yuǎn),失真是顯而易見(jiàn)的.
1.2非線性變換法
非線性變換法包括HLS模型算法和最大值法,它們的權(quán)值在變換過(guò)程中不固定.前者是為了讓邊緣亮度噪聲少、平滑效果好而提出的[4],其計(jì)算公式為
g=[max(R,G,B)+min(R,G,B)]/2,
(2)
式中,max(R,G,B)和min(R,G,B)分別表示求R、G、B中的最大值和最小值.由于只有整數(shù)運(yùn)算,其速度比加權(quán)平均值法快,其失真也是顯而易見(jiàn)的.需要說(shuō)明的是,文獻(xiàn)[4]中還有乘以3的運(yùn)算,這樣做不僅降低了轉(zhuǎn)換速度,還有可能使數(shù)據(jù)超出表示范圍而導(dǎo)致更大的失真.
最大值法可以看成HLS模型算法的變形,其計(jì)算公式為
g=max(R,G,B),
(3)
由于運(yùn)算更加簡(jiǎn)單,其速度比HLS模型算法還要快,9日其失真也是顯而易見(jiàn)的.
根據(jù)以上分析可知,若要獲得比較快的轉(zhuǎn)換速度,應(yīng)該設(shè)法減少運(yùn)算量并且盡量采用高速運(yùn)算代替低速運(yùn)算,若要獲得比較高的保真度,應(yīng)該保證WR、WG和WB的取值不偏離最佳組合太遠(yuǎn).
2.1選用合適的位圖形式
在Windows環(huán)境下灰度圖像實(shí)際上是一種特殊的彩色圖像,其表示形式可以分為不用調(diào)色板和用調(diào)色板2種.不用調(diào)色板時(shí)位圖像素長(zhǎng)度為24位,每個(gè)像素都用3個(gè)字節(jié)表示其紅、綠、藍(lán)分量,但是每種分量都等于其灰度值.由于每個(gè)像素都需要進(jìn)行3次賦值運(yùn)算,速度比較慢.用調(diào)色板時(shí)調(diào)色板中應(yīng)該包含256種顏色,但是每種顏色的紅、綠、藍(lán)分量相等,取值依次從0到255.此時(shí)位圖像素長(zhǎng)度只有8位,僅用1個(gè)字節(jié)表示其顏色在調(diào)色板中的索引值,而這個(gè)索引值等于其灰度值.由于每個(gè)像素只需要進(jìn)行1次賦值運(yùn)算,可以節(jié)省大量的時(shí)間,只要圖像稍微大一些,創(chuàng)建調(diào)色板所需要的時(shí)間就微不足道了.對(duì)于視頻圖像處理來(lái)說(shuō),調(diào)色板只需要?jiǎng)?chuàng)建1次,其速度優(yōu)勢(shì)就更突出了.
2.2選擇高效率的程序設(shè)計(jì)語(yǔ)言和方法
單從提高程序運(yùn)行速度的角度來(lái)說(shuō),匯編語(yǔ)言是最好的選擇.但是對(duì)于圖像處理等比較復(fù)雜的問(wèn)題,還需要考慮編程效率的高低、用戶界面設(shè)計(jì)的難易等問(wèn)題.通常選擇VC 6.0.用VC 6.0編程時(shí),提高程序運(yùn)行速度的最簡(jiǎn)單措施是生成release版的程序.除此之外,還可以采用如下方法:
1)采用整數(shù)運(yùn)算代替浮點(diǎn)運(yùn)算.例如加權(quán)平均值法,如果根據(jù)式(1)計(jì)算灰度值將很慢,因?yàn)榇嬖诟↑c(diǎn)運(yùn)算.若將其轉(zhuǎn)化為整數(shù)運(yùn)算,即把式(1)寫(xiě)成
g=(299R+587G+114B)/1 000,
(4)
速度將大大提高.盡管如此,相對(duì)于其他4種簡(jiǎn)單算法來(lái)說(shuō)仍然是最慢的,參見(jiàn)后面的實(shí)驗(yàn)結(jié)果.文獻(xiàn)[8]中隱含了這種方法,不幸的是相當(dāng)于取WR=0.39,WG=0.50,WB=0.11,失真比較大.
2)采用左移或右移n位運(yùn)算代替乘以或除以2n運(yùn)算(n為大于0的整數(shù)).例如根據(jù)式(2)計(jì)算灰度值時(shí),若用右移1位運(yùn)算代替除以2運(yùn)算,速度將有所提高,參見(jiàn)后面的實(shí)驗(yàn)結(jié)果.
3)采用指針?lè)ù嫦聵?biāo)法訪問(wèn)圖像數(shù)據(jù).圖像數(shù)據(jù)在內(nèi)存中是一維線性排列的.若按照數(shù)組看待而通過(guò)下標(biāo)法訪問(wèn)則比較慢.若用指針?lè)ㄔL問(wèn)則比較快,因?yàn)榇藭r(shí)可以用自增或自減運(yùn)算高效率地改變指針.
4)其他.包括直接讀寫(xiě)內(nèi)存圖像數(shù)據(jù)[1]、采用自增或自減運(yùn)算代替加1或減1運(yùn)算等.
2.3選取合適的權(quán)值
為了在編程時(shí)能夠充分利用上述方法提高運(yùn)算速度,提出計(jì)算公式
g=R/22+R/24-R/26+G/2+G/24+G/25+B/23-B/26,
(5)
由于將浮點(diǎn)運(yùn)算轉(zhuǎn)化成了整數(shù)運(yùn)算,并且可以用右移運(yùn)算代替除法運(yùn)算,運(yùn)算速度提高了很多.此時(shí)相當(dāng)于取WR=0.297,WG=0.594,WB=0.109,雖然偏離了權(quán)值的最佳組合,但是與其他算法相比失真還是很小的,參見(jiàn)后面的實(shí)驗(yàn)結(jié)果.
根據(jù)對(duì)于轉(zhuǎn)換速度和保真度的不同要求,式(5)還有2種變形可供選用,
g=R/22+R/24+G/2+G/24+B/23,
(6)
g=R/22+G/2+B/22.
(7)
與式(5)相比,它們的速度越來(lái)越快,失真也越來(lái)越大,不過(guò)相對(duì)于其他算法來(lái)說(shuō)失真還是比較小的.
實(shí)驗(yàn)?zāi)康氖潜容^新提出的灰度化算法與已有的5種簡(jiǎn)單算法在視覺(jué)效果、轉(zhuǎn)換速度和保真度等方面的差異.所用圖像來(lái)自于一段視頻,為384 288像素的24位彩色圖像;所用計(jì)算機(jī)的CPU為奔騰系列的,主頻1.70 GHz;程序用VC 6.0編寫(xiě).
3.1視覺(jué)效果比較
轉(zhuǎn)換效果如圖1所示.圖中新算法1、2、3分別是指根據(jù)式(5)、(6)、(7)轉(zhuǎn)換.可以看出,加權(quán)平均值法的效果最好,最大值法的亮度有明顯升高,單一分量法(考慮綠色分量,下同)、平均值法和HLS模型算法的亮度有明顯升高或降低,新算法1與加權(quán)平均值法的差別最小,新算法2和3與它的差別也不大.
(a)加權(quán)平均值法 (b)單一分量法 (c)平均值法 (d)HLS模型算法
(e)最大值法 (f)新算法1 (g)新算法2 (h)新算法3
圖1各種算法的視覺(jué)效果
Fig.1Visual effect of each algorithm
3.2轉(zhuǎn)換誤差比較
這里的轉(zhuǎn)換誤差是指其他算法的灰度值g與加權(quán)平均值法的灰度值g0的差別.通過(guò)程序求出R、G、B在所有可能組合下的轉(zhuǎn)換誤差(g-g0),進(jìn)而求出其最大值、最小值及方均根誤差,并除以255,用百分?jǐn)?shù)表示,結(jié)果如表1所示.可以看出,新算法的轉(zhuǎn)換誤差是非常小的,因此其保真度是非常高的.
表1 各種算法的轉(zhuǎn)換誤差
3.3轉(zhuǎn)換速度比較
為了在相同條件下比較各種算法的速度差異,在實(shí)現(xiàn)每種算法時(shí)皆通過(guò)指針直接訪問(wèn)圖像數(shù)據(jù),皆通過(guò)自增運(yùn)算改變指針,皆采用帶調(diào)色板的位圖表示灰度圖像,皆預(yù)先創(chuàng)建好調(diào)色板,皆用release版的程序測(cè)試運(yùn)行時(shí)間.生成release版的程序時(shí)所用的優(yōu)化策略是maximize speed,即最大速度.
利用VC 6.0的build/profile功能可以測(cè)試程序中每個(gè)函數(shù)的運(yùn)行時(shí)間,但是在測(cè)試過(guò)程中發(fā)現(xiàn)同一個(gè)函數(shù)可能偶然出現(xiàn)某次運(yùn)行時(shí)間很長(zhǎng),這可能是Windows的多任務(wù)特性造成的.為了避免這種情況的影響,為每種算法編寫(xiě)一個(gè)函數(shù),在每次測(cè)試中各調(diào)用1次,共測(cè)試5次,求平均值時(shí)剔除顯著偏大的數(shù)據(jù).結(jié)果如表2所示,刪除線表示被剔除的數(shù)據(jù).可以看出,新算法的運(yùn)行速度非???,與最大值法不相上下,甚至可逼近單一分量法.
表2 各種算法的運(yùn)行時(shí)間
新算法具有很快的速度和很高的保真度,包含了3個(gè)計(jì)算公式,可以根據(jù)對(duì)速度和保真度的綜合要求進(jìn)行選擇.將其應(yīng)用到所開(kāi)發(fā)的智能視頻交通管理系統(tǒng)中,取得了很好的效果.所采用的提高程序運(yùn)行速度的方法也具有一定的普適性,不僅可以應(yīng)用到彩色圖像灰度化算法中,還可以應(yīng)用到其他算法中.
[1] 李貞培,李平,郭新宇,等.三種基于GDI+的圖像灰度化實(shí)現(xiàn)方法[J].計(jì)算機(jī)技術(shù)與發(fā)展,2009,19(7):73-75.
[2] 孫忠貴.基于小波和位平面技術(shù)的圖像檢索方法[J].鄭州大學(xué)學(xué)報(bào):理學(xué)版,2009,41(1):23-26.
[3] 張俊霞.VC編程實(shí)現(xiàn)彩色圖像與灰度圖像之間的相互轉(zhuǎn)換[J].河套大學(xué)學(xué)報(bào),2006,3(2):70-73.
[4] 劉慶祥,蔣天發(fā).彩色與灰度圖像間轉(zhuǎn)換算法的研究[J].武漢理工大學(xué)學(xué)報(bào):交通科學(xué)與工程版,2003,27(3):344-346.
[5] 張建德,邵定宏.改進(jìn)的基于彩色空間距離的圖像灰度化算法[J].機(jī)械與電子,2008(1):63-65.
[6] 章衛(wèi)祥,周秉鋒.一種基于梯度域的彩色圖像轉(zhuǎn)灰度圖像的方法[J].影像技術(shù),2007(3):20-22.
[7] 郭彥伶,彭進(jìn)業(yè),王大凱.改進(jìn)TV復(fù)原模型的彩色-灰度圖像變換方法[J].計(jì)算機(jī)工程與應(yīng)用,2009,45(7):192-194.
[8] 張志軍,孫志輝.基于VC平臺(tái)的彩色圖像的灰度化技術(shù)[J].自動(dòng)化技術(shù)與應(yīng)用,2005,24(1):61-63.
StudyonFastColor-to-GrayImageTransformationwithHighFidelity
ZHANG Quan-fa, YANG Hai-bin, REN Chao-dong, LI Huan
(SchoolofPhysics&Engineering,ZhengzhouUniversity,Zhengzhou450052,China)
To transform color images into gray images quickly and with high fidelity, factors that affect the transformation speed and fidelity were analyzed by comparing existing algorithms. Several methods universal for improving the speed of image transforming programs were proposed, such as expressing gray images in the most suitable bitmap form, developing programs with Visual C++ 6.0 and making full use of its features that could speed up the programs, and so on. Appropriate approximations were introduced to the weight values of red, green and blue component for developing programs with these methods, and it was possible of fast transformation with high fidelity. These advantages of the new algorithm were demonstrated by experiment results of speed, error and visual effect.
image processing; color image; gray image; fast transforming; high fidelity
TP 391.41
A
1671-6841(2011)03-0066-04
2010-04-07
張全法(1966-),男,副教授,主要從事傳感器與計(jì)算機(jī)應(yīng)用技術(shù)研究,E-mail:zhangquanfa@zzu.edu.cn.