董国伟 侯作勋 王震 潘铮 刘明 关晨辉
CMOS图像传感器自动白平衡算法及其FPGA实现
董国伟 侯作勋 王震 潘铮 刘明 关晨辉
(北京空间机电研究所,北京100094)
为提高图像处理效果和处理速度,使处理后图像颜色与人眼视觉主观感受到的颜色保持一致,文章提出了一种改进的自动白平衡算法。该方法以灰度世界法和全反射理论法为基础,通过自动评估图像的色彩丰富性并确定相应的规则动态选取优势算法进行处理。设计实现了相应的FPGA处理模块,通过采用高效的并行流水线技术,充分考虑硬件模块内部潜在的并行度,确保系统的实时处理能力。文章算法的优势在于对图像的自适应性和计算的快速性。对不同场景图像,该方法产生不同的阈值参数,进而选取不同的优势算法,确保系统的自适应性;对高速视频图像,该方法建立了一个简化的优势算法选取规则,有利于FPGA硬件电路的实现,从而保证了计算的快速性。仿真试验表明,基于该算法设计实现的FPGA硬件处理系统,对不同的场景均取得较好的处理效果,针对分辨率为1920像元×1080像元的视频图像,达到了优于25帧/s的实时处理速度。该算法硬件电路开销少,实时性好,适应性强,能有效提高图像品质,具有广阔的应用前景。
图像传感器 自动白平衡算法 现场可编程门阵列 航天遥感
CMOS图像传感器具有集成度高、成本低、动态范围宽、功耗小,以及抗弥散、抗辐照能力强等优越性能[1]。因此,不仅被广泛应用于安防监控、工业测量等领域,而且被越来越多的应用于遥感相机、星敏感器、可视遥测、目标跟踪等空间光学系统中[2],随着CMOS工艺的发展,CMOS图像传感器芯片的集成度不断提高,基于CMOS传感器设计的相机已成为市场的主流产品[3]。
数字图像处理包括图像插值、白平衡、YUV变换、图像增强等[4-5]。白平衡的作用是自动调节在不同色温光照条件下拍摄图像的颜色,使得这些图像的视觉主观感受和标准光源下拍摄的图像一致[6]。现有的白平衡算法包括:灰度世界算法(Gray World Method,GWM)[7]、全反射理论算法(Perfect Reflector Method,PRM)[7]、GWM和PRM正交组合算法(Quadratic Combining GWM & PRM,QCGP)[7]、模糊规则算法(Fuzzy Rule Method,FRM)[8]、Chikane算法[9]及文献[10-11]的算法等。其处理效果严重依赖于相应算法的运算复杂度。由于应用于CMOS相机系统中的实时图像处理算法需要采用嵌入式硬件电路实现,因此需要在图像处理效果、运算时间与计算复杂度等方面进行综合考虑。在较小硬件开销的前提下,如何提高图像处理速度和图像品质是硬件友好型图像处理算法的关键所在[12]。
本文提出一种基于GWM算法和PRM算法融合的改进算法。目前QCGP算法利用二次方程式把GWM算法和PRM算法结合,既可以对图像进行白平衡色彩修正且效果不错,又能保留两种算法理论的优点。但是由于计算复杂度高,实时性受到制约。本文面向CMOS图像传感器应用,设计一种适合FPGA实现的改进型实时自动白平衡算法。通过对GWM算法和PRM算法改进和融合,在适当增加硬件开销的基础上,有效提高了系统的处理速度和白平衡处理效果。
作为本文提出算法的基础,有必要对于GWM、PRM和QCGP算法进行简要介绍。
1.1 常用GWM、PRM和QCGP算法
任意一幅图像,当它有足够的色彩变化,则它的红R、绿G、蓝B的DN(Digital Number)均值会趋于一致。这是自动白平衡算法设计时普遍采纳的的基础理论。基于这一理论假设,GWM算法思路是统计出图像中红绿蓝三分量DN均值,找到合适的计算方法使三个均值趋于相等。GWM算法思路简单易于实现,但是当图像中色彩不丰富时,该算法往往会导致图像失真。
PRM算法也是在自动白平衡处理时广泛应用的理论。该理论认为将图像上“最亮点”作为参考“白点”,并进行相应的白平衡处理可以取得较好的处理效果。实际应用时,一般将“最亮点”定义为三个颜色分量DN值之和的最大值,或者YCbCr(Y表示亮度,Cb、Cr表示色度)空间中的Y最大值。PRM算法具有与GWM算法相同的优点,简单易实现,但是当图像的部分区域出现过度曝光时,可能造成该算法失效。实际应用时,仅使用一个点作为参考,其处理效果往往不甚理想。一种改进的方法是选取图像上最亮部分的均值作为参考进行图像自动白平衡处理,例如,计算图像中亮度前20%部分的均值作为参考值[7]。
无论是PRM算法还是GWM算法,都需要图像满足两种算法各自的假设,只有这样效果才比较理想。如果把这两种算法的优点组合使用,就能得到一种更好的算法,QCGP算法利用二次方程式把GWM算法和PRM算法结合,既可以对图像进行白平衡色彩修正且效果不错,又能保留两种算法理论的优点。
1.2 本文算法
分析比较可知,GWM算法和PRM算法均存在固有问题。当图像中色彩不丰富时,采用GWM算法进行处理往往会导致图像失真;而当图像的部分区域出现过度曝光时,采用PRM算法进行处理可能失效。而QCGP算法虽然综合利用了两种算法的优点,但是由于其算法相对复杂,对于百万像素的实时图像数据,其计算时间长,难以满足实时性要求。
针对上述白平衡算法的固有问题,本文提出了一种改进的自动白平衡算法。通过判断图像的均值色差cd,动态选用GWM算法或PRM算法。
图像均值色差定义如下式所示:
式中 Max(a1,a1,a1)、Min(a1,a1,a1)表示图像红、绿、蓝DN均值a1、a1、a1的最大值和最小值。
均值色差可以表示图像色彩丰富度,cd值大,说明红、绿、蓝中的某一色偏多,算法选择上,使用接近于PRM算法的自动白平衡算法进行处理;cd值小,说明红、绿、蓝三色相当,使用接近于GWM算法的自动白平衡算法进行处理。
算法选择及接近程度通过阈值参数v来确定,其与cd的关系如下式所示:
式中a=Max(a1,a1,a1);i=Min(a1,a1,a1)。经过多次实验,当cd≥2,即算法选择接近PRM算法时,v在60至220区间能够取得好的效果;当1.5≤cd<2,即算法选择在PRM算法与GWM算法间过度时,v在40至200区间能够取得好的效果。
根据阈值参数v,选取图像中红、绿、蓝DN值同时大于v的像素点作为选取样点。
v值越大,选取样点数越少,本文算法与PRM算法接近程度越大;v值越小,选取样点数越多,本文算法与GWM算法接近程度越大。
统计选取样点图像中红、绿、蓝DN均值a2、a2、a2,来确定调整系数、、。确定公式为:
=n/a2;=n/a2;=n/a2(3)
式中n=(a2+a2+a2)/3。
最后偏色校正,对图像数据中颜色分量数据进行调整,公式如下:
式中′、′、′为白平衡后图像的三个颜色分量数据。
为了有效提高时序,降低延时,便于优化升级。在FPGA设计时采用模块化设计方法[13-14],在模块实现时,采用并行算法和流水线技术[15-17]。FPGA采用Xilinx公司Virtex-2系列XQR2V3000型号芯片。
图1为CMOS相机FPGA图像处理系统的总体框图,其中自动白平衡模块处于系统的核心位置,并在图中以灰框标出。
图1 CMOS相机FPGA图像处理系统总体框图
图2给出了自动白平衡模块的结构图。该模块按照功能划分为三个子模块,分别是色温估计、增益计算和偏色校正子模块。
其中,色温估计子模块统计输入图像数据信息,计算出均值色差cd和阈值参数v;增益计算子模块对图像数据再次统计,选出样点和确定调整系数、、;偏色校正子模块是根据调整系数、、对图像数据进行校正,输出校正后的白平衡图像。
图2 自动白平衡模块结构图
在计算阈值参数时,需要统计整幅图像信息。确定调整系数时,同样要统计相同图像信息,因此,会出现滞后现象,即本幅图像用的阈值参数v,是上一幅图像计算出来的。为了有效解决这一问题,在设计时,单独把色温估计子模块置于前端数据流中,即紧邻CMOS驱动模块。经过该结构调整,当计算出阈值参数v时,图像数据恰好存入SDRAM中;而当图像数据从SDRAM中读出时,这幅图像的阈值参数v已送入后面的增益计算模块中,调整和细化后的电路结构如图3所示。
图3 改进的自动白平衡模块结构框图
电路结构调整后,由于CMOS驱动模块输出的是Bayer格式图像,而非插值后的彩色图像,因此,色温估计子模块在统计图像信息时,需要以2×2块作为一个红绿蓝像素单元进行统计。Bayer格式图像2×2块中包含了1个红色分量、2个绿色分量和1个蓝色分量,其中2个绿色分量取均值作为该像素单元的绿色分量。本文图像分辨率为1920像元×1080像元,以2×2块为红绿蓝像素单元,实际统计像素为960像元×540像元。
色温估计子模块中,统计均值功能实现时,电路采用并行结构设计,把2×2块像素单元中的红绿蓝分量分离开来,分成三路并行处理;每路数据都是对整幅图像进行统计均值,因此需要高位宽累加器和除法器,高位宽器件会加大系统延时,为减少延时,采用按行统计均值的思想,先计算出行均值,再对行均值累加,求出整幅图像的均值。由于图像数据是连续输入的,为了实时计算,累加器和除法器采用流水线技术,以累加器为例,图4给出了三级流水线设计的累加器电路图,实现=+累加和运算,其中为8bit,为30bit;均值色差功能电路用于统计三均值(a1、a1和a1)的最大值a和最小值i。a与i的比值为均值色差cd,为满足精度要求和避免小数运算,电路设计上采用先乘后除的思路,而乘法采用移位操作,这样减少了硬件开销,左移4bit,计算出的值相当于cd乘16;阈值产生功能电路实现了式(2)的逻辑运算,对cd值所在区间进行判断,为避免产生大的组合逻辑而影响时序,先用寄存器产生相应的标志位,再根据标志位、最大值和最小值,选择出阈值v。
图4 累加器电路图
增益计算子模块中,在样点选取功能电路实现时,采用并行结构,分四路并行处理,前三路为样点像元DN值统计,后一路为样点数统计。先选取图像中红、绿、蓝DN值都大于v的像元作为样点,然后对所有样点进行累加,计算出均值a2、a2和a2;增益产生功能电路实现了对应式(3)的数值计算。首先计算出n=(a2+a2+a2)/3;后计算出、和。同样为提高精度和避免小数运算,电路中n左移10bit,使计算出的结果、和放大1023倍,有效位精确到小数点后三位。
偏色校正子模块中,电路设计采用并行结构和流水线技术,分三路进行偏色校正。由于每路都要实现连续乘法运算,为提高实时性,专门设计了一个四级流水线乘法器,用移位和加法操作来实现实时乘法运算,节省了硬件资源,其电路图如图5所示,图中实现=×运算,其中为16bit,为8bit,为24bit。LS表示向左移位操作,LS后数字表示左移位数,来自信号,为8bit位宽,每2bit为一个选择器的选择信号。
以上电路实现采用同步化设计[18],系统时钟为80MHz,统一时钟上升沿采样。系统延时有两部分组成,一是从CMOS传感器读出图像数据并存储到外部SDRAM中的时间;二是从外部SDRAM按行读出图像数据并实时处理的时间。本文这两部分时间分别是11ms和27ms,这两部分时间之和为最小帧周期38ms,因此最大帧频为26.3帧/s。
图5 乘法器电路图
为了验证算法的有效性,本文进行了多项测试:1)对多种不同色彩的图像进行测试,并对各种白平衡算法进行对比;2)统计图像的信息,并对各种白平衡算法进行比较;3)对CMOS相机系统进行实际测试,验证图像自动白平衡算法效果。
为了验证算法的鲁棒性,每项测试均选取不同类型图像进行多次测试。下面以其中的两幅图像为例进行分析说明。
图6和图7分别为色彩丰富和色彩单一场景图像的处理效果,其中(a)为原始图像,(b)、(c)、(d)和(e)分别为GWM算法、PRM算法、QCGP算法和本文算法白平衡后的图像。
图6 色彩丰富图像自动白平衡算法对比
图7 色彩单一图像自动白平衡算法对比
比较可知,图6中,GWM算法和本文提出算法的处理效果较好,QCGP算法次之,PRM算法效果差。造成PRM算法效果差的原因是图像中有部分区域出现过曝光。图7中,本文算法和PRM算法效果最好,QCGP算法次之,GWM算法失效。
由对比验证可知,本文算法兼具了GWM算法和PRM算法的优势。
由于本文的白平衡算法是在RGB域中进行处理的,因此专门统计了经四种算法处理后图像的RGB均值,如表1所示。同时也给出了本文算法处理过程中的样点均值和调整系数,如表2所示。
表1 图像均值对比表
Tab.1 Comparison of mean values of images
表2样点均值及调整系数
Tab.2 Mean value of sampling points and modulation coefficients
从表1中可以看出,在色彩丰富的图6中,本文算法与GWM算法的RGB均值接近;在色彩单一的图7中,本文算法与PRM算法的RGB均值接近。从而验证了算法效果在图像色彩丰富时,接近GWM算法;在图像色彩不丰富时,接近于PRM算法。
图8和图9为本文提出的算法对一般自然场景测试时的处理效果。图中,(a)为白平衡前图像,(b)为白平衡后的图像。
(a)白平衡前图像 (b)白平衡后图像
(a)Image before auto white balance proccessing (b)Image after auto white balance proccessing
图8 CMOS相机室外图像
Fig.8 Outdoor images by CMOS camera
(a)白平衡前图像 (b)白平衡后图像
(a)Image before auto white balance proccessing (b)Image after auto white balance proccessing
图9 CMOS相机室内图像
Fig.9 Indoor images by CMOS camera
由图可知,本文实现的图像自动白平衡算法,在实际测试时,无论是室内还是室外,都取得比较好的效果。
本文提出了一种基于图像色彩丰富度评估的自动白平衡算法,在RGB彩色空间域中,综合利用了GWM算法和PRM算法的优势,进而通过FPGA实现了上述算法,通过高效的并行流水线技术,同时充分考虑硬件模块内部的潜在并行度,满足了系统的实时性要求。在图像分辨率为1920像元×1080像元的情况下,处理帧频大于等于25帧/s。该算法硬件开销少,实时性好,适应性强,能有效提高图像品质,具有广阔的应用前景。
[1] 王军, 李国宏. CMOS图像传感器在航天遥感中的应用[J]. 航天返回与遥感, 2008, 29(2): 42-47. WANG Jun, LI Guohong. The Application of CMOS Image Sensor in Space Remote Sensing[J]. Spacecraft Recovery & Remote sensing, 2008, 29(2): 42-47. (in Chinese)
[2] 尤政, 李涛. CMOS 图像传感器在空间技术中的应用[J]. 光学技术, 2002, 28(1): 31-35. YOU Zheng, LI Tao. Application of CMOS Image Sensor in Space Technology[J]. Optical Technique, 2002, 28(1): 31-35. (in Chinese)
[3] KLEINFELDER S. High-speed, High-sensitivity, Low-noise Scientific CMOS Image Sensors[C]//Microelectronics: Design, Technology, and Packaging. Perth, Australia: SPIE, 2003: 194-205.
[4] BILCU R C. Multiframe Auto White Balance[J]. Signal Processing Letters IEEE, 2011, 18(3): 165-168.
[5] 郭惠楠, 曹剑中, 周祚峰, 等. 彩色数字图像色彩平衡的客观性评价方法[J]. 红外与激光工程, 2013, 42(z1): 214-218. GUO Huinan, CAO Jianzhong, ZHOU Zuofeng, et al. Objective Evaluation Approach of Color Balance for Colorful Digital Image [J]. Infrared and Laser Engineering, 2013, 42(z1): 214-218. (in Chinese)
[6] VUONG Q K, YUN S H, KIM S. A New Auto Exposure and Auto White-Balance Algorithm to Detect High Dynamic Range Conditions Using CMOS Technology[C]//Proceedings of the World Congress on Engineering and Computer Science 2008, San Francisco, October 22-24, 2008.
[7] LIU Y C, CHAN W H, CHEN Y Q. Automatic White Balance for Digital Still Camera[J]. IEEE Transactions on Consumer Electronics, 1995, 41(3): 460-466.
[8] WANG J, LIU Y, LIU F, et al. A Method of Automatic White Balance Using Fuzzy Logic[C]//IEEE Circuits and Systems Society. The 2000 IEEE Asia-Pacific Conference on Circuits and Systems, Tianjin, China: IEEE, 2000: 615-617. DOI: 10.1109/APCCAS.2000:913576.
[9] CHEN C L, LIN S H. Formulating and Solving a Class of Optimization Problems for High-performance Gray World Automatic White Balance[J]. Applied Soft Computing, 2011, 11(1): 523-533.
[10] WENG C C, CHEN H, FUH C S. A Novel Automatic White Balance Method for Digital Still Cameras[J]. Images & Recognition, 2006, 4(12): 3801-3804.
[11] LIN J. An Automatic White Balance Method Based on Edge Detection[C]//Alexander Belozertsev. 2006 IEEE International Symposium on Consumer Electronics. St. Petersburg, Russia: IEEE. 2006: 1-4.
[12] 王敏, 李斌桥, 徐江涛. 基于色温估计的自动白平衡算法研究[J]. 光电子·激光, 2011(12): 1872-1875. WANG Min, LI Binqiao, XU Jiangtao. Auto White Balance Algorithm Based on Color-temperature Estimation[J]. Journal of Optoelectronics·Laser, 2011(12): 1872-1875. (in Chinese)
[13] GENOVESE M, NAPOLI E. ASIC and FPGA Implementation of the Gaussian Mixture Model Algorithm for Real-time Segmentation of High Definition Video[J]. IEEE Transactions on Very Large Scale Integration Systems, 2013, 22(3): 537-547.
[14] 杨会玲, 王军, 杨会伟. 高帧频CMOS实时图像采集系统设计[J]. 微计算机信息, 2008, 24(30): 309-311. YANG Huiling, WANG Jun, YANG Huiwei. Design of High Frame Frequency CMOS Real-time Image Acquisition System[J]. Microcomputer Information, 2008, 24(30): 309-311. (in Chinese)
[15] 陈必威, 梁志毅, 王延新, 等. 基于FPGA的高帧速CMOS成像系统设计[J]. 计算机测量与控制, 2012, 20(5): 1397-1400. CHEN Biwei, LIANG Zhiyi, WANG Yanxin, et a1. Design of a High Speed CMOS Imaging System Based on FPGA[J]. Computer Measurement & Control, 2012, 20(5): 1397-1400. (in Chinese)
[16] 陈国柱, 刘涛, 李元宗. 基于FPGA的图像采集与存储系统的设计[J]. 机械工程与自动化, 2007(4): 44-46. CHEN Guozhu, LIU Tao, LI Yuanzong. Design of Image Sampling and Storage System Based on FPGA[J]. Mechanical Engineering & Automation, 2007(4): 44-46. (in Chinese)
[17] 王建华, 刘缠牢, 陈大川, 等. 基于DSP+FPGA技术的实时视频采集系统的设计[J]. 国外电子测量技术, 2007, 26(9): 42-44. WANG Jianhua, LIU Chanlao, CHEN Dachuan, et al. Design of Real-time Video Processing System Based on DSP+FPGA[J]. Foreign Electronic Measurement Technology, 2007, 26(9): 42-44. (in Chinese)
[18] DIAZ J, ROS E, PELAYO F, et al. FPGA Based Real-time Optical-flow System[J]. IEEE Transactions on Circuits & Systems for Video Technology, 2006, 16(2): 274-279.
Design and FPGA Implementation of Auto White Balance Method for CMOS Image Sensor
DONG Guowei HOU Zuoxun WANG Zhen PAN Zheng LIU Ming GUAN Chenhui
(Beijing Institute of Space Mechanics & Electricity, Beijing 100094, China)
In order to improve image processing quality and boost processing rate so that the processed imagesʹ colors become as same as the colors of human vision feeling, the paper proposes a kind of improved auto white balance method for CMOS camera image processing system. The proposed method is based on the gray world method and the perfect reflector method, and it can choose the proper method between the above two methods automatically by estimating the richness of color in the images. The corresponding FPGA processing modules are designed to implement the methods. Especially, the high-performance parallel pipelined technology and the inner potential parallel processing ability of the modules ensure the real-time processing ability of the complete camera system. The advantages of method mentioned in this article are adaptability and fast processing rate. This method has different threshold parameters for different scenes with appropriate algorithm for each scene to ensure adaptability. Also, it set up a simplified algorithm selecting rules for high speed video whose hardware is easier to implement on FPGA which can guarantee faster processing rate. The simulations and the experiments show that the FPGA system implemented the proposed method can achieve the good processing performance in different sceneries and it can process the 1920×1080 image resolution videos at a speed of 25 fps. This method with high real-time performance and strong adaptability and less cost on hardware as well would have wide prospect on imaging processing field.
image sensor; auto white balance method; field-programmable gate array; space remote sensing
(编辑:庞冰)
TN2
A
1009-8518(2016)03-0082-09
10.3969/j.issn.1009-8518.2016.03.010
董国伟,男,1982年生,2010年获东北大学控制理论与控制工程专业硕士学位,工程师,研究方向为遥感相机视频电子学设计。E-mail:dgw1230@126.com。
2016-03-02