APP下载

基于FPGA 的暗通道白平衡算法设计与实现*

2021-03-11甄国涌单彦虎

电子技术应用 2021年2期
关键词:白平衡像素点增益

王 超,甄国涌,单彦虎

(中北大学 电子测试技术国家重点实验室,山西 太原030051)

0 引言

机器视觉技术的快速发展对图像处理速度以及精度提出了更高的技术要求,颜色作为人类生活最敏感的一部分,在不同的光源下,人眼的恒常性使人可以在不同光源下准确识别物体本身固有色彩[1],但图像传感器服从的光线投射率模型使其采集到的物体本身固有颜色严重受到环境光源的影响[2]。 为消除其受环境光源的影响,实时校正偏色图像的自动白平衡算法成为图像处理的一种关键技术。

目前成熟的白平衡算法在部分平台以及部分场景中已经成功应用。暗通道灰度世界改进算法已经成功在图像处理芯片上验证,但是其处理时间仍需要96 ms,无法满足高帧频图像采集系统需求[3];灰度世界与完美反射组合而成的白平衡算法[4]、基于边沿检测的白平衡算法[5]、基于直方图白平衡算法[6]以及暗通道加权算法[7]在FPGA 设备上的实现需要对一帧图像进行统计、计算后再进行图像白平衡校正,大量RAM 资源、多位宽乘法器以及除法器被应用,导致处理器资源分配面临挑战;灰度世界法(GWM)与完美反射法(PRM)由于其原理简单已经在FPGA 中实现,但是在高分辨率以及过度曝光场景中,本身固有缺点限制其无法正常完成白平衡校正,限制了其使用环境。

因此,本文提出一种基于暗通道光线透射率的自动白平衡校正算法。 该算法在FPGA 上将图像采集与白平衡校正并行处理,确保数据采集实时性的同时完成当前图像偏色校正,完全可以应对场景中的物体移动。 暗通道白平衡算法的实现可以满足色彩准确率以及系统实时性要求,为机器视觉中的移动物体检测与识别提供准确的色彩依据。

1 算法描述

算法首先将RGB 图像转换为暗通道图像,根据全局光线透射率分布与暗通道值选取参考像素点作为完美反射法计算增益因子的依据,最后使用增益因子实现偏色图像白平衡校正。

1.1 参考像素点选取

图像传感器拍摄的物体颜色f(x,y)与其本身固有颜色s(x,y)之间的光线透射成像模型[8]如式(1)所示。

其中:(x,y)表示图像传感器中像素点坐标,t(x,y)表示图像中对应坐标点处光线透射率,E 表示全局光照强度,对于一帧图像E 为恒定常数,定义如式(2)所示:

其中:W、H 分别表示图像传感器采集图像长度与宽度,R(x,y)、G(x,y)、B(x,y)分别代表偏色图像中对应坐标点处三通道像素值。

图像中暗通道定义为(x,y)像素点处颜色三通道最小值,如式(3)所示:

其中:D(x,y)表示(x,y)像素点的暗通道像素,c 表示R、G、B 颜色三通道集合。

根据已求得的暗通道像素和暗通道先验知识理论[9]可得式(4):

其中:Sdark(x,y)表示D(x,y)邻域中暗通道最小像素点,Ω(x,y)表示像素与之相对应的邻域。 相对于较小邻域,光线透射率t(x,y)为一个常数。 根据暗通道理论式(3)、式(4)对式(1)进行两次最小值运算并整理,如式(5)所示:

其中:fdark(x,y)表示f(x,y)邻域中暗通道最小像素。 根据式(4)可知式(5)第3 项为0,光透射率化简如式(6)所示:

由式 (6) 可知在所有颜色中白色(255,255,255)光线透射率最低,因此图像中透射率最低的像素作为参考像素就可实现白平衡校正。 实际拍摄过程中由于图像传感器过度曝光而产生的白色像素点会对图像中原有透射率分布产生影响,因此白平衡参考像素点的光线透射率与暗通道同时满足条件即可排除过度曝光造成的影响,如式(7)所示。

其中:F(x,y)表示白平衡参考像素点,tmax表示全局最大光线透射率,tmin表示全局最小光线透射率,K 表示暗通道阈值常数,对多张图片进行统计最终选取最小误差以及最小平均误差阈值230 作为K[10]。

1.2 校正增益计算

白平衡参考像素点选取后,根据White Patch 假设[11]使用白色区域中三通道各自最大值来计算偏色图像校正的增益因子, 但是为确保不受单一像素点的影响,以参考像素点集合中各通道均值计算校正增益。 如式(8)所示:

其中:Kc表示各个颜色通道校正增益因子,Meanc(x,y)表示参考像素点集合的各通道平均值。

计算完成后的增益因子Kc可以根据Von-Kries 矩阵模型[12]进行偏色图像校正,如式(9)所示:

其中:fb(x,y)表示校正后的图像,fc(x,y)表示偏色图像。

2 FPGA 设计实现

为满足系统的实时性偏色图像校正和白平衡增益因子计算,在FPGA 设计中采用并行流水化模块设计[13],将自动白平衡算法分为两个子结构模块进行设计:偏色校正子模块与增益计算子模块。 在偏色校正子模块中的图像数据通过一个乘法器即可完成偏色像素点的校正输出,相比原始采集数据只有一个时钟延时,可以忽略不计,从而保证了自动白平衡系统的实时性。 在增益计算子模块中,以当前帧为参考计算的下一帧增益因子在图像结束后第三个时钟完成,不会对偏色校正子模块的实时性产生任何影响并且可以满足高速图像数据流。

自动白平衡算法模块结构如图1 所示,图像数据在自动白平衡模块中分为两路并行数据,一路在偏色校正子模块中根据计算出的增益因子对偏色像素点进行校正,另一路在增益计算子模块中计算下一帧图像增益因子。

图1 自动白平衡算法模块结构图

2.1 增益计算子模块

增益计算子模块分为5 个功能模块: 暗通道计算、阈值计算、参考像素选取、通道均值计算和增益因子计算。 在增益计算子模块中图像数据进一步被分为两路并行数据,一路计算参考像素选取的阈值,另一路根据阈值选取参考像素点进而计算下一帧图像的增益因子。

图像数据在暗通道计算功能模块中使用一个时钟对像素点R、G、B 三通道值计算得出暗通道像素。 阈值计算功能模块根据输入的暗通道像素在一个时钟内完成暗通道最值的更新,并且在当前一帧图像结束后计算出参考像素选取的阈值。

图像数据在参考像素选取模块中使用比较器对像素点与阈值条件进行比较,如果像素点满足条件,则模块将此像素点作为参考像素输出至通道均值计算功能模块中,否则丢弃不进行处理。 参考像素输入通道均值计算模块中实时相加并在当前图像结束后计算出各个通道的均值作为增益因子计算功能模块的输入进而计算增益因子。 由于增益因子的计算过程中有除法运算,会极大地影响系统的运行效率,因此对分母的倒数进行31 位小数、8 位整数定点运算后以其作为地址存入ROM 中,使得各通道均值可以作为地址快速获得待求增益因子。 虽然定点运算和浮点计算存在一定的误差, 但由于小数位数较宽不会对最终校正的像素点产生影响。

2.2 偏色校正子模块

图像采集过程中相邻两帧具有极小的差异性, 前一帧图像计算的增益因子可以根据颜色校正模型对当前图像进行偏色校正[14]。 在校正中,8位图像数据与39 位增益因子使用乘法器生成47位的像素校正数据,为避免数据超出像素有效范围,对高16 位整数据进行判断,当大于0xFF 则说明超出最大像素值, 取0xFF 进行像素校正值输出;当小于0xFF,取数据第32 位至39 位为像素校正值进行输出。

3 结果验证分析与评价

3.1 结果验证与分析

3.1.1 FPGA 板级正确性验证

根据算法描述,使用Verilog HDL 语言对算法进行RTL描述,Modelsim 仿真软件进行其功能仿真,Xilinx 公司的XC7A35TFTG256 FPGA 芯片以及ON Semiconductor 公司MT9P031 彩色图像传感器进行验证。 配置图像传感器输出参数分辨率为2 592×1 944@14FPS。 图像传感器拍摄一张图像在软件与Modelsim 进行单张图片仿真保证算法的正确性,由表1 可知FPGA 仿真与软件仿真过程中的关键变量完全一致从而保证了算法的正确性, 并且FPGA 运行时间为软件运行时间的207 倍, 保证了系统中图像处理部分的实时性。

3.1.2 动态图像白平衡校正分析

将自动白平衡算法集成到图像采集系统中,验证移动物体对白平衡算法的影响。在物体移动的情况下将自动白平衡算法处理过程中的增益因子通过系统现有千兆以太网传输至电脑中记录并绘制折线图。物体移动过程中连续拍摄100 帧图片,此过程捕捉从物体移动进入图像传感器成像区域到移动出区域的全过程。

表1 关键值比较

如图2 所示,物体在第1 至第50 帧之间物体未进入图像传感器成像区域,图像增益在第二帧出现中间状态波动后第三帧趋于平稳;物体在50 帧至65 帧逐渐移动进入成像区域,由于物体颜色的原因,蓝色增益根据整体颜色快速大范围调整,红色增益缓慢上升,绿色增益缓慢下降;66 帧至79 帧中,物体完全处于成像区域,增益稳定不变;80 帧至85 帧中物体加速离开成像区域, 增益逐渐恢复成原有状态;86 帧至100 帧图像增益和物体进入前增益相同。

图2 增益曲线图

物体移动过程中,偏色图像数据流校正实时进行,并根据前一帧图像的相对颜色进行快速增益计算后校正下一帧图像从而保证了白平衡校正算法在移动物体实时动态场景中的应用。

3.1.3 色彩校正色差分析

对偏色图像的白平衡算法处理结果采用色差均值[15]来进行评价。 如式(10)所示:

其中:Cb、Cr分别表示YCbCr 空间中蓝色色度分量均值与红色色度分量均值,V 表示一帧图像的色差均值,值越低则表示白平衡效果更好。

根据灰度世界法(GWM)和完美反射法(PRM)理论在FPGA 上实现并使用MATLAB 将FPGA 白平衡处理结果导入电脑中,运用本文评价指标分别对不同分辨率下的三种应用环境图片进行评价,如表2 所示。

如图3 所示,在色彩单一的场景中,本文算法能较其他算法准确识别出白色像素点进行白平衡校正,色彩均值比擅长于单一色彩场景的PRM 算法低0.74,比GWM 低7.99。 如图4 所示,在此色彩丰富的场景中,色差均值相比于擅长丰富色彩场景的GWM 算法高0.27, 但是其和PRM 算法色差均值相同。如图5 所示,在过度曝光场景中,该算法能降低过度曝光像素点对白平衡效果产生的干扰,色差均值比PRM算法低0.24。

表2 色差均值

根据实验结果分析,该算法不仅在颜色单一场景中相比优于PRM 算法,并且其能有效避免过度曝光造成的PRM 算法失效的固有问题,其在颜色丰富场景中虽然不如GWM 算法,但是处理效果相近使其完全可以满足色彩丰富场景中的应用。所以该算法能完全胜任智能工业相机应用环境中的颜色检测任务,并相对于其他算法有相对准确的白平衡效果。

3.2 结果评价

由上述3.1.1 分析可知,暗通道白平衡算法在FPGA上的实现精度可以确保在小数点后三位,相对于传统电脑软件处理处理提高207 倍,既保证了算法的校正精度又确保了系统的实时性;在3.1.2 中,算法可以集成在系统中根据图像相对变化快速调整增益因子,保证白平衡校正的正确性,使其可以应用于动态应用环境中;3.1.3 中的色彩色差分析说明该算法相对于传统的GWM 以及PRM 可以弥补其不擅长的应用环境。

4 结论

针对完美反射法因图像传感器过度曝光白平衡失效的现象,本文提出一种基于暗通道光线透射率精确寻找参考白点进行白平衡的算法,其在不影响图像数据采集速率以及准确性的条件下实时进行偏色图像白平衡校正,并且完全适用于移动场景中的颜色校正。 此算法在FPGA 中高速并行流水线应用,系统实时性使得机器视觉中的检测速率得到极大提高,降低物体移动产生的干扰确保了系统的稳定。

图3 色彩单一场景

图4 色彩丰富场景

图5 过度曝光场景

猜你喜欢

白平衡像素点增益
基于增益调度与光滑切换的倾转旋翼机最优控制
基于局部相似性的特征匹配筛选算法
基于单片机的程控增益放大器设计
基于Multisim10和AD603的程控增益放大器仿真研究
基于5×5邻域像素点相关性的划痕修复算法
技术橱窗
基于canvas的前端数据加密
基于逐像素点深度卷积网络分割模型的上皮和间质组织分割
你的白平衡准确吗?
准确的白平衡管理