基于
FPGA
自动
白平衡
算法
设计
李华
收稿日期:2022-04-17基金项目:商洛学院科研基金项目(16SKY007),商洛学院科研横项基金项目(19HKY165)作者简介:李华(1980-),女,陕西西安人,硕士,副教授,从事基于可编程逻辑器件的图像处理相关的研究与教学工作,主要研究方向为数字图像处理。基于 FPGA 的自动白平衡算法设计李 华1,蔡嘉烨2(1.商洛学院 电子信息与电气工程学院,陕西 商洛 726000;2.航天系统部装备部军事代表局,西安 710082)摘 要:为了满足工程项目需求,获取生动彩色图像,设计了一套基于 FPGA 实现的自动白平衡算法。首先,将RGB 图像转换成 YCrCb 格式,然后将图像划分成 16 个图像子块,分别统计色差,选择色彩丰富的图像块进行白平衡校正因子的计算,从而完成图像白平衡操作。算法以一片 Xilinx 公司 FPGA 作为硬件开发平台,使用 Verilog-HDL 硬件描述语言并采用由总到分的模块化开发对整个系统进行硬件描述。实验结果表明,所设计的自动白平衡算法获取的彩色图像色彩逼真,算法难度适中、便于硬件开发,具有非常好的工程应用前景。关键词:自动白平衡;FPGA;图像探测器;Bayer 格式图像 中图分类号:TP391.4 文献标识码:A DOI 编码:10.14016/ki.1001-9227.2023.01.053Design of Auto White Balance Algorithm Based on FPGALI Hua1,CAI Jiaye2(1.School of Electronic Information and Electrical Engineering,Shangluo University,Shangluo,shaanxi 726000,China;2.Space System Department,Xian 710082,China)Abstract:In order to meet the demand of actual project and get vivid color images,this paper designs a set of automatic white balance algorithm based on FPGA implementation.First of all,the RGB image is converted into YCrCb format,and then the image is divided into 16 tiles to statistic the color difference.Thirdly,colorful image block is chosen to calculate the white balance correction factor,thus complete the white balance image operation.One Xilinx Field Programmable Gate Array(FPGA)is chosen as the hardware design platform,and the algorithm is described with Verilog-HDL to perform the modular-ization design from top to bottom.Experimental results show that color image obtained from the automatic white balance algo-rithm is vivid and low complexity,easy hardware implementation makes the algorithm has a good engineering application val-ue.Key words:auto balance;FPGA;sensor;bayer pattern image 0 引言白平衡(White Balance,WB)是指对白色物体颜色的还原,根据物理学的解释,物体之所以能够呈现出某种特定的颜色,主要是因为光线照射在物体表面时,物体所反射的光在人眼视觉系统中呈现出这种特定的颜色1。不同的光线照射下,当我们直接用肉眼观察周围景物时,对相同颜色的感知与辨识基本是保持恒定不变的。但是,CMOS 或 CCD 图像传感器没有这种适应性,从而导致图像传感器在不同的光照条件下输出平衡性较差,相机输出的图像会出现色彩紊乱,造成图像偏色,或者偏蓝或者偏红,不能反映景物真实的色彩。为了使图像传感器的图像与人的视觉标准更加贴近,就必须通过仿造人类大脑的特征,并根据物体周围的光线的变化来调整色彩,使成像结果达到令人满意的结果。因此,研究白平衡的目的就是针对各种色温,通过设计消除偏色,使相机拍摄的图像更加吻合人眼的视觉习惯。目前商用和用于研究的彩色成像系统都有白平衡功能,而且都是由相关算法完成。但是这些算法中,有些比较简单,但是白平衡效果较差,而大部分算法比较复杂2-3,只能停留在 PC 仿真层面或者运行在专用的ASIC 中,不利于工程应用4-5。因此,设计一种恢复效果好、易于硬件实现的自动白平衡算法是开发彩色成像系统不可或缺的一个环节。1 相关算法介绍本节将详细介绍国内外白平衡算法的研究方法及研究现状。目前,有代表性的算法有如下几种:1)灰度世界法(Gray World)G.Buchsbaum 在 1980 年首次提出了灰度法6,又称灰色世界法。该算法的核心假设在有足够多色彩的图像中,R、G、B 三色通道的均值理论上等于一个称为“灰色”的常数。该假设条件用数学语言表示如式(1)所示:S(X,)dX dX=k(1)35自动化与仪器仪表2023 年第 1 期(总第 279 期)其中,k 为常数,表示无色差的概念。公式(1)表明,自然界光源的颜色主要是通过对整幅图像的三个颜色分量分别求平均得到,如数学公式(2)描述:S(X,)dX dX=we()S(X,)c()ddX dX=we()(S(X,)dX dX)c()d=kwe()c()d=ke(2)灰度世界法实现简便、计算量小,并且当拍摄的图片中色彩分量较丰富时非常有效。灰色世界法历史悠久、效果行之有效,并且至今仍然非常流行。2)完美反射法(Perfect Reflector)完美反射法又称镜面法7-8,它基于一种与灰度世界法完全不同的假设:镜面虽然可以反射光源色彩,但是镜面本身不带有任何色彩信息。与此同时,任何一幅图像中,镜面的亮度是最大的,按照这个假设,一幅图片中 R、G、B 分量最大的像素是一个镜面,那么通过统计R、G、B 分量的最大值就能获取光源的色彩信息,从而通过对角变换矩阵法还原经典图像。与灰度世界法类似的,完美反射法的计算简便、易于硬件实现,当图像中有镜面特征时色彩还原效果较好。3)灰轴调整算法在介绍该算法前,首先引入图像灰轴的概念。以图1 为例,定义 R、G、B 色彩空间示意图:图 1 灰轴示意图图 1 中,R、G、B 三个分量的取值都在0,255之间;P 点表示纯白色,则有(rP,gP,bP)=(255,255,255);O点对应黑色,有(rO,gO,bO)=(0,0,0)。OP 就是 RGB 色彩空间的灰度轴,简称灰轴。灰轴上面所有点的 R、G、B彩色分量值相等,即颜色表征为灰色。该方法将 OP 称为“理想灰轴”。灰轴法能成立是基于白斑假设,通过选取偏色图像中的部分像素点估测“估计灰轴”,进而计算“估计灰轴”到“理想灰轴”的空间变换。所提算法的基本思路是:借助算法变换,将“估计灰轴”进行调整迭代,最终达到与“理想灰轴”重合,从而实现白平衡的目的。分析以上几种算法可以看出,灰轴调整算法恢复效果最好,但是算法复杂,难以硬件实现,因此,工程中主要使用的还是白平衡效果相对较差的灰度世界算法。但是,很多情况下,一张图片的色彩是比较单一的,而此时灰度世界法不仅不能改进图像质量,反而会使其产生严重失真。另一方面,在整个图像处理流水线中,自动白平衡功能仅是其中的一个比较小的环节,对这部分的要求是电路规模较小且资源消耗较少。综合以上两点,提出了一种基于灰度世界法的改进自动白平衡算法9-11。2 改进算法原理通过以上分析可知,灰度世界算法不但白平衡效果好,而且简单、易于硬件实现,但前提是克服因为大块单一色彩图像对灰度世界算法带来的影响。因此,算法以灰度世界算法为基础进行改进,主要是去除不满足色彩丰富度要求的图像。为了消除单一色彩图像的影响,设计思想是在进行白平衡运算时,将单一色彩图像从整帧图像中剔除,这样,就防止了算法失效问题。为了增加算法的有效性,设计了如图 2 所示的图像块划分方法,将整帧图像划分为 16 块,这样划分的目的有两个,一是分块计算可以去除单一色彩图像块对图像的影响,如果其中哪些图像块色彩单一,算法计算时就直接将其丢弃,只保留色彩丰富的图像块,如果所有的图像块都不满足要求,则保持原图像;另一方面,图像分辨率一般是 2 的指数倍,如:1 0241 024、2 0482 048 等,在分块时尽量将图像块也取成 2 的指数倍,例如:256、512 等,这样,在图像块求平均时仅用移位寄存器即可完成,减少 FPGA 的计算量。图 2 图像块划分示意图本算法大体分两个步骤:一是图像域转换,用于判断图像块是否满足要求;另一个步骤则是结合满足要求的图像块计算白平衡校正因子,用于校正图像。具体的设计流程为:当第一帧图像到来时,先进行 RGB2YCrCb转换,得到图像的亮度信息 Y 和色度信息 Cb、Cr,同时对每一个图像块进行色度信息统计,并在图像块结束时获取图像块的色度信息均值 Mb、Mr。当第二帧图像到来时,利用第一帧图像计算获取的色度信息均值 Mb、Mr 结合本帧图像的色度信息 Cb、Cr,并利用式(3)和式(4)分别计算图像块的色差均值 Db、Dr。Db=i,j(|Cb(i,j)-Mb|)/N(3)Dr=i,j(|Cr(i,j)-Mr|)/N(4)由于 Db、Dr 表示的含义是图像的色彩丰富程度,即Db、Dr 越大,图像的色彩越丰富,反之图像色彩越单调7。因此,为了消除单一色彩图像对算法的影响,只选择 Db、Dr 值较大的图像块进行式(1)和式(2)的算法45基于 FPGA 的自动白平衡算法设计 李 华,等运算,得到彩色图像各通道的平均值和白平衡校正因子,用于第三帧图像的白平衡校正。3 改进算法 FPGA 硬件实现相较于其他硬件,FPGA 逻辑资源丰富、适合并行运算、价格较低,且特种应用产品(军温级、宇航级等)比较多,综合考虑之后,硬件平台最终使用的是 Xilinx 公司的FPGAXC5VFX130T,硬件描述语言是 Verilog-HDL。算法基于 FPGA 的硬件实现过程为:图像传感器上电正常工作,当第一帧输出图像进入 FPGA 时,首先对图像进行 RGB2YCrCb 操作,该步骤是通过调用 Xilinx 自带的 IP 核实现的,输出结果直接就是亮度和色度信息,其 Modelsim 仿真波形如图 3 所示。然后根据图 2 划分的图像区域大小,定义了 16 个图像块的宽度和高度,使用的 CMOS 图像探测器分辨率是 2K2K,这样每个图像块大小为 512512,并定义每个图像块的色度均值寄存器用于存放每个图像块计算得到的色度均值 Mb、Mr。算法实现过程以整帧图像起始的第 1 个图像块为例进行说明,当 FPGA 得到色度图像的第一个行有效时,以其上升沿为触发信号,开始将色度信号 Cb、Cr 进行累加统计,并存放在第一个 Cb、Cr 数据寄存器,当第一行图像累加至 512 时,表示一行处理完毕,停止操作;此时,当第二行图像到来时,算法采用类似的方式,对其进行累加寄存。按照以上步骤,当第一个图像块累加至 512高度时,表明第一个图像块的色度信息累加结束,在结束信号触发下将累加的图像数据和求平均