郭建亞,徐智勇
(1.中國科學院光電技術(shù)研究所,成都610209;2.中國科學院研究生院,北京100190)
近年來,數(shù)字彩色CCD,特別是基于CMOS圖像傳感器的CCD,在商業(yè)及工業(yè)鄰域都得到了廣泛的關(guān)注和應(yīng)用。通常的數(shù)碼相機都采用單一感光器件上面覆蓋一層濾色陣列(CFA)來實現(xiàn)[1]。該慮色陣列的每個濾色單元僅允許特定的一部分光譜通過,因此輸出圖像中每個像素僅有一種顏色分量被記錄下來,剩下的兩個分量則需要根據(jù)相鄰的像素預(yù)測得到,這個過程就稱作CFA插值。因為覆蓋了CFA的圖像傳感器輸出的圖像有點類似馬賽克,因此通過CFA插值的方式來獲得全彩色圖像的方法也通常被稱作去馬賽克(Demosaicing)。
目前最常用的CFA是Bayer陣列[2],它有四種排列形式。圖1給出了一個典型的5×5的Bayer陣列及其綠色通道,每個方格中的前后兩位數(shù)分別代表行號和列號。Bayer陣列圖像有一半是綠色像素(行號與列號之和為偶數(shù)),另外各有四分之一分別是紅色像素(奇數(shù)行的偶數(shù)列)和藍色像素(偶數(shù)行的奇數(shù)列)。綠色通道常被稱為亮度(Luminance)通道,而紅色和藍色通道則被稱為色度(Chrominance) 通道[3][4][5][6]。之所以綠色像素的采樣樣本多,是因為人眼對可見光光譜敏感度的峰值位于中波段,這正好對應(yīng)著綠色光譜成分[4][6][7][8]。當一幅數(shù)字圖像被記錄以后,相機需要對它進行一系列的處理,包括白平衡、伽馬校正以及壓縮存儲等等,而這個處理鏈的首要環(huán)節(jié)就是CFA插值。
圖1 Bayer濾色陣列及其綠色通道
自Bayer CFA問世以來,已有大量針對Bayer圖像的插值算法出現(xiàn)。然而目前學術(shù)界提出的很多種算法中,大多數(shù)只是針對離線獨立使用或者是后期處理的應(yīng)用場合。這些算法通常假設(shè)Bayer圖像已經(jīng)獲得并且存儲在存儲器里,而他們研究的目的就是使用盡量復(fù)雜的算法,甚至對同一幅圖像進行輪番[9]或者迭代處理[10],以使插值后的圖像有盡可能高的質(zhì)量。例如,逐次逼近算法[10]和規(guī)則化方法[11]就是迭代算法的典型,這些方法對一幅Bayer圖像的插值往往需要迭代很多次,并且其時間花費是不確定的,跟具體圖像及算法的收斂速度有關(guān),因而不適合實時應(yīng)用場合。有些算法則過分依賴綠色分量的插值[6][12][13],這些算法第一輪將所有缺失的綠色分量都插值完畢,然后對于紅色和藍色分量的插值都借鑒已獲得的綠色分量。這顯然是不能用實時流水線實現(xiàn)的,因為在硬件流水線里,只有當前被插值像素之前的那些像素的缺失綠色分量才是已知的。大多數(shù)面向硬件的高速、實時的商業(yè)及工業(yè)應(yīng)用如實時視頻監(jiān)控、工業(yè)質(zhì)量控制檢查等等,都是不允許有太多的延時、不能提供足夠的存儲單元和其它硬件資源來實現(xiàn)一個計算復(fù)雜度相當高的插值算法[14]。因此,研究一種節(jié)省硬件資源、適合實時在線插值又有很好插值效果的Bayer插值方法是非常實用而且是十分必要的。針對Bayer插值的硬件實現(xiàn),如何降低計算資源及存儲單元使用量并做到低延遲的實時處理,本文的研究所關(guān)注的重點。
存儲單元使用量如寄存器、緩存、外存等跟插值算法的缺失顏色分量估計所使用的數(shù)據(jù)源密切相關(guān)。在Bayer插值中,一個像素的兩個缺失顏色分量都是通過當前像素及鄰域像素估算得到的,因此需要把計算用到的鄰域像素預(yù)先放到一個窗口(插值窗)中。從大量的文獻中可以發(fā)現(xiàn),幾乎所有插值算法在實現(xiàn)時都采用插值窗策略。插值窗的維數(shù)可以是3×3[15],5 ×5[16],7 ×7[12]或者其它尺寸,甚至可以達到跟整個圖像的尺寸一樣大[10]。假設(shè)窗口的高度是h,那么一般來講,當前插值像素的前h-1行數(shù)據(jù)是需要緩存的,即需要h-1個行緩沖器。此外,插值運算需要的寄存器數(shù)量也跟插值運算使用的像素數(shù)量有關(guān)。因此,插值窗的大小可以作為衡量一個Bayer插值算法存儲單元使用量的重要指標。非存儲單元的使用量則跟算法的的計算復(fù)雜度有關(guān)。相對來講,二元加減法、邏輯運算、關(guān)系運算及移位運算是最節(jié)省資源的運算。盡管乘法跟除法及其它非線性運算適合基于嵌入式系統(tǒng)的實時Bayer插值[14],但是用硬件實現(xiàn)則非常耗資源而且計算效率低[14]。因此在設(shè)計適合實時硬件實現(xiàn)的Bayer插值算法時,應(yīng)盡量使用簡單的運算,避免用乘除法。
在所有的Bayer插值算法中,雙線性插值算法[15]是最簡單的方法。該算法中,缺失的顏色分量用同一顏色通道的相鄰像素求平均得到,因而僅需要3×3的插值窗口,也就是說只需要兩個行緩存。該算法雖然計算簡單、資源耗費量少,但是插值后的圖像容易出現(xiàn)偽色(artifact),特別是在圖像中紋理清晰或邊緣尖銳的地方該現(xiàn)象更明顯。
圖像的邊緣對于整幅圖像的質(zhì)量至關(guān)重要,因為人類視覺系統(tǒng)對圖像的邊緣比較敏感[6]。為了能夠很好的保持圖像的邊緣,出現(xiàn)了邊緣檢測法(也稱梯度法)[18][19]。該算法通過計算綠色分量的梯度來檢測圖像邊緣的方向,然后沿邊緣的方向?qū)D像的缺失顏色分量進行插值。如Hibbard提出使用綠色分量的梯度來確定邊緣的方向[20],而Laroche和Prescott則采用色度分量的二階導(dǎo)[21]。Hamilton和 Adams則綜合了梯度和二階導(dǎo)數(shù)來確定邊緣類型,然后使用代數(shù)平均外加一個由二階導(dǎo)數(shù)構(gòu)成的修正項(Correction Terms)對缺失顏色分量進行插值[13]。Hirakawa和Parks則提出先將圖像分別沿水平和垂直邊緣方向插值完,然后轉(zhuǎn)換到CIELAB空間并使用局部一致性(local homogeneity)法則來判定該采用水平還是垂直方向的插值[22]。盡管這些算法中邊緣檢測的判定方法不一樣,但判定結(jié)果無非只有兩種,即水平邊緣和垂直邊緣。為了彌補傳統(tǒng)邊緣檢測法的不足,學者們提出同時檢測多個方向的邊緣并根據(jù)各邊緣的可能性分別為之賦一個權(quán)值,然后缺失像素由鄰域像素的加權(quán)和得到[12][23]。不管是使用邊緣檢測法也好,雙線性插值也好,如果對缺失顏色的插值只用到同一個顏色通道中的相鄰像素信息,而忽略了三個顏色通道之間的相關(guān)性,則插值效果并不會太理想。
研究表明,對于一幅普通RGB圖像,各個通道之間的相關(guān)性介于0.25到0.99之間[24]。這種相關(guān)性可以指導(dǎo)我們更準確地對Bayer圖像進行插值,因為我們不只使用當前像素同一顏色通道的信息,還可以使用其它兩個顏色通道的信息。正是基于這種顏色分量之間的相關(guān)性,出現(xiàn)了另一種Bayer插值方法,即信號相關(guān)法[16][25][26]。信號相關(guān)法基于色調(diào)恒定(Constant Hue)假設(shè),有兩種算法模型。一種是顏色比(color ratio)模型,該模型假設(shè)在圖像的局部區(qū)域內(nèi),各個顏色通道的比值是恒定的[23];另一種是顏色差模型,也叫對數(shù)顏色比(logarithm of color ratio)模型,該模型假設(shè)局部區(qū)域內(nèi)各個通道之間的顏色差是恒定的[16]。比值計算需要將兩個量相除,因而基于顏色比模型的插值算法難免會需要除法運算。從硬件實現(xiàn)的角度來講,除法是非線性運算,也是四種代數(shù)運算中最耗資源的一種。相反地,顏色差模型由于只涉及加減法,因而更適于用硬件實現(xiàn)。
本文的目的是設(shè)計一種適合實時硬件實現(xiàn)的Bayer插值算法。從以上的文獻分析中,我們得到如下啟發(fā):第一,使用的插值窗口尺寸,特別是窗口的高度,應(yīng)該盡量少;第二,要充分考慮三個顏色通道的相關(guān)性以及圖像的邊緣紋理;第三,插值運算盡量使用簡單運算,避免使用乘除法。此外,從文獻[27]中我們還得到一個啟發(fā),那就是:對同一個像素進行插值時,各個顏色分量沿同一種邊緣進行插值,這樣可以有效地減少偽色(artifact)。
為了降低存儲單元的使用量,本文的算法對像素的插值采用3×5的窗口,因此只需兩個行緩存就能實現(xiàn)流水線插值。就8位全高清(1920×1080)Bayer圖像來講,本文的算法比大多數(shù)使用5×5或7×7插值窗口的算法分別節(jié)約3.75k和7.5k字節(jié)的緩存。同時,為了發(fā)揮硬件并行處理的優(yōu)勢,每個時鐘周期用兩條流水線的方式同時對相鄰兩個像素進行插值,因此實際的插值窗口大小為3×6,如圖2所示。在設(shè)計插值算法時,借鑒了邊緣檢測法和信號相關(guān)法;在設(shè)計插值算式時,借鑒了顏色差恒定法。
圖2 對33和34號像素插值采用的3×6插值窗口
與傳統(tǒng)的邊緣檢測法不同,在這里是采用加權(quán)梯度法來判定沿各個方向的平滑度,缺失顏色分量的插值均沿加權(quán)梯度最小的方向進行。首先,利用被插值像素的3×5鄰域,分別計算東、西、南、北四個方向的梯度。東、南、西、北四個方向向量分別為(0,1),(1,0),(0,-1)以及(-1,0),每個像素的方向梯度都是多種梯度的加權(quán)和。對于第i行j列像素P(i,j),定義其四種梯度運算
式中,兩個梯度函數(shù)定義如下
對于水平方向(東向和西向)的梯度計算,采用前面三個梯度值的加權(quán)和;而對于垂直方向(南向和北向)的梯度計算,則采用后面三個梯度值的加權(quán)和。對于P(i,j)像素,方向梯度計算公式為
式中,(a,b)的取值為東、南、西、北四個方向向量。假設(shè)四個方向梯度中,最小梯度對應(yīng)的方向為(x,y)。那么對缺少顏色分量的插值沿著最平滑(方向梯度值最小)的方向進行。對于圖1所示的Bayer圖像,如果P(i,j)像素是亮度像素,那么該像素的兩個色度分量的插值公式分別為
當 i為奇數(shù)時,R=C1,B=C2;否則,R=C2,B=C1。
如果P(i,j)像素是色度像素,那么該像素的亮度分量插值公式在水平方向上與式(8)一致,垂直方向上與式(9)一致。缺失的色度分量的插值公式為
式中,G(i,j,x,y)表示P(i,j)像素上插值得到的亮度分量,和函數(shù)f3定義如下:
在實際應(yīng)用中發(fā)現(xiàn),如果Bayer插值沿最平滑的兩個方向進行(而不是一個方向),然后最終的結(jié)果取這兩者的平均,插值圖像的質(zhì)量會有一定的改善。
在這里使用的測試圖像是經(jīng)常用于評估圖像壓縮及插值算法性能的 Kodak測試圖像集[10][16],該測試圖像集是通過膠卷相片掃描得到的 RGB圖像[3]。我們從中選擇了兩幅(Lighthouse和Sail),它們都擁有豐富的邊緣和方向復(fù)雜的特征,所以很適合用來測試插值算法的性能。首先從全彩色RGB圖像中抽取出Bayer陣列圖像[28],然后用雙線性插值法和本文的算法分別對它進行彩色插值。圖3給出了該兩幅圖像原始圖像、各方法的插值結(jié)果圖像及其殘差圖像。為了方便觀看及比較,這里對殘差圖像乘了一個系數(shù)4。
圖3 本文算法與雙線性Bayer插值方法的插值結(jié)果比較
最后采用PSNR以及CIELAB空間顏色誤差兩種客觀評價指標將各個算法的插值結(jié)果進行比較。前者是常用的客觀圖像質(zhì)量評價指標[6][12],后者則因與人類視覺感知規(guī)律更符合因而越來越多地被用來評價圖像質(zhì)量[3][12][4][28],它的表達式如下:
式中,N代表圖像的像素個數(shù),O(n)Lab和R(n)Lab分別代表原始圖像和重建后的圖像在CIELAB空間中第n個像素的值。表1給出了兩種算法的插值誤差的分析。
表1 本文的算法與雙線性Bayer插值方法的客觀插值誤差比較
本文提出了一種適合硬件實現(xiàn)的Bayer插值算法,該算法對像素的插值只使用了高度為3的插值窗口,在硬件實現(xiàn)時,只需要消耗兩個行緩存,因而很節(jié)約硬件資源。同時,由于插值算式全部采用加減法和移位以及比較(求絕對值),計算復(fù)雜度低,適合用硬件實現(xiàn)。實驗結(jié)果表明,該方法比傳統(tǒng)的雙線性插值方法效果好。
[1]Lukac R and Plataniotis K N.Color filter array:design and performance analysis[J].IEEE Transactions on Consumer Electronics.2005,51(4):1260-1267.
[2]Bayer B E.Color imaging array[P].U.S.Patent 3971065,Jul.1976.
[3]Li X,Gunturk B and Zhang L.Image demosaicing:a systematic survey[J].Proceedings of SPIE,Visual Communications and Image Processing,2008,6822.
[4]Ramanath R,Snyder W E and Bilbro G L.Demosaicking methods for Bayer color arrays[J].Journal of Electronic Imaging.2002,11(3):306-315.
[5]Dubois E.Frequency-Domain Methods for Demosaicking of Bayer-Sampled Color Images[J].IEEE Signal Processing Letters,2005,12(12):847-850.
[6]Zhang L and Wu X.Color Demosaicking via Directional Linear Minimum Mean Square Error Estimation[J].2005,14(12):2167-2178.
[7]Gunturk B,Glotzbach J,Altunbasak Y,Schafer R,et al.Demosaicking:color filter array interpolation in single-chip digital cameras[J].IEEE Signal Processing Magazine,2004,(9)
[8]Kabukcu G and Yurdakul A.Low-cost solution to on-Line color filter array demosaicking[J].International Journal of Imaging Systems and Technology.2007,l,17(4):232-243
[9]Lian N,Chang L,Tan Y and Zagorodnov V.Adaptive filtering for color filter array demosaicking[J].IEEE Transactions on Image Processing,2007,16(10):2515-2525.
[10] Li X.Demosaicing by successive approximation[J].IEEE Transactions on Image Processing,2005,14(3):370-379.
[11]Gunturk B K,Altunbasak Y and Mersereau R M.Color plane interpolation using alternating projections[J].IEEE Transactions on Image Processing,2002,11(9):997-1013.
[12]Lu W and Tan Y.Color Filter Array Demosaicking:New Method and Performance Measures[J].IEEE Transactions on Image Processing.2003,12(10):1994-1210.
[13]Hamilton J F and Adams J E.Adaptive color plane interpolation in single sensor color electronic camera[P].U.S.Patent No.5629734,May 1997.
[14] Karloff A and Muscedere R.A Low-Cost,Real-time,Hardware-Based Image Demosaicking Algorithm[J].IEEE International Conference on Electro/Information Technology.2009,146-150.
[15]Sakamoto T,Nakanishi C and Hase T.Software Pixel Interpolation for Digital Still Cameras Suitable for a 32-Bit MCU[J].IEEE Transactions on Consumer Electronics,1998,44(4):1342-1352.
[16]Pei S C and Tam I K.Effective color interpolation in CCD color filter array using signal Correlation[J].IEEE Transactions on Circuits and System for Video Technology,2003,13(6):503-513.
[17]Hsu W and Fuh C S.Real-time demosaicking for embedded systems[J].International Conference on Consumer Electronics,2007,1-2.
[18]Adams J E.Interactions between Color Plane Interpolation and Other Image Processing Functions in Electronic Photography[J].Proceedings of SPIE,1995,2416:144-151.
[19]Hibbard R H.Apparatus and method for adaptively interpolating a full color image utilizing chrominance gradients[P].U.S.Patent 5382976,1995.
[20]Hibbard R H.Apparatus and method for adaptively interpolating a full color image utilizing chrominance gradients.U.S.Patent 5382976,1995.
[21]Laroche C A,Prescott M A.Apparatus and method for adaptively interpolating a full color image utilizing chrominance gradients.U.S.Patent 5373322,1994.
[22]Hirakawa K and Parks T W.Adaptive homogeneity-directed demosaicing algorithm[J].Proceedings of IEEE International Conference on Image Processing,2003,(3):669-672.
[23] Kimmel R,Demosaicking:Image reconstruction from color CCD samples[J].IEEE Transactions on Image Processing,1999,8(9):1221-1228.
[24]Ramanath R and Snyder W E.Adaptive demosaicking[J].Journal of Electronic Imaging.2003,12(4):633-642.
[25]Kuno T and Sugiura H.New Interpolation Method Using Discriminated Color Correlation for Digital Still Cameras[J].IEEE Transactions on Consumer Electronic,1999,45(1):259-267.
[26]Cok D.Signal Processing Method and Apparatus for Producing Interpolated Chrominance Values In a Sampled Color Image Signal[P].U.S.Patent 4642678,1987.
[27]Wu X and Zhang N.Primary-consistent soft-decision color demosaicing for digital cameras[J].IEEE Transactions on Image Processing,2004,13(9):1263-1274.
[28]Chung K and Chan Y.A Low-Complexity Joint Color Demosaicking and Zooming Algorithm for Digital Camera[J].IEEE Transactions on Image Processing.2007,6(7):1705-1715.