一种CMOS相机色彩还原算法
2014-11-09王成龙赵新宇
张 涛,王成龙,赵新宇
(中国科学院 长春光学精密机械与物理研究所,吉林 长春 130033)
1 引 言
光电经纬仪[1]在现代靶场光学测量中得到了广泛应用,随着被测目标向高速、小型化、低可探测性方向发展,光电经纬仪所搭载的传感器也开始向高分辨率、多光谱、彩色成像方向发展。为了更好的测量目标特性和取得更真实、鲜艳的目标图像,靶场对彩色图像的需求日益增加。
以往为了取得彩色图像,一般采用3CCD彩色相机,这种相机具有色彩真实鲜艳、对比度高、动态范围大等优点,但同时也有光学系统复杂、装调维护困难、帧频低(广播级3CCD相机一般为24Hz或25Hz)、总像素有限、数据处理困难等缺点[2],所以用于实况记录更多而用于跟踪与测量较少。而普通的CCD和CMOS相机光学系统简单、帧频高、总像素数高,适用于跟踪和测量而不适合作为实况记录。因此研究出一种能兼顾跟踪测量和实况记录的色彩还原系统就有了非常重要的意义。
2 Bayer滤波原理及还原算法
2.1 Bayer滤波
如果在黑白CCD或CMOS成像器件表面覆盖一层微小的光学滤镜,使器件的每个像素仅能对RGB三色中的一个分量感光,这样整个成像器件产生的图像有类似马赛克的效果,在针对单个像素计算其真正的颜色时,需要获取其邻接像素的感光信息,然后进行白平衡计算再进行色彩还原。这种方法被称为彩色滤波阵列[3-4](Color Filter Array,CFA)。CFA算法可用于黑白成像器件,如果算法合适,则既能利用CCD和CMOS器件的高帧频高像素数,又可获取彩色图像。
在CFA算法中,Bayer滤波[5-7]应用广泛且效果良好,其基本结构如图1所示。其中R、G、B分别代表红、绿、蓝三色分量。
图1 Bayer滤波结构Fig.1 Construction of Bayer filter
从图1可看出,在Bayer滤波中,R、G、B三个分量总数不同。考虑到人眼视觉对绿色更敏感,分辨能力更强,而且绿色在可见光中占据了更宽的光谱范围,所以G分量占了总数的一半。因此对R和B分量进行计算时,可以G分量为基准。
2.2 双线性插值法及其改进
在Bayer滤波的色彩还原中,双线性插值算法[5]是对单个分量进行独立插值的经典算法,以图1的CFA为例,取坐标(3,2)点,对R分量感光,则计算其G和B分量的公式为:
由式(1)易知,双线性插值法的优点是算法简单,滤波器设计容易,计算量小,非常适用于实时处理。但缺点也很明显,首先是滤波器大小始终为3×3,忽略了图像细节,更重要的是这种算法在单个颜色分量间独立插值,忽略了3个颜色分量之间的相关性。
可以预见该算法在图像中的平滑区域内效果较好,但在图像的边缘处,由于像素取值具有方向性,如果颜色反差大,则用双线性插值会产生很大误差,在图像边缘呈现锯齿状效果,称为拉链效应[8-9]。由上所述G 分量在图像中总数更多,则拉链效应更明显,所以在插值运算中应更精确地恢复G分量,改善色彩还原效果。
基于双线性插值法的缺点和G分量的重要性,考虑在恢复G分量时使用梯度算法[7],即通过计算梯度来检测边缘的方向,进而选择合适的插值方向,使计算过程不跨越边缘,从而减少拉链效应。
仍以图1为例,假设Δh和Δv分别是该像素在水平方向和垂直方向的梯度,则有:
若Δh<Δv,即认为水平方向有边缘的概率大于垂直方向,则插值在水平方向进行,反之若Δh<Δv,则在垂直方向进行,若Δh=Δv,则该像素仍在平滑区域,在两个方向都进行插值。可将式(1)中计算G分量的算式优化为:
而对于B分量,对于坐标(3,2)因为并不是水平和垂直邻接的像素,则计算时无法直接判断边缘是否在两个方向,需要对(2,1)、(2,3)、(4,1)、(4,3)4个对B分量感光的像素进行判断。则有如下判据,设
而对R分量其值保持不变。
式(2)、(3)、(4)、(5)联立求解同样可以得到还原参数,这种方法和式(1)对比可以看出两种算法可以的算法复杂度和计算量并没有显著的增加。
3 硬件设计
CMOS相机采用Dalsa公司的1M120,使用的工作模式为1024(H)×1024(V),帧频100 Hz,数据位宽8bit,该相机灵敏度高、动态范围宽,像元大小适中,可兼顾捕获和测量功能。
在以往的光测设备中,为了满足实时跟踪的要求,图像处理硬件平台多选用DSP+FPGA的模式,但随着PC硬件处理能力的快速发展,使用PC平台+工业级数字图像采集卡的模式也可以满足实时性的要求。
数字图像采集卡使用Dalsa公司出品的X64-Xcelera-full,该卡支持 Camera-Link full标准,接口为PCI-E×4,硬件的结构和数据流图如图2所示,处理软件从采集卡缓存读入图像,进行处理后得到目标脱靶量和还原的彩色图像,将脱靶量输出至串行通信卡,将彩色图像输出至显卡,显卡有数字和模拟接口,再分别输出给相应的传输和显示设备。
图2 硬件数据流图Fig.2 Flow chart of hardware
4 软件设计
采用 VC++进行软件设计[10-11],同时利用采集卡提供的Sapera开发库简化一些如接收、发送、控制相机等底层操作。同时考虑到一帧数据量比较大,采用乒乓算法,在软件中为图像处理开辟两个缓存区,首先写满第一个缓存区,然后进行计算,读入的数据写入第二个缓存区以备使用,第一个缓存区的数据计算完毕后清空,计算第二个缓存区中数据,同时将读到的数据再写入第二个缓存,如此往复,以提高软件运行效率。软件的关键流程图如图3所示。
图3 软件流程图Fig.3 Flow chart of software
5 效果评价
在图像处理中评价重构图像质量常用两种方法:均方根误差(Mean Square Error,MSE)和最高峰值比[12](Peak Signal-to -noise Ratio,PSNR)。这两种计算方法分别如下:
式中:M和N 分别代表图像尺寸的行列数,f0(i,j)和fr(i,j)分别代表原始图像和恢复后图像的第(i,j)个像素的强度分量。在式(7)中,PSNR是某个分量的值,即真彩色图像可以分成R、G、B三个分量独立的比较,反映了原始图像和恢复后的图像相似的程度,PSNR越大,则越相似。表1给出了本文所论述方法和双线性插值算法对实验图像进行处理后的PSNR值以进行定量对比。
表1 算法PSNR比较Tab.1 Comparison of algorithms
从表1中可以看出,检测边缘而后插值的算法PSNR比双线性插值法更高,平均提高了14%左右,性能有较大幅度提升。
考虑到靶场光测的实时性需求,需要对处理算法的时间性能进行定量测量。同样在相机的典型使用条件下进行测量。对100Hz,1024×1024的图像进行还原,对快速运动和慢速运动图像进行计算,每次计算10s数据,计算所有图像的平均处理时间和最长一次的处理时间,结果如表2所示。
表2 算法时间性能比较Tab.2 Comparison of time performance of algorithms
由表2可以看出:
(a)相机工作于100Hz时,最长的一帧处理时间也小于9ms,可见两种方法的处理时间均满足实时性要求;
(b)在都满足实时性要求的前提下,处理快速运动图像时,检测边缘插值算法的平均处理时间比双线性插值算法的处理时间长大约8%,处理慢速运动图像时处理时间长大约2%左右,性能差距不是特别大,而考虑到PSNR提高了14%左右,在时间性能上的损失是值得的。
6 结 论
根据Bayer格式CFA的原理提出了一种改进的彩色图像恢复算法,利用图像的梯度信息进行边缘检测而后再进行插值,算法复杂度低的同时性能提高14%左右,可以用于100Hz,1024×1024的图像实时彩色还原处理,达到了预期目的。如果增大边缘检测的邻域范围和使用卡尔曼滤波等算法,效果会更好,但同时算法复杂度会提高,时间性能会降低,如何在提高还原效果的同时保证实时处理所需要的时间性能则是下一步研究的重点。
[1]贾涛,吴能伟,陈涛.光电经纬仪组网测量位置估计的Cramer_Rao限[J].光电工程,2005,32(7):4-6.Jia T,Wu N W,Chen T.Cramer-Rao lower bounds of position estimation in a photoelectric theodolite-based network[J].Opto-Electronic Engineering,2005,32(7):4-6.(in Chinese)
[2]甘波,魏延存,郑然.CMOS图像传感器芯片的自动白平衡[J].液晶与显示,2011,26(2):224-228.Gan B,Wei Y C,Zheng R.Auto white balance algoritm for CMOS image sensor chip [J].Chinese Journal of Liquid Crystal and Displays,2011,26(2):224-228.(in Chinese)
[3]Funt B,Cardei V.Learning color constancy[C]//Proc of the 4th Int,l conf on Color Imaging and Applications,[S.I]:IEEE Press,1996:58-60.
[4]孙立新.LCD显示器的白平衡调整[J].液晶与显示,2011,26(2):220-2223.Sun L X.LCD white balance adjustment[J].Chinese Journal of Liquid Crystal and Displays,2011,26(2):220-2223.(in Chinese)
[5]赵兴梅,刘建伟,李孝强.数字相机色差空间双线性插值算法的实现[J].电子科技,2009,2(4):57-59.Zhao X M,Liu J W,Li X Q.Realization of bilinear interpolation method in color difference space for digital camera[J].Electronic Science and Technology,2009,2(4):57-59.(in Chinese)
[6]Pei S C,Tam I K.Effective color interpolation in CCD color filter array using signal correlation[J].IEEE Trans.Circuit and System for Video Technology,2003,13(6):503-513.
[7]尹勇,胡磊.一种改进的Bayer图像彩色恢复差值算法[J].计算机科学,2010,37(4):278-280.Yin Y,Hu L.Improved Interpolation algorithm for demosacing Bayer pattern images[J].Computer Science,2010,37(4):278-280.(in Chinese)
[8]杨永明,李清军,李文明,等.基于Bayer滤波的彩色面阵 CCD调制函数[J].光学精密工程,2012,20(7):1611-1618.Yang Y M,Li Q J,Li W M,et al.Modulation transfer function for color area CCD based on Bayer filter[J].Optics and Precision Engineering,2012,20(7):1611-1618.(in Chinese)
[9]Kimmel R.Image reconstruction from CCD samples[J].IEEE Trans,Image Processing,1999,8(9):1221-1228.
[10]冉峰,杨辉,黄舒平,等.面阵CCD彩色视频图像实时采集系统的设计[J].光学精密工程,2010,18(1):273-280.Ran F,Yang H,Huang S P,et al.Design of real-time color video capture system for area array CCD [J].Optics and Precision Engineering,2010,18(1):273-280.(in Chinese)
[11]俢吉宏,黄浦,李军,等.大面阵彩色CCD航测相机的辐射定标[J].光学精密工程,2012,20(6):1365-1373.Xiu J H,Huang P,Li J,et al.Radiometric calibration of large area array color CCD aerial mapping camera[J].Optics and Precision Engineering,2012,20(6):1365-1373.(in Chinese)
[12]罗潇,孙海江,陈秋萍,等.Bayer格式图像的实时彩色复原[J].中国光学与应用光学,2010,3(2):182-187.Luo X,Sun H J,Chen Q P,et al.Real-time demosaicing of Bayer pattern images[J].Chinese Journal of Optics and Applied Optics,2010,3(2):182-187.(in Chinese)