曾偉民,黃春暉,陳炳來
(福州大學 物理與信息工程學院,福建 福州 350002)
隨著數碼相機、拍攝手機的普及,CCD/CMOS圖像傳感器近年來得到廣泛的關注和應用。對于專業相機,使用3個傳感器,每一個像素點都可以直接獲得R,G,B 3個值,每個傳感器需要精確的機械控制,以便對應各自的色彩通道,這是最昂貴的解決方法。在這種情況下,每個傳感器得到一幅完整的單通道圖像,最后再合成一幅全彩色圖像,而不會出現馬賽克現象。
一般數碼相機的傳感器(CCD或CMOS)約占整機總成本的10%~25%,為了減少成本,縮小體積,一般市場上的數碼相機大多采用單傳感器,即在傳感器的表面覆蓋一層色彩濾波陣列(Color Filter Array,CFA),其中 Bayer陣列在業界使用最為廣泛 (本文討論只針對此陣列),這樣一來每個像素點只能捕獲三基色R,G,B中的一個,而缺失另外兩個色彩值,這時候得到的是一幅馬賽克圖像。為了得到全彩色的圖像,需要利用其周圍像素點的色彩信息來估計出缺失的另外兩種顏色,這種處理叫作色彩插值,也稱作彩色插值或去馬賽克。
經過30多年的發展,學者們提出了各種各樣的色彩插值算法。本文對各種算法的優、缺點進行了深入的分析,并對Lu算法進行改進,使之能夠應用于實時FPGA硬件系統。
雙線性算法(Bilinear)[1],該算法始終在 3×3 窗口中求平均值,忽略了圖像的細節信息,以及圖像3個顏色通道之間的相關性,所以往往得不到滿意的插值效果,容易在邊緣處產生虛假色和彩色摩爾紋。
一階(Hibbard)[2],二階(Laroche)[3]微分算法,插值綠色通道G時,進行了邊緣檢測,插值紅/藍色通道(R/B)時利用不同顏色通道間的相關性(色差恒定性),因此插值效果較雙線性算法有了很大提高。但是,在插值通道G時,沒有用到通道相關性,插值通道R/B時,沒進行邊緣檢測,故插值的準確性不是很好。
自適應插值算法(Adams-Hamilton)[4],對一階、二階微分算法進行了改進,結合了一階微分和二階微分進行邊緣檢測,插值時對三通道都進行了邊緣檢測,并考慮了通道間的相關性,因此插值效果較一階、二階微分算法有了進一步提高。
以上算法雖然取得了很好的插值效果,但是它們在插值過程中都采用對周圍像素值取平均的方式,即對參與插值的像素賦予相同的權重,或0.5或0.25,這種方式被稱為線性插值。此方式實現起來比較簡單,但實際圖像的很多細節并非周圍像素值取平均可以描述的,而是側重于某一個方向,因此用線性插值法進行插值是不可取的。Kimmel算法[5]在結合邊緣檢測和色彩通道相關性的基礎上首次引入加權系數(即非線性插值),它根據梯度信息,對不同像素點賦予不同權重,非線性插值算法對邊緣具有很強的自適應能力[6],因此Kimmel算法取得了非常好的插值效果。Lu算法[7]也屬于此類算法,是對Kimmel算法的改進。首先,在加權系數的計算上,Lu算法采用Sobel算子和一維二階梯度算子相結合,計算簡單有效,避免了Kimmel算法中的復雜的開平方運算;其次,在色彩通道相關性上,Lu算法采用的是色差恒定性,計算簡單有效,不像Kimmel算法采用的是色比恒定性,需要用到除法,計算量大,并且容易出現噪聲點。Lu算法是當前常規算法中綜合性能最好的算法之一。
隨著新技術的產生與發展(如小波變換技術,人工神經網絡技術),出現了一些新的色彩插值算法(基于小波變換算法及基于神經網絡算法),這類算法以新技術為基礎,具有比常規算法更好的插值效果,但是這一類算法計算量非常巨大,不適合運用于實時硬件系統。
通過以上的分析,Lu算法是能運用于FPGA實時硬件系統綜合性能最好的算法。但是由于它采用了非線性插值方法,需要調用5個除法器,除法器是IC設計中最耗費硬件資源的單元,運算時間長,工作頻率低;此外,Lu算法對插值后的結果進行了迭代修正,需要對插值結果進行存儲。這些不僅浪費大量的硬件資源,大大增加系統的成本,并且很難實時處理。基于這些原因,本文對Lu算法進行改進,在不明顯影響插值質量的前提下,降低算法計算量,提高工作頻率,使之適合實時硬件系統。
按照Bayer模式的色彩濾波陣列,在有周期規律的采樣中,G像素的個數占像素總量的50%,R像素和B像素各占25%,G平面的像素數目更多,會有更少的混淆現象,對細節的保存要比其他兩個平面要好,G平面的插值好壞直接影響了R/B通道的插值,而且人眼對綠色最為敏感,因此對綠色通道仍然采用非線性插值方法。本文采用乘法和對比相結合的方法近似代替除法運算。由于R像素和B像素所占比例均只有25%,丟失的信息多,即使采用非線性插值算法,也無法很準確地插值,即在R/B通道的插值上采用線性插值方法和非線性插值區別不大,因此在R/B通道上采用線性插值方法。另外,Lu算法的迭代修正步驟,雖然能減少偽彩色和鋸齒形失真,但是需要對圖像進行存儲,浪費大量的硬件資源,大大增加系統的成本,而且很難實時實現。在Matlab仿真Kodak圖像數據庫中的24幅全彩圖像,通過對比修正前后的圖像,差異并不明顯。綜合考慮以上因素,本文不對插值后的圖像進行迭代修正,而是將其偽彩色和鋸齒形失真當成噪聲點,留給后續的去噪步驟進行處理。
1)插值R/B像素上的G分量
在邊緣檢測梯度計算上與Lu算法相同,仍采用Sobel算子和一維二階梯度算子相結合的方式。不同的是,Lu算法用4個不同方向梯度的倒數進行權重因子計算,本文直接用梯度進行計算,避免了4次除法運算,以圖1在像素點B44上插值綠色分量為G^44為例進行說明。

圖1 Bayer濾波陣列


由上可知在計算權重因子 α34′,α43′,α45′,α54′等仍然要用到除法,但是除法是不可取的,本文用乘法和對比相結合的方式近似計算權重因子。以α34′為例進行說明:首先,將分母α平均分成2n份(這樣可以用移位進行除運算),n的值取決于所需要的近似精度,則權重系數分別為,共2n個等級,精度為本文取n=5,即將α平均分成32份,精度為0.015625;其次通過對比,判斷分子 α43,α45,α54的落點位置 P,選擇與之最近的權重系數近似代替真實權重系數。α43′,α45′計算方法與 α34′一樣,α54′則多了兩個權重系數0和 1。
2)插值R/B像素點的B/R值
如圖 1所示,以插值B44上的為例,由于B44的斜方向上采樣到4個R分量,信息較多,采用較好的算法則能獲得較好的插值效果,因此采用自適應算法進行插值,具體算法如下:
定義:

3)插值G像素點的R/B分量
由于G像素點鄰域內所采樣到的R/B分量很少,精確的算法對插值效果的提高不明顯,故只利用色差恒定性原理進行插值,如圖1所示,以插值像素點G34上的,為例,其計算方法為

分別采用Lu算法和改進后的Lu算法對Kodak圖像數據庫中的24幅全彩圖像在Matlab上進行了插值,為了更準確地對比兩種算法的特性,筆者統計了整幅圖像的全局峰值信噪比和邊界像素點的峰值信噪比,在邊界檢測上使用的是Candy算子,通過對比數據發現:改進后的算法在G通道上的插值略遜于原算法,此差距可通過增加近似計算的精度來減小;在R/B通道的插值上,改進后的算法與原算法不相上下。觀察兩種算法插值恢復的圖像,幾乎無差異。即使差異最為明顯的Lighthouse圖像上的柵欄,差異也不會很明顯,截取后的柵欄對比如圖2所示。

圖2 Lighthouse柵欄插值效果對比
編寫兩種算法的Verilog HDL代碼。為了突出重點,兩種算法的代碼均未考慮數據的讀取、存儲和接口。由于迭代運算過程繁瑣,接口復雜,并且不影響問題的說明,為簡化起見,Lu算法的代碼不包含迭代修正過程。在Quqrtus II上選用Altera Cyclone II器件族中的EP2C15AF484C6綜合實現:Lu算法消耗了1599個LE,331個寄存器,4個內嵌乘法器;改進后的算法消耗了852個LE,280個寄存器,7個內嵌乘法器。時序分析結果:在 Fast model(極限頻率)下,Lu 算法為 72.5 MHz,改進后算法為 240 MHz;在 Slow model(保守頻率)下,Lu算法為31.25 MHz,改進后算法為112.5 MHz。仿真報告如圖3所示。

圖3 仿真報告圖
通過深入分析目前存在的各種色彩插值算法的優缺點,并對Lu算法進行了改進,避免了除法運算和迭代,使之適合FPGA硬件系統的實時實現。Matlab仿真結果表明,改進后的Lu算法在插值效果上略遜于原算法;在Quartus II上仿真表明,改進后的算法節省了大量的LE和寄存器等硬件資源,大大提高了工作頻率,很好地折中了插值效果和硬件實現難度之間的矛盾。
[1]HIBBARD R H.Apparatus and method for adaptively interpolating a full color image utilizing luminance gradients[EB/OL].[2009-06-10].http∶//www.freepatentsonline.com/5382976.html.
[2]LAROCHE C A,PRESEOTT M A.Apparatus and method for adaptively interpolating a full color image utilizing chrominance gradients[EB/OL].[2009-06-10].http∶//www.freepatentsonline.com/5373322.html.
[3]HAMILTON F,ADAMS J E.Adaptive color plane interpolation in single sensor color electronic ceamera[EB/OL].[2009-06-10].http://www.freepatentsonline.com/5652621.html.
[5]KIMMEL R.Demosaicking∶image reconstruction from color CCD samples[J].IEEE Trans.Image Processing,1999,8(9):1221-1228.
[6]劉曉松,楊新,文逡,等.一種用于數字圖像傳感器的彩色插值算法[J].中國圖象圖形學報,2003,8(5):516-521.
[7]LU Wenmiao,TAN Yappeng.Color filter array demosaicking:new method and performance measures[J].IEEE Trans.Image Processing,2003,12(10):1194-1210.