- 1 -
中国科技论文在线
一种基于色差的自动白平衡算法及其硬件
实现#
徐江涛,宿晓慧*
基金项目:高等学校博士学科点新教师基金(200800561111);国家自然科学基金(60806010)
作者简介:徐江涛(1979-),男,副教授,主要从事图像传感器与图像处理领域芯片设计研究
(天津大学电子信息工程学院,天津 300072) 5
摘要:提出了一种基于色差选取色温统计点,有效滤除大面积色块干扰的自动白平衡算法。
采用 CIE 1976 Lab色差公式,通过比较相邻像素间的色差,统计时滤除位于色块内部的像
素点,得到更精确的色温信息。根据精度要求,采用分段近似算法,仅用常系数乘法器实现
Lab色差计算;检测时只需判断色差阈值,不需进行边缘检测算子运算,减少了硬件消耗。
FPGA仿真表明,对于 640×480图像,该算法消耗 4720个逻辑单元,6144个存储位。利用10
颜色差异滤除色块内像素点的方法可有效避免大面积色块对色温统计的干扰。
关键词:微电子学与固体电子学;自动白平衡;色温统计;色差;Lab色彩空间.
中图分类号:TN47
Design and hardware implement of automatic white balance 15
based on chromaticity difference
Xu Jiangtao, Su Xiaohui
(School of Electronics and Information Engineering, Tianjin University, Tianjin 300072)
Abstract: In this paper an automatic white balance algorithm is proposed, in which color temperature
statistical point is chosen based on the chromaticity difference to effectively remove large area color 20
piece interference. CIE 1976 Lab chromaticity difference formula is used in the comparison of
neighborhood pixels’ chromaticity difference. The pixels inside a color piece are statistically filtered to
get a more accurate color temperature information. By the demand of accuracy, piece wire
approximation method is used. Constant coefficient multiplier is used in the calculation of Lab
chromaticity difference. To save more hardware cost, the edge detection operator calculation is 25
replaced by the checking of chromaticity difference with threshold. The FPGA simulation indicates that,
4720 logic cells and 6144 bits memory are used in processing a 640×480 picture. The result shows that,
the chromaticity difference based inside pixels removing method can effectively avoid color
temperature interference.
Key words: microelectronics and solid state electronics; automatic white balance; color temperature 30
statistics; chromaticity difference; Lab color space
0 引言
颜色由物体和光源共同决定,光源频谱不同,图像将产生不同偏色[1][2]。自动白平衡通
过统计图像色温,调节图像传感器 RGB 通道增益,从而抵消光源造成的偏色。色温统计点35
的选取是白平衡算法的关键,决定调节精度。常见白平衡算法如参考白点法[2][3],肤色白平
衡法[4][5]等基于先验知识的算法,通过选取近白点或肤色点进行色温计算,图像中不含有白
色或肤色内容时不准确。灰度世界算法[6]不要求图像含有特定内容,适应性更广泛,但传
统算法在图像中存在大面积色块时误差较大。后发展了基于不同算子的边缘白平衡方法[7],
统计图像边缘点提升准确度。但也存在不足:一方面边缘提取只能针对某一分量进行,难以40
考虑到图像 RGB 三分量的综合情况;另一方面检测算子多包含微分运算,计算量大,硬件
- 2 -
中国科技论文在线
实现困难。较新的算法如模糊神经网络算法[8]等,也都存在着逻辑单元消耗多,布线层数
多,功耗高等难题。为了提高色温统计的精度,充分利用 RGB 三分量的相互关系,并便于
硬件实现,本文提出了一种基于色差的色温统计方法。通过色差阈值判断选取参考点,实现
滤除色块内部的像素点的色温统计。根据精度要求,选取合理的分段区间对 RGB 转 Lab 色45
差空间算法进行分段近似,提高速度降低功耗。
1 白平衡算法
算法原理
色差是衡量两点颜色相似程度的指标,其大小表示差异的程度。若某点与其周围点的差
异均小于某一阈值,可认为该点是色块内部的点,在统计时滤除该点的信息,将使得色温统50
计更加准确。即若某像素点 P(x,y)与周围四点中某一点的色差大于阈值d ,则将该点纳入色
温统计内,对 R,G,B 分量累加。
)y,x(R0R Rss += ; )y,x(G0G Gss += ; )y,x(B0B Bss += (1)
其中 R0s , G0s , B0s 分别为在 P(x,y)判断前色温统计 RGB 分量累加和, Rs , Gs , Bs 为
将 P(x,y)纳入统计后的 RGB 分量累加和。如果保持 G 分量增益不变,那么 R 分量和 B 分量55
调节为:
RGR0R / sspp ×= ; B B0 G B/p p s s= × (2)
其中 Rp , Bp 分别为目标调节 R、B 分量增益, R0p , B0p 为当前 R、B 分量增益。
色差公式及阈值选取
色差大小用均匀色差空间的几何距离表示。常见的均匀色彩空间有 CIE 1976 Lab 色彩60
空间、LUV 色彩空间或 HLC 色彩空间等[9]。考虑应用范围和研究成熟度选用 CIE 1976 Lab
色彩空间。RGB 颜色空间到 Lab 颜色空间转换分为 2 步:
首先从 RGB 颜色系统转换到 XYZ 颜色空间(CIE 研究出的 1931CIE-XYZ 颜色系统),如
公式(3)所示。其中,R、G、B 分别为红绿蓝三颜色的含量,取值范围为 0~100。得出颜
色的三刺激值 X、Y、Z[9]: 65
BGRZ
BGRY
BGRX
×+×+×=
×+×+×=
×+×+×=
(3)
XYZ 空间求 Lab 色度值公式如下:
( ) ( )
000
3
1
00
00
0
,,
116
200
500
16116
Z
Z
Y
Y
X
Xq
q
q
q
q
qf
Z
Zf
Y
Yfb
Y
Yf
X
Xfa
Y
YfL
=
≤
>
⎪⎩
⎪⎨
⎧
+×=
⎥⎦
⎤⎢⎣
⎡
⎟⎟⎠
⎞
⎜⎜⎝
⎛−⎟⎟⎠
⎞
⎜⎜⎝
⎛=
⎥⎦
⎤⎢⎣
⎡
⎟⎟⎠
⎞
⎜⎜⎝
⎛−⎟⎟⎠
⎞
⎜⎜⎝
⎛=
−⎟⎟⎠
⎞
⎜⎜⎝
⎛×=
(4)
- 3 -
中国科技论文在线
式中,X、Y、Z 为颜色三刺激值,X0、Y0、Z0为标准光源 D65三刺激值,X0=,
Y0=100,Z0=。色差计算公式为: 70
( ) ( ) ( )221221221 bbaaLLEab −+−+−=∆ (5)
其中(L1,a1,b1),(L2,a2,b2)分别为两像素点的 L、a、b 值, abE∆ 表示色差。
色差与感受程度关系如表 1[10],考虑到白平衡处理数据时只需要提取明显的差异,因此将阈
值设为 6。
表 1 CIE Lab 色度图分析 75
Analysis CIE Lab chromaticity diagram
abE∆ 色差的感知程度
0~ 微量
~ 轻微
~ 感觉到
~ 明显
~ 很大
以上 截然不同
2 精度分析与硬件实现
精度分析
白平衡输入数据区间为 0-255,因此 RGB 空间转换到 XYZ 空间时,需要将公式(4)
的各项系数均除以 。采用 Matlab 软件进行定点模型仿真,随机取 10000 组 RGB 的值,80
计算时保留不同的二进制小数位数产生的舍入误差如表 2 所示。从表中可知,保留的小数位
越多,计算的精度越高。但消耗的硬件资源和功耗将越大,因此综合考虑计算保留 3 位二进
制小数。
表 2 RGB 转 XYZ 时不同精度误差
Error of RGB to XYZ with different precision 85
保留二进制小数位 0位 1位 2位 3位 4位
X最大绝对误差
Y最大绝对误差
Z最大绝对误差
X最大相对误差
Y最大相对误差
Z最大相对误差
XYZ 空间转换到 Lab 空间时,需要进行开三次方根运算,不便于硬件实现,因此分段
线性拟合以下 3 个函数,使之仅用到常系数乘法器,就能满足给定的精度要求。
⎟⎟⎠
⎞
⎜⎜⎝
⎛×=
0
500)(
X
XfXfx ; ⎟⎟⎠
⎞
⎜⎜⎝
⎛×=
0
116)(
Y
YfYf y ; ⎟⎟⎠
⎞
⎜⎜⎝
⎛×=
0
200)(
Z
ZfZf z (6)
其中 ⎟⎟⎠
⎞
⎜⎜⎝
⎛×
0
500
Y
Yf 和 ⎟⎟⎠
⎞
⎜⎜⎝
⎛×
0
200
Y
Yf 可以根据 ⎟⎟⎠
⎞
⎜⎜⎝
⎛×=
0
116)(
Y
YfYf y 的结果乘以常系数得90
到,以进一步降低功耗。根据设计要求,将拟合误差控制在 5%以内。Matlab 仿真表明,划
分为 4 个区间即可满足误差要求。每段误差如表 3-5 所示。拟合曲线与真实曲线如图 1-3 所
示,图中实线表示真实曲线,虚线部分为拟合结果。
95
- 4 -
中国科技论文在线
表 3 分段拟合 fx(X)误差
Error of fx(X) with piece wire fitting
X区间 [0,) [,) [,) (,100)
最大相对误差 % % % %
表4 分段拟合fy(Y)误差 100
Error of fy(Y) with piece wire fitting
Y区间 [0,) [,) [,) [,110)
最大相对误差 % % % %
表5 分段拟合fz(Z)误差
Error of fz(Z) with piece wire fitting
Z区间 [0,) [,) [,) [,120)
最大相对误差 % % % %
105
图 1 fx(X)分段拟合情况
Fig. 1 fx(X) with piece wire fitting
图 2 fy(Y)分段拟合情况 110
Fig. 2 fy(Y) with piece wire fitting
图 3 fz(Z)分段拟合情况
Fig. 3 fz(Z) with piece wire fitting 115
硬件实现
白平衡模块划分情况如图 4。行列值计算模块根据输入的帧同步行同步信号,计算当前
输入像素的行列值,提供给插补模块和存储模块。插补模块将 Bayer 格式数据转换成 RGB
- 5 -
中国科技论文在线
格式数据输出,供存储模块和缓存模块使用。如图 5 所示,若插补模块当前输出像素为
)( y,1xP + ,其中 x+1 为行值,y 为列值,则存储模块 fifo1 保存第 x 行像素信息,存储模块 fifo2120
保存第 x-1 行像素信息,即椭圆包含部分。缓存模块保存图 5 中的 )( y,1xP − , )( 1,xP −y , )( y,xP ,
)( 1,xP +y , )( y,1xP + 这 5 个像素点的数据。以上是计算前的数据采集工作。计算时同时计算 )( y,xP
点与其与 4 点的色差,由于采用流水线结构,为保证各模块均能在一个周期内计算完毕,将
计算模块划分为 RGB 计算 XYZ,XYZ 计算 fxfyfz,fxfyfz 计算 Lab,Lab 计算 L,a,b 的
差 baL ∆∆∆ ,, ,根据 baL ∆∆∆ ,, 计算色差 abE∆ 5 个部分组成。输出的色差经阈值判断模块125
决定是否将 )( y,xP 纳入统计,若统计由统计累加模块进行累加,最终在一帧图像输出结束后,
由增益计算模块计算出新的 RGB 分量增益值,反馈给图像传感器,实现白平衡的目的。采
用 Cyclone EP1C12Q240C6 FPGA 进行仿真表明,对于 640×480 图像,该算法消耗 4720 个
逻辑单元,6144 个存储位。
130
图 4 白平衡处理流程
Fig. 4 processing flow of white balance
135
图 5 存储模块与缓存模块存数据
Fig. 5 data in the memory and cache
3 实验结果
实际拍摄色卡结果如图 6,其中(a)图(b)图分别为白平衡前后图像。在大面积红色
背景下,通过比较 19-24 色块的 RGB 分量值和均方差情况客观评判白平衡效果,数据如表140
6 所示。
- 6 -
中国科技论文在线
(a)白平衡前 (b)白平衡后
图 6 原始图像和处理后的图像
Fig. 6 The original and renovated picture after white balance 145
表 6 19-24 色块白平衡前后对比
The original and renovated 16-24 color data after white balance
色块名称 19 20 21
白平衡前 R 分量 145 119 93
白平衡前 G 分量 197 164 129
白平衡前 B 分量 189 161 125
白平衡前均方差
白平衡后 R 分量 248 193 133
白平衡后 G 分量 248 201 141
白平衡后 B 分量 246 203 142
白平衡后均方差
色块名称 22 23 24
白平衡前 R 分量 71 46 34
白平衡前 G 分量 96 62 43
白平衡前 B 分量 93 60 42
白平衡前均方差
白平衡后 R 分量 82 25 10
白平衡后 G 分量 86 30 10
白平衡后 B 分量 86 28 10
白平衡后均方差
4 结论
利用人眼观察进行主观评价和统计色块方差进行客观评价,均表明图像偏色有了明显改150
善,白平衡效果显著,能够适用于图像中存在大面积色块的情况。FPGA 硬件消耗 4720 个
逻辑单元,6144 个存储位。表明基于色差的白平衡算法适用范围广,便于硬件实现。
[参考文献] (References)
[1] 张钰,姚素英,胡燕翔,一种基于边沿检测的图像自动白平衡方法[J].光电子激光,2008,19,804-807 155
[2] 刘悦,刘明业,不需要彩色空间转换的人脸肤色的自动白平衡方法[J].计算机应用,2004,24(11),113-115
[3] Ching-Chih Weng, Homer Chen, and Chiou-Shann Fuh. A Novel Automatic White Balance Method For
Digital Still Cameras. IEEE Intelnational Symposium on Circuits and Systems[C], 23-26 May -3804
[4] Yuan-Kai Wang and Chin-Fa Wang, Face Detection with Automatic White Balance for Digital Still Camera[J],
IEEE Computer Society, 2008,319,173-178 160
[5] 胡波,林清,陈光梦等,基于先验知识的自动白平衡,电路与系统学报[J], 2001, 6(2), 25-28
[6] BUCHSBAUM G. A spatial processor model for object colour perception [J]. Journal of the Franklin Institute,
1980,310(1):1-26
[7] LIN Jin-long. An Automatic White Balance Method Based on Edge Detection[J]. IEEE Trans Consumer
Electronics, 2006:1-4. 165
[8] Cheng-Lun Chen and Shao-Hua Lin, Automatic White Balance Based on Estimation of Light Source Using
Fuzzy Neural Network, ICIEA 2009 IEEE[C]: 1905-1910
[9] 王可,陆长德,乐万德等,基于 Lab 均匀色彩空间的色彩调和系统[J],西北工业大学学报,2004,22(6),
696-699
[10] 刘文耀,数字图像采集与处理[M],天津:电子工业出版社,2007 170