一种可见光图像增强算法的FPGA实现

时间:2022-10-13 07:35:32

一种可见光图像增强算法的FPGA实现

摘 要:该文介绍一种可见光图像增强算法的FPGA实现方法,该方法针对雾霾天气或低对比度天气等条件下图像灰度分布范围窄的问题,利用图像处理系统中FPGA组件实现图像增强。视频图像数据流通过专用的接口芯片转换后传输给FPGA,FPGA内部程序通过时钟控制、图像缓存完成灰度信息统计和图像灰度拉伸,同时,多模块并行处理数据完成图像数据采集和图像数据处理,实时实现图像的增强,达到雾霾天气条件下提升可见摄像机作用距离和目标识别能力的目的。

关键词:FPGA 图像增强 去雾 FIFO RAM

中图分类号:TP31 文献标识码:A 文章编号:1672-3791(2017)01(c)-0242-02

随着数字成像技术的发展,图像信息的获取在现代工业和军事活动中具有重要作用,摄像机需要在各种天气条件下都能提供探测识别性能高的图像,提高摄像机观测识别距离和细节分辨能力一直是工程实践努力的方向[1],特别是在能见度低、对比度差的雾霾天气条件下,提升可见光摄像机作用距离是必须突破的技术难点。

1 算法原理

在大量的图像处理仿真中发现,雾霾天气下图像的灰度级统计特点是灰度值集中在灰度级很窄的中间部分,而高对比度图像的灰度级统计特点是灰度在整个灰度级上分布比较均匀[2-3]。在雾天拍摄的图像一般偏灰白且对比度低,如果能实现雾霾图像的灰度均匀的分布在各个灰度级上,既能够提升图像对比度,又能增强图像的色彩[4]。基于此,通过直方图均衡化来拉伸有雾图像灰度,算法如公式(1)、(2)所示:

(1)

式(1)中,Pi为灰度i在图像中出现的统计概率,为0~1的浮点数,hi为图像中灰度i的像素统计数量,T为灰度阈值参数。

(2)

式(2)中,Pk为第k灰度级灰度累积概率,为0~1的浮点数。由于FPGA器件做浮点运算需要占用大量的逻辑和存储资源,故把计算公式进行了优化,在不影响计算结果的情况下,把计算顺序进行了调整,调整后全部为定点运算,避免了浮点运算,为FPGA内部时钟规划和布线减少了麻烦,其中(2)式中的N为灰度级数,m、n为图像尺寸大小, Xk为当前输出帧图像映射后的灰度结果。

通过仿真发现,雾天下的图像灰度进行拉伸后,雾霾特性有很大的改善,为了进一步提升图像质量,增加了边缘增强算法来锐化图像[5-6]。边缘增强算法如公式(3)所示:

其中0

(3)式中xij为x22相邻区域的灰度值,式5中aij为高通滤波矩阵中的系数。 X22为高通滤波后的灰度值,由灰度矩阵和系数矩阵卷积得来X22即为最后输出的灰度值。针对可见光摄像机采集的彩色图像,算法分别对采集到的RGB分量同时进行同样的处理,处理后对RGB分量进行组合,得到处理后的采集图像。

2 算法FPGA实现

在软件编程时经常使用数组结构,如果在FPGA中直接定义数组,非常消耗资源,尤其是当数组位宽较大时,该设计需要定义256级灰度、17位宽数组,这将消耗近10 000个LE单元,一个模块消耗了该器件的1/10的逻辑资源,这在设计中是不允许的。该图像处理系统采用StrixⅢ系列FPGA中有512 bit、4 Kbit、512 Kbit的M-RAM,可以根据实际需要组成各种数组类型的结构,可以很好的处理这类问题。该设计采用FPGA内部开辟了两个单端口RAM,实现统计和映射数据的并行存取,实现过程主要以RAM读写和时序控制为核心,其中灰度统计量存入RAM1中,一帧图像传输完整后得到完整的灰度统计量,通过计算后,把映射表灰度值按照灰度级写入RAM2中,即完成映射表的建立,为下一帧图像来临创建灰度映射的数据库。当数据来临时,以数据流中当前像素灰度为索引地址,查找映射表中拉伸后的相应灰度,作为处理后像素灰度输出,完成灰度拉伸。RAM的接口和深度如图3所示,对于灰度像素数量统计RAM来说n=m=11,对于灰度拉伸映射RAM,其中的n=m=7。见图1,图2。

如图2所示的FPGA处理时序,其中clk为像素时钟,data为像素灰度数据,addr为写统计数据hi对应的RAM地址,实际上是data延时四个时钟得到,如图3所示,第一个时钟用灰度数据1读取对应的灰度统计值h1,第二个时钟用得到的h1和阈值T比较,计算统计量h1是否需要加1,第三个时钟周期得到新的统计值h1存入地址1,第四个时钟周期1对应的灰度统计值已经存入,准备下个循环,由程序控制四个时钟存储一次。如此设计,首先保证了RAM读写不会冲突,其次,统计量虽然不是整幅图像,但是是基于整幅图像的均匀采样,可以保证算法的正确性,同时也简化了处理流程。

对灰度拉伸处理后的图像再进行细节增强,高通滤波矩阵实现过程如图3所示,每个FIFO的地址长度为图像的宽度减2,即一个FIFO加2个寄存器存储一行图像数据,用于图像行数的缓存;在一个像素时钟周期内并行输出9个数据作为后续算法模块的输入,用高通滤波矩阵对该像素灰度进行滤波,得到处理后的结果替换该像素灰度,通常图像边缘不包含重要信息,可以将边缘点不做处理,用原始值代替,至此完成图像的增强。

3 试验及分析

该功能搭载摄像机系统进行调试,完成软硬件与系统各组件联试,通过以往的经验和不断的摸索试验,完成在不同天气条件下的测试和参数调整,得到了一套适合FPGA计算的适应性较好的阈值参数和滤波系数矩阵。见图4~图6。

前期在上位机做了大量仿真,得到了有效的实验结果,图4为算法仿真效果,左边为原始图像,右边为增强后图像;该功能也完成了与摄像机联试,并经历内外场景试验,试验数据都获得了比较满意的结果,图5、图6为不同场景试验效果,左边为原始视频图像,右边为增强后视频图像。

图像处理系统采用大规模可编程辑器件(FPGA)实现的算法,与采用纯DSP实现算法相比,具有同时并行大数据量处理能力,数据处理总延迟80 us。从试验的结果可以看出,增强前图像被雾霾遮挡,模糊不清,对比度不高,增强后图像细节明显,整体对比度明显改善,观察效果明显增强,实验中数据流稳定可靠,没有丢帧和卡顿等情况,实时性和可靠性满足要求。

4 Y论

采用该图像增强算法处理的图像处理系统随设备全部通过试验,试验过程中,在图像输出、增强效果、天气适应性等功能的测试中进行了严格的考核,目前已经应用于工程中。该方法利用FPGA实现了复杂图像处理算法,保证了系统图像处理实时性,进一步解放了DSP来做更重要的处理,优化了系统硬件平台。试验有效证明了该方法可行、系统工作稳定,实时精度高、能够实现对雾霾天气下视频图像较好增强,提高了观测距离和目标识别能力,满足可见光观测设备规定的功能要求。

参考文献

[1] 李红民,王炬,郭蕾.国外武装直升机光电系统的发展动态[J].电光与控制,2005,12(1):86-89.

[2] 王炳健, 刘上乾, 拜丽萍.红外图像实时增强的新算法[J].光电工程, 2006, 33(1):46-49.

[3] 范永杰,金伟其,刘崇亮,等.基于FPGA的IRFPA图像细节增强与动态压缩处理技术[J].红外与激光工程,2012, 41(11):3113-3117.

[4] Ravi Kumar Chadalavada, Srivatsa S.K. Reconfigurable Frame Work for Video Image Enhancement[C].IACSIT. Proceedings of 2012 4th International Conference on Signal Processing Systems(ICSPS 2012).IACSIT, 2012:6.

[5] Ravi Kumar Chadalavada, Srivatsa S.K. Reconfigurable Frame Work for Video Image Enhancement[C].IACSIT.Proceedings of 2012 4th International Conference on Signal Processing Systems(ICSPS 2012).IACSIT, 2012:6.

[6] ZHANG Zhen-hai, LI Ke-jie, etc.Research and Implementation of Algorithm for Image Enhancement and Unwrapped Distortion Correction for SLVF Panoramic Night Vision Image[J].Journal of Beijing Institute of Technology, 2008,4(4):423-428.

上一篇:西安事变中被枪杀的东北军将领王以哲 下一篇:操作实践:呈现学生主动发展的生命活力