賈曉芬,郭永存,趙佰亭,黃友銳
(安徽理工大學智能礦山技術與裝備工程省重點實驗室,232001,安徽淮南)
在當今的數字信息時代,數碼相機的使用非常普及,為了縮小體積、降低成本,多數設備中僅有一個傳感器并覆蓋彩色濾波陣列(color filter array,CFA)。采用此結構的成像設備在每個像素點只能采集到一個顏色(紅、綠或者藍),其余兩個顏色需要估計,估計的過程被稱為CFA插值或去馬賽克。針對廣泛使用的CFA模式[1],大量致力于消除偽彩色、邊緣模糊、鋸齒現象的方法[2-4]相繼提出。
彩色圖像的鄰域像素之間具有較強的空間相關性,各通道間還存在強烈的色彩(光譜)相關性,充分利用圖像相關性才能獲得高質量的CFA插值效果。文獻[5-6]提出了基于顏色比的插值方法,文獻[7-8]提出了基于顏色差值的插值方法,均考慮了圖像相關性。結合了圖像相關性的先進技術能進一步提高插值精度,例如:黃麗麗等利用稀疏表示實現了CFA插值[9];Jia等利用支持向量機獲得了高質量的CFA插值圖像[10-11]。近年來,各種利用圖像梯度信息的方法取得了較好的插值效果[12-14],例如:Wu等利用多項式插值實現了CFA插值[4];Jain等將偏微分方程和有限差分法引入到了圖像處理中[15-16];Yang等利用有限差分實現圖像平穩過渡,從而完成了圖像拼接[17]。
圖像梯度的大小和方向體現邊緣信息,準確利用梯度不僅可以提高插值精度,還可以保護圖像的邊緣。將CFA圖像中的已知像素點作為離散的網格節點,利用像素間的空間相關性設計插值函數,可以實現有限差分對連續像素值的逼近,完成對丟失像素值的估計。研究梯度、有限差分及圖像相關性相結合的CFA插值方法是有意義的,鑒于此,本文設計了一種融合上述技術的稱為Bayer-CFA的插值方法。
有限差分法又稱網格法,是最早用計算機進行數值模擬的方法[18]。它將連續的定解區域劃分為差分網格,利用有限網格節點代替連續的求解區域,利用差商代替微分方程中的偏導數,得到相應的差分方程,再利用插值方法解差分方程,就可以得到原問題在離散點上的近似解。在數字圖像處理中,可以通過計算插值函數來逼近連續像素值。將有限差分用于圖像CFA插值時,可以把已知的像素值作為被稱之為網格節點的離散點,再用離散點插值估計出未知的像素值,即可得到圖像的連續像素值。
數字圖像實質上是二維離散函數,函數的導數就是圖像梯度,一般用差分近似表示。圖像梯度在圖像的每個像素點都是一個具有大小和方向的矢量,含有邊緣信息,邊緣處的梯度值較大,梯度的方向代表函數變化最快的方向。沿著邊緣方向插值能夠減少鋸齒現象。因此,CFA插值時利用梯度信息構造插值及修正的權重因子能提高插值精度。
CFA插值時,充分利用圖像的相關性是獲得高質量彩色圖像的保障。彩色圖像除了每個顏色平面上像素間具有空間相關性,各顏色平面之間還具有強烈的色彩相關性,并滿足色差恒定定理[7-8],即在局部區域內的色差值是常數。若K為色差值,則KR=IG-IR表示G(綠)平面和R(紅)平面對應像素之間的色差值,KB=IG-IB表示G平面和B(藍)平面對應像素之間的色差值,IR、IG、IB分別表示R、G、B平面的像素值,插值過程需要充分利用該特性。為有效結合有限差分、梯度及相關性,實現高精度CFA插值,本文設計了如圖1所示的插值流程。

圖1 CFA插值流程
首先結合空間相關性,用插值多項式的插值誤差構造插值函數,結合色差理論獲取插值算子,利用5×5鄰域內的梯度構造估計中心像素值的權重因子,完成G平面插值。然后用已知R像素點的對稱性調整插值函數,結合色彩相關性構建G和B像素點的插值函數,實現R平面插值。再用和R平面相同的方法實現B平面插值。完成插值后,在以插值點為中心的3×3鄰域內用梯度信息構造8個方向的權重因子,采用空間距離決定權重因子的加權系數實現梯度修正。

(1)
式中min{xi}≤ξ≤max{xi}。

f(x)≈f(x0)+f′(x0)(x-x0)+R1(x)
(2)
由有限差分方程可得
(3)
取x=x0+h/2,將式(3)代入式(2)可得
(4)
CFA圖像中的像素間隔為整數倍像素,為了將式(4)作為CFA圖像的插值函數,h的取值必須是偶數。圖像像素之間的距離越近,則空間相關性越強,反之則越弱。為了保證插值函數充分利用圖像的空間相關性,取h=2。此時,M項由2個依次相距2像素的點構成,N項由3個依次相距2像素的點構成。
(5)

(6)
(7)
將式(6)(7)代入式(5)可得
(8)
(9)
圖像的梯度包含邊緣信息,利用梯度信息實現插值有助于提高插值精度。為了獲得準確的梯度信息,在5×5鄰域內用待插值點的多個已知相鄰像素點計算梯度,利用梯度信息構造梯度算子,公式為
(10)
(11)
由式(10)(11)得到權重因子ωH=1/H、ωV=1/V,最終獲得B點的G像素估計值為
(12)
在R點插值G像素的方法同上,只需將式(5)~(11)中的B換成R即可。
G平面插值完成后,平面上的所有像素點均為已知。下面利用色差值和G平面上所有的已知像素值插值估計其余兩個平面。
在Bayer型CFA圖像中,G像素點有兩種位置:(1)只有G和R像素點的行,后文記為GR行;(2)只有G和B像素點的行,后文記為GB行。
2.3.1 G平面插值R像素 GR行的G點左右均為已知的R像素點,因此在G點的水平方向估算G點的色差,公式為
(13)
式中第一項對應式(4)的M項,第二項對應式(4)的N項。M項由G點左右相鄰的2個R點的色差值構成。N項由3個依次相距2像素的R點的色差值構成。
同理,GB行的G點上下均為已知的R像素點,在G點的垂直方向估算G點的色差值,公式為
(14)


圖2 B平面插值R像素的3×3鄰域

(15)


圖3 R平面插值B像素的3×3鄰域
不規則邊緣及紋理的存在,會使鄰域內的像素值發生突變,導致空間相關性減小,引起插值誤差。為了有效減小插值誤差,根據不同插值方向的相鄰像素間的空間相關性的差異來分配不同的插值權重,用來修正插值結果,從而達到提高插值精度的目的。


(a) B點或R點估計的空間位置 (b) B點估計的空間位置 (c) G點估計的空間位置圖4 插值點的空間位置
在3×3鄰域內對插值結果進行修正的過程分為三步,具體步驟如下。
第一步,計算中心像素點與其8鄰域的像素差值,即中心點在8個方向的梯度值,公式為
1=|Xi,j-Xi,j+1|;2=|Xi,j-Xi,j-1|;
3=|Xi,j-Xi+1,j|;4=|Xi,j-Xi-1,j|;
5=|Xi,j-Xi-1,j-1|;6=|Xi,j-Xi-1,j+1|;
7=|Xi,j-Xi+1,j-1|;8=|Xi,j-Xi+1,j+1|
(16)
式中X=R,G,B。
第二步,計算權重因子,公式為
ωm=1/m,m=1,2,…,8
(17)
G像素值:如圖4a所示,水平垂直四鄰域均為已知G像素值,對角四鄰域均為估計出的G像素值,為了提高修正精度,采用歐式距離決定加權系數,修正結果為
(18)
式中k1和k2分別是第2.2節獲得的G像素估計值及本節修正項的權重,滿足k1+k2=1,且k1>0.5,k2<0.5。
R像素值:如圖4b所示,對角四鄰域均為已知的R像素值,為充分利用已知像素值及鄰域像素間的空間相關性提高修正精度,采用棋盤距離決定加權系數,修正結果為
(19)
式中v1和v2分別是2.3節獲得的R像素估計值及本節修正項的權重,滿足v1+v2=1,且v1>0.5,v2<0.5。
R像素值:如圖4c所示,GB行的G點上下是已知的R像素值,GR行的G點左右是已知的R像素值,其余6個像素點的R像素值均為估計值,增大2個已知R像素值的權重,GR行的G點的R像素值為
(20)
GB行的G點的R像素值為
(21)
B像素值的修正方法和R像素值的類似,不再贅述。按照上述方法,首先在第2節得到各像素點的估計值,再用第3節得到的修正值去替代,即可得到最終的彩色圖像,完成CFA插值。
采用MatlabR2016a編程,在3.60GHz的Intel(R)Core(TM)i7-7700CPU、16.0GB內存的臺式機上運行本文程序。采用24幅分辨率為768×512的標準柯達彩色圖像,先下采樣成Bayer型CFA圖像,然后完成CFA插值。
為了驗證Bayer-CFA方法的有效性,分別進行以下兩個實驗。
(1)驗證梯度修正對插值精度的影響。
利用客觀指標作為目標函數,k1在區間[0.5,0.95]以0.05的步長遞增,同時k2在區間[0.5,0.05]以0.05的步長遞減,研究梯度修正時式(18)中涉及的權重系數,最終確定k1=0.7,k2=0.3。確定式(19)~(21)中涉及的權重系數v1和v2的方法與式(18)相同,最終得到v1=0.9,v2=0.1。
(2)驗證Bayer-CFA方法的插值效果。



表1 24幅圖像不同方法的rCPSNR和
表1的客觀數據表明,與Bayer-CFA方法相比,最具競爭力的方法是文獻[4]。然而,文獻[4]的rCPSNR不夠穩定,24幅圖像中,6幅取得了最優的效果,5幅獲得了適中的效果,其余13幅獲得了最差的效果。分析效果最好的6幅圖像,發現可以將其分為兩類:Kodim2、Kodim8、Kodim19屬于建筑景物圖;Kodim4,Kodim12、Kodim18屬于人物圖。分別選擇一幅紋理較多的圖像Kodim8和Kodim18展示主觀效果圖,并和Bayer-CFA方法相比較,結果見圖5。

(a)文獻[4]的Kodim8

(b)Bayer-CFA方法的Kodim8

(c)文獻[4]的Kodim18 (d)Bayer-CFA方法的Kodim18圖5 文獻[4]和Bayer-CFA方法對Kodim8和Kodim18的插值結果
圖5中,為展示細節,截取并放大了局部圖像,Kodim8在155列385行截取分辨率為80×110的圖像,Kodim18在365列255行截取分辨率185×75的圖像。從圖5a和5b可知,對Kodim8,文獻[4]在減少偽彩色方面優于Bayer-CFA方法,在窗戶等紋理較多的地方僅僅產生了少許的偽彩色。從圖5c和5d的局部放大圖像可知,對Kodim18,文獻[4]在項鏈處出現的偽彩色明顯少于Bayer-CFA方法,但在上下嘴唇的邊緣出現了非常顯眼的鋸齒現象,影響視覺效果。綜合上述分析,文獻[4]在減少偽彩色方面取得了較好的效果,但在減少鋸齒現象方面,還有待進一步改進。
圖6是對Kodim19和Kodim24兩幅圖像利用Bayer-CFA方法插值時不使用和使用梯度修正的結果。圖6a和圖6c為未修正結果,在圖6a的柵欄中間位置及最右側、圖6c的右側樹葉及煙筒左側的屋頂處分別出現了明顯的模糊和偽彩色。圖6b和圖6d是修正的結果,減少了上述偽彩色,很好地改善了圖像質量。可見,梯度修正能夠提高插值精度。
分別使用文獻[3]、文獻[4]、文獻[7]、文獻[9]、文獻[10]、文獻[12]和本文方法對Kodim7和Kodim20圖像進行CFA插值,結果見圖7和圖8。
圖7是從Kodim7圖像的338列144行處截取的分辨率為175×100的局部放大圖像,可以看出:文獻[7]的花瓣和右上的樹葉出現了明顯的偽彩色,右下角的樹葉邊緣有鋸齒現象;文獻[4]、文獻[10]和文獻[12]的花瓣上的偽彩色有所改善,但右下角的樹葉仍有明顯的鋸齒;文獻[3]僅在右下角的樹葉上出現少許鋸齒;文獻[9]獲得了和Bayer-CFA方法相當的效果,僅在樹枝上的葉莖處出現了少許偽彩色;Bayer-CFA方法獲得了最好的插值效果,沒有出現偽彩色和鋸齒,很好地保護了圖像的邊緣紋理細節。

(a)Kodim19不使用梯度修正

(b)Kodim19使用梯度修正

(c)Kodim24不使用梯度修正

(d)Kodim24使用梯度修正

(a)原圖 (b)文獻[3]結果 (c)文獻[4]結果

(d)文獻[7]結果 (e)文獻[9]結果 (f)文獻[10]結果

(g)文獻[12]結果 (h)文本結果 圖7 不同方法對Kodim7進行CFA插值后的局部放大結果

(a)原圖 (b)文獻[3]結果 (c)文獻[4]結果

(g)文獻[12]結果 (h)文本結果 圖8 不同方法對Kodim20CFA插值后的局部放大結果
圖8是從Kodim20圖像的244列265行處截取的分辨率為150×70的局部放大圖像,可以看出:文獻[4]的字母周圍和小女孩的輪廓處均有嚴重的偽彩色;文獻[9]、文獻[10]和文獻[12]的偽彩色明顯減少,尤其在小女孩的輪廓處明顯改善;文獻[3]和文獻[7]的插值效果較好,文獻[7]在字母E的中間一橫的上邊及字符串周圍出現了少許偽彩色,而[3]消除了字母E的處的偽彩色;Bayer-CFA方法的CFA插值質量最高,沒有出現偽彩色和鋸齒,很好地保護了圖像的邊緣。
操作算子的個數取決于測試圖像,大O階法通過統計操作算子的計算次數來估計復雜度,是一種事前分析估計法,它利用循環嵌套的層數衡量時間復雜度。對分辨率為X×Y的Bayer圖像,CFA插值時需要插值所有像素點,循環嵌套的層數為X×Y,時間復雜度為O(XY)。為了更好地分析算法復雜度,假設算法中每個條件出現的概率相同,表2列出了7種方法CFA插值時所需要的操作算子的計算次數。Bayer-CFA方法的操作算子計算次數僅少于文獻[4]和文獻[12],但是文獻[4]和文獻[9]需要迭代,文獻[10]需要訓練支持向量機,均會增加運算時間,增加算法復雜度。
表3是各種方法對Kodim19進行處理的CPU平均運行時間,可以看出,文獻[7]的運行時間最短,Bayer-CFA方法落后0.078s,但比平均性能指標位居第2的文獻[9]快了0.621s。綜上,Bayer-CFA方法在CFA插值性能和算法復雜度上均獲得了優勢。

表2 不同方法操作算子的計算次數

表3 CPU平均運行時間
邊緣像素點的插值精度是影響CFA插值效果的關鍵因素。本文在考慮圖像相關性的基礎上利用有限差分設計插值函數,結合梯度信息構造權重因子,實現對CFA插值圖像上丟失像素值的更精確估計,從而更逼近連續圖像。圖像梯度含有邊緣信息,沿著邊緣方向插值能有效削弱鋸齒現象。用梯度信息構造8個方向的權重因子,結合像素點的空間位置,利用距離決定8個權重因子的加權系數,完成修正后能有效提高插值精度。相較于EET和SSA方法,Bayer-CFA方法的rCPSNR分別提高了0.57dB和1.79dB,且能很好地保護圖像的邊緣細節。