适合实时硬件实现的Bayer图像插值算法
2011-07-05郭建亚徐智勇
郭建亚,徐智勇
(1.中国科学院光电技术研究所,成都610209;2.中国科学院研究生院,北京100190)
0 引言
近年来,数字彩色CCD,特别是基于CMOS图像传感器的CCD,在商业及工业邻域都得到了广泛的关注和应用。通常的数码相机都采用单一感光器件上面覆盖一层滤色阵列(CFA)来实现[1]。该虑色阵列的每个滤色单元仅允许特定的一部分光谱通过,因此输出图像中每个像素仅有一种颜色分量被记录下来,剩下的两个分量则需要根据相邻的像素预测得到,这个过程就称作CFA插值。因为覆盖了CFA的图像传感器输出的图像有点类似马赛克,因此通过CFA插值的方式来获得全彩色图像的方法也通常被称作去马赛克(Demosaicing)。
目前最常用的CFA是Bayer阵列[2],它有四种排列形式。图1给出了一个典型的5×5的Bayer阵列及其绿色通道,每个方格中的前后两位数分别代表行号和列号。Bayer阵列图像有一半是绿色像素(行号与列号之和为偶数),另外各有四分之一分别是红色像素(奇数行的偶数列)和蓝色像素(偶数行的奇数列)。绿色通道常被称为亮度(Luminance)通道,而红色和蓝色通道则被称为色度(Chrominance) 通道[3][4][5][6]。之所以绿色像素的采样样本多,是因为人眼对可见光光谱敏感度的峰值位于中波段,这正好对应着绿色光谱成分[4][6][7][8]。当一幅数字图像被记录以后,相机需要对它进行一系列的处理,包括白平衡、伽马校正以及压缩存储等等,而这个处理链的首要环节就是CFA插值。
图1 Bayer滤色阵列及其绿色通道
自Bayer CFA问世以来,已有大量针对Bayer图像的插值算法出现。然而目前学术界提出的很多种算法中,大多数只是针对离线独立使用或者是后期处理的应用场合。这些算法通常假设Bayer图像已经获得并且存储在存储器里,而他们研究的目的就是使用尽量复杂的算法,甚至对同一幅图像进行轮番[9]或者迭代处理[10],以使插值后的图像有尽可能高的质量。例如,逐次逼近算法[10]和规则化方法[11]就是迭代算法的典型,这些方法对一幅Bayer图像的插值往往需要迭代很多次,并且其时间花费是不确定的,跟具体图像及算法的收敛速度有关,因而不适合实时应用场合。有些算法则过分依赖绿色分量的插值[6][12][13],这些算法第一轮将所有缺失的绿色分量都插值完毕,然后对于红色和蓝色分量的插值都借鉴已获得的绿色分量。这显然是不能用实时流水线实现的,因为在硬件流水线里,只有当前被插值像素之前的那些像素的缺失绿色分量才是已知的。大多数面向硬件的高速、实时的商业及工业应用如实时视频监控、工业质量控制检查等等,都是不允许有太多的延时、不能提供足够的存储单元和其它硬件资源来实现一个计算复杂度相当高的插值算法[14]。因此,研究一种节省硬件资源、适合实时在线插值又有很好插值效果的Bayer插值方法是非常实用而且是十分必要的。针对Bayer插值的硬件实现,如何降低计算资源及存储单元使用量并做到低延迟的实时处理,本文的研究所关注的重点。
1 适合硬件实现的Bayer插值方法设计原则
存储单元使用量如寄存器、缓存、外存等跟插值算法的缺失颜色分量估计所使用的数据源密切相关。在Bayer插值中,一个像素的两个缺失颜色分量都是通过当前像素及邻域像素估算得到的,因此需要把计算用到的邻域像素预先放到一个窗口(插值窗)中。从大量的文献中可以发现,几乎所有插值算法在实现时都采用插值窗策略。插值窗的维数可以是3×3[15],5 ×5[16],7 ×7[12]或者其它尺寸,甚至可以达到跟整个图像的尺寸一样大[10]。假设窗口的高度是h,那么一般来讲,当前插值像素的前h-1行数据是需要缓存的,即需要h-1个行缓冲器。此外,插值运算需要的寄存器数量也跟插值运算使用的像素数量有关。因此,插值窗的大小可以作为衡量一个Bayer插值算法存储单元使用量的重要指标。非存储单元的使用量则跟算法的的计算复杂度有关。相对来讲,二元加减法、逻辑运算、关系运算及移位运算是最节省资源的运算。尽管乘法跟除法及其它非线性运算适合基于嵌入式系统的实时Bayer插值[14],但是用硬件实现则非常耗资源而且计算效率低[14]。因此在设计适合实时硬件实现的Bayer插值算法时,应尽量使用简单的运算,避免用乘除法。
2 Bayer插值算法介绍
在所有的Bayer插值算法中,双线性插值算法[15]是最简单的方法。该算法中,缺失的颜色分量用同一颜色通道的相邻像素求平均得到,因而仅需要3×3的插值窗口,也就是说只需要两个行缓存。该算法虽然计算简单、资源耗费量少,但是插值后的图像容易出现伪色(artifact),特别是在图像中纹理清晰或边缘尖锐的地方该现象更明显。
图像的边缘对于整幅图像的质量至关重要,因为人类视觉系统对图像的边缘比较敏感[6]。为了能够很好的保持图像的边缘,出现了边缘检测法(也称梯度法)[18][19]。该算法通过计算绿色分量的梯度来检测图像边缘的方向,然后沿边缘的方向对图像的缺失颜色分量进行插值。如Hibbard提出使用绿色分量的梯度来确定边缘的方向[20],而Laroche和Prescott则采用色度分量的二阶导[21]。Hamilton和 Adams则综合了梯度和二阶导数来确定边缘类型,然后使用代数平均外加一个由二阶导数构成的修正项(Correction Terms)对缺失颜色分量进行插值[13]。Hirakawa和Parks则提出先将图像分别沿水平和垂直边缘方向插值完,然后转换到CIELAB空间并使用局部一致性(local homogeneity)法则来判定该采用水平还是垂直方向的插值[22]。尽管这些算法中边缘检测的判定方法不一样,但判定结果无非只有两种,即水平边缘和垂直边缘。为了弥补传统边缘检测法的不足,学者们提出同时检测多个方向的边缘并根据各边缘的可能性分别为之赋一个权值,然后缺失像素由邻域像素的加权和得到[12][23]。不管是使用边缘检测法也好,双线性插值也好,如果对缺失颜色的插值只用到同一个颜色通道中的相邻像素信息,而忽略了三个颜色通道之间的相关性,则插值效果并不会太理想。
研究表明,对于一幅普通RGB图像,各个通道之间的相关性介于0.25到0.99之间[24]。这种相关性可以指导我们更准确地对Bayer图像进行插值,因为我们不只使用当前像素同一颜色通道的信息,还可以使用其它两个颜色通道的信息。正是基于这种颜色分量之间的相关性,出现了另一种Bayer插值方法,即信号相关法[16][25][26]。信号相关法基于色调恒定(Constant Hue)假设,有两种算法模型。一种是颜色比(color ratio)模型,该模型假设在图像的局部区域内,各个颜色通道的比值是恒定的[23];另一种是颜色差模型,也叫对数颜色比(logarithm of color ratio)模型,该模型假设局部区域内各个通道之间的颜色差是恒定的[16]。比值计算需要将两个量相除,因而基于颜色比模型的插值算法难免会需要除法运算。从硬件实现的角度来讲,除法是非线性运算,也是四种代数运算中最耗资源的一种。相反地,颜色差模型由于只涉及加减法,因而更适于用硬件实现。
3 加权梯度Bayer插值算法
本文的目的是设计一种适合实时硬件实现的Bayer插值算法。从以上的文献分析中,我们得到如下启发:第一,使用的插值窗口尺寸,特别是窗口的高度,应该尽量少;第二,要充分考虑三个颜色通道的相关性以及图像的边缘纹理;第三,插值运算尽量使用简单运算,避免使用乘除法。此外,从文献[27]中我们还得到一个启发,那就是:对同一个像素进行插值时,各个颜色分量沿同一种边缘进行插值,这样可以有效地减少伪色(artifact)。
为了降低存储单元的使用量,本文的算法对像素的插值采用3×5的窗口,因此只需两个行缓存就能实现流水线插值。就8位全高清(1920×1080)Bayer图像来讲,本文的算法比大多数使用5×5或7×7插值窗口的算法分别节约3.75k和7.5k字节的缓存。同时,为了发挥硬件并行处理的优势,每个时钟周期用两条流水线的方式同时对相邻两个像素进行插值,因此实际的插值窗口大小为3×6,如图2所示。在设计插值算法时,借鉴了边缘检测法和信号相关法;在设计插值算式时,借鉴了颜色差恒定法。
图2 对33和34号像素插值采用的3×6插值窗口
与传统的边缘检测法不同,在这里是采用加权梯度法来判定沿各个方向的平滑度,缺失颜色分量的插值均沿加权梯度最小的方向进行。首先,利用被插值像素的3×5邻域,分别计算东、西、南、北四个方向的梯度。东、南、西、北四个方向向量分别为(0,1),(1,0),(0,-1)以及(-1,0),每个像素的方向梯度都是多种梯度的加权和。对于第i行j列像素P(i,j),定义其四种梯度运算
式中,两个梯度函数定义如下
对于水平方向(东向和西向)的梯度计算,采用前面三个梯度值的加权和;而对于垂直方向(南向和北向)的梯度计算,则采用后面三个梯度值的加权和。对于P(i,j)像素,方向梯度计算公式为
式中,(a,b)的取值为东、南、西、北四个方向向量。假设四个方向梯度中,最小梯度对应的方向为(x,y)。那么对缺少颜色分量的插值沿着最平滑(方向梯度值最小)的方向进行。对于图1所示的Bayer图像,如果P(i,j)像素是亮度像素,那么该像素的两个色度分量的插值公式分别为
当 i为奇数时,R=C1,B=C2;否则,R=C2,B=C1。
如果P(i,j)像素是色度像素,那么该像素的亮度分量插值公式在水平方向上与式(8)一致,垂直方向上与式(9)一致。缺失的色度分量的插值公式为
式中,G(i,j,x,y)表示P(i,j)像素上插值得到的亮度分量,和函数f3定义如下:
在实际应用中发现,如果Bayer插值沿最平滑的两个方向进行(而不是一个方向),然后最终的结果取这两者的平均,插值图像的质量会有一定的改善。
4 本文算法与其它方法的比较
在这里使用的测试图像是经常用于评估图像压缩及插值算法性能的 Kodak测试图像集[10][16],该测试图像集是通过胶卷相片扫描得到的 RGB图像[3]。我们从中选择了两幅(Lighthouse和Sail),它们都拥有丰富的边缘和方向复杂的特征,所以很适合用来测试插值算法的性能。首先从全彩色RGB图像中抽取出Bayer阵列图像[28],然后用双线性插值法和本文的算法分别对它进行彩色插值。图3给出了该两幅图像原始图像、各方法的插值结果图像及其残差图像。为了方便观看及比较,这里对残差图像乘了一个系数4。
图3 本文算法与双线性Bayer插值方法的插值结果比较
最后采用PSNR以及CIELAB空间颜色误差两种客观评价指标将各个算法的插值结果进行比较。前者是常用的客观图像质量评价指标[6][12],后者则因与人类视觉感知规律更符合因而越来越多地被用来评价图像质量[3][12][4][28],它的表达式如下:
式中,N代表图像的像素个数,O(n)Lab和R(n)Lab分别代表原始图像和重建后的图像在CIELAB空间中第n个像素的值。表1给出了两种算法的插值误差的分析。
表1 本文的算法与双线性Bayer插值方法的客观插值误差比较
5 结束语
本文提出了一种适合硬件实现的Bayer插值算法,该算法对像素的插值只使用了高度为3的插值窗口,在硬件实现时,只需要消耗两个行缓存,因而很节约硬件资源。同时,由于插值算式全部采用加减法和移位以及比较(求绝对值),计算复杂度低,适合用硬件实现。实验结果表明,该方法比传统的双线性插值方法效果好。
[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.