基于FPGA的低照度图像采集与处理系统研究
2022-05-23钱芸生
柳 磊,钱芸生
〈系统与设计〉
基于FPGA的低照度图像采集与处理系统研究
柳 磊,钱芸生
(南京理工大学 电子工程与光电技术学院,江苏 南京 210094)
针对低照度图像亮度低、噪声高和边缘模糊等问题,基于Xilinx公司的Artix-7系列FPGA芯片,通过驱动微光性能良好的XQE-1310图像传感器,对探测器采集的视频信号进行滤波和边缘检测,完成了低照度图像的采集和处理等一系列操作,最后将处理过的视频信号通过CameraLink视频格式实时显示,设计了一套微光夜视系统。实验结果表明,该系统的最低工作照度可达10-2lx量级,滤波算法在保持图像边缘信息的同时有效滤除了图像中的椒盐噪声,自适应边缘检测算法可以根据照度水平实时调整阈值,凸显了低照度环境下物体的轮廓信息。系统充分利用了FPGA(Field Programmable Gate Array)速度快、效率高的优势,最后的成像结果清晰稳定,便于人眼观察。
低照度图像;滤波;边缘检测;FPGA
0 引言
良好的光照环境是获得高质量图像的基础,然而在实际生活中存在阴雨天气、夜晚等光照不足的情况。与可见光图像相比,低照度视频图像中的灰度值总体偏小,各个相邻像素间的相关性大,轮廓等边缘像素点对应的灰度值与非边缘的邻域像素点对应的灰度值差异小,且还具有信噪比低等缺点[1]。因此,在低照度环境下,可以借助微光夜视器件来采集视频图像以供人眼观察。CMOS(Complementary Metal Oxide Semiconductor)图像传感器问世于20世纪60年代末,与CCD器件相比,具有高集成、低成本、低功耗的优势,目前已经被广泛应用于工业、监控、航空和航天等诸多领域。目前,国际上致力于低照度CMOS芯片研发的公司包括SONY、PHOTONIS、SiOnyx等公司,国内的锐芯微电子有限公司和长春长光辰芯光电技术有限公司生产的超低照度CMOS图像传感器成像效果也已经达到国际先进水平。
本文以Xilinx公司的Artix-7系列FPGA为主控芯片,结合其运行速度快、编程灵活等特点,基于SiOnyx公司生产的XQE-1310型CMOS图像传感器设计了一套微光夜视系统,对探测器输出的分辨率为1280×1024×12bits的图像进行实时采集、去噪和边缘检测处理,实现在照度为10-2lx量级的环境下清晰成像,同时能根据图像总体灰度值自适应地检测出物体边缘,对低照度探测有一定的应用价值。
1 微光夜视系统总体框架设计
本次设计的微光夜视系统以FPGA控制器为核心,包括了探测器驱动、图像采集、处理和显示模块[2],总体框架设计如图1所示。
该系统使用XQE-1310芯片采集图像,其有效像素阵列为1280×1024,经测试,该芯片的最低成像照度在10-2lx量级,具有良好的低照度性能。当系统工作时,首先由IIC驱动模块配置图像传感器芯片内部寄存器来设置芯片工作模式,寄存器配置完成后,传感器会输出85MHz时钟、图像数据和两个同步信号,这些信号被FPGA接收,再通过去噪和边缘检测处理模块之后,输出到显示模块进行编码,最后由CameraLink接口传输到采集卡OR-X1C0-XLB00,经过采集卡解码后实时显示在其配套软件上。系统采用了模块化的设计思想,模块之间的流水线操作不仅可以节约资源,还增加了数据吞吐量,提高了系统运行速度,以达到最高的实时性。
图1 微光夜视系统总体框架设计
2 系统逻辑设计
2.1 IIC驱动模块
传感器通过两线通信接口与外部主机系统进行通信。低层协议遵循标准IIC协议,高级协议使用7位从机地址、16位索引地址和16位数据字。IIC总线的时序图如图2所示。
图2 IIC写操作时序图
本文使用Xilinx公司的嵌入式软核Microblaze对通用模块进行设计,调用I2C_Write_16BitReg_ Address_2ByteData函数实现数据写入,其中将7位器件地址、1位读写判断、16位寄存器地址和16位寄存器数据设置为可修改参数,方便在实际工作时对芯片进行细微调整,同时保证代码的可读性和可维护性。测试时,芯片从机地址为0x6C,对地址0x0003写入数据0x0001后再读出,使用示波器在芯片对应管脚上采集信号,如图3所示,上半部分波形为SDA,下半部分波形为SCL,从波形图中可以看出芯片对于写入的数据可以正确读出,因此可以对芯片进行内部寄存器配置。
图3 IIC测试时序信号
2.2 去噪模块
由于低照度图像存在噪声大的问题,为了提高图像信噪比,同时尽可能减少噪声对边缘检测结果的影响,所以必须先对图像进行去噪以防止由于噪声而引起错误的检测。为了在去除噪声的同时还能保持图像边缘信息,本文使用中值滤波算法对图像进行降噪处理,该步骤将去除图像中的突发噪声,同时减少噪声对边缘检测的影响。中值滤波是基于排序统计理论的一种能有效抑制噪声的非线性信号处理技术,其核心是选取3×3结构的二维滑动模板,将模板内的像素进行从大到小排序后,选取中间值来代替模板中心的像素值[3]。
中值滤波的硬件实现方法如图4所示。
生成3×3窗口的方式是使用一个真双口RAM用于行数据缓存。真双口RAM是Xilinx公司通用IP核,具有A、B两组输入输出端口。由于探测器输出的图像分辨率为1280×1024,因此一行数据有1280个,为避免两个端口地址重合导致数据被覆盖,将端口A的地址规定在0~2047,端口B的地址规定在2048~4095,选择Read First Mode,那么针对输入地址,每次先将该地址上的数据读出,再将输入数据写入该地址。将端口A的输出数据输入到端口B,则B端口的输出数据相比于A端口的输出数据延迟了一行,端口A的输出数据相比于当前数据也延迟了一行,那么两个端口输出的数据与当前的图像数据即可组成矩阵的3行;由于下一列数据与当前列数据相比慢了一个时钟周期,因此使用寄存器对数据进行打拍延时处理就可以划分出矩阵的3列,其仿真波形如图5所示。
排序步骤如下所示:
1)对矩阵的每一列划分出最大值data_max、中间值data_mid和最小值data_min;
2)在3个最大值之间划分出最小值data_min_ in_max,在3个中间值之间划分出中间值data_mid_ in_mid,在3个最小值之间划分出最大值data_max_ in_min;
3)在data_min_in_max、data_mid_in_mid和data_ max_in_min三个数据之间求取中值,求得的数据即为该3×3矩阵的中间值[4]。
在排序完成后,利用软件自带的仿真工具进行仿真后发现,从数据输入到排序完成共耗时4个时钟周期,因此对同步信号延时4个时钟周期,使其与数据对齐。在输出数据时,还需保留每一帧图像的边界,即保留图像的第一行、最后一行、第一列和最后一列数据。
使用MATLAB对一幅图像添加椒盐噪声,通过其自带的中值滤波函数和FPGA对于噪声图像进行中值滤波的对比效果如图6所示。
从图6中可以看出,中值滤波算法能有效去除图像中的椒盐噪声;根据文献[5],使用归一化均方误差(normalized mean squared error,NMSE)和峰值信噪比(peak signal to noise ratio,PSNR)作为评价滤波效果的客观指标,分别计算出MATLAB和FPGA滤波后的图像的NMSE和PSNR如表1所示,从表中可以看出硬件实现的中值滤波算法与仿真效果相差不大。
图4 中值滤波流程图
图5 3×3窗口仿真波形
表1 软件和硬件中值滤波算法结果比较
2.3 边缘检测模块
图像边缘是指周围像素灰度值有阶跃变化或屋顶变化的像素点集合,反映了图像灰度的不连续性[6]。边缘检测是图像处理中非常重要的研究领域,其效果好坏将会对后续处理的准确性与难易程度有直接影响。基于一阶导数的边缘检测算法是目前应用最广泛的边缘检测方法,本文基于经典的Sobel检测算法对图像进行边缘检测。将原始图像进行滤波后得到图像(,),其梯度值可利用2个3×3模板与选定的二维图像中同样大小区域内的数据进行卷积而得到。将梯度值与设定的阈值进行比较,若所得结果大于设定的阈值,该区域即处于图像边缘,将矩阵中心的灰度值用全1表示;若所得结果小于设定的阈值,将矩阵中心的灰度值用全0表示,即梯度值的阈值抑制。对于应用的场景不同,图像的灰度值与梯度值也不同,因此针对不同的环境照度需要设置不同的阈值[7]。本文针对输入图像的灰度值,自动选取前一帧图像的梯度均值作为当前帧图像的梯度阈值。最后,使用模板[1,1]对检测后的二值图像进行腐蚀操作,以此来消除检测得到的孤立点并细化边缘。Sobel边缘检测的流程如图7所示。
复用3×3矩阵模块,将中值滤波模块的输出数据连接到该模块的输入,将矩阵输出的数据与Sobel算子进行卷积,求取图像的水平梯度G和垂直梯度G[8]。卷积模板如图8所示。
图7 边缘检测流程图
图8 Sobel算子卷积模板
G和G计算公式为:
在计算时需加入判断,使得G和G均为正整数。梯度的平方2的计算公式为:
为减少计算量节约资源,使用梯度的平方来代替梯度值。
当梯度计算出来以后,使用sum_of_grad寄存器计算一帧图像的梯度总值,在每帧图像的最后把该帧图像的梯度均值mean_of_grad赋值给梯度阈值tres_of_grad,梯度阈值只在每一帧的开始改变一次。数据输出前,将当前的梯度与计算出的阈值进行比较,若梯度大于阈值,那么就认为该点为边缘点,用白色(全1)表示,如果梯度小于阈值,那么就认为该点是平滑的点,用黑色(全0)表示[9-10]。
最后,使用寄存器edge_pre对当前梯度edge_of_matrix进行打拍处理,之后比较两者,若均为全1则保留检测结果,否则将edge_of_matrix赋值为0,该操作可以去除一部分检测出的孤立点,同时达到水平方向细化边缘的效果。
使用MATLAB自带的边缘检测函数和FPGA对于一幅静态图像边缘检测处理结果如图9所示。
从图9中可以看出,基于FPGA的边缘检测算法能有效提取出图像的边缘;根据文献[11],Abdou-Pratt提出的边缘检测性能品质公式可以客观评价边缘检测算法效果,但是由于缺乏图像实际的边缘信息,故使用手工提取的边缘代替[12],MATLAB计算得到其自带算法处理结果图的Pratt品质因数为0.3318,FPGA边缘检测结果图的Pratt品质因数为0.1240,可见在边缘检测算法实现上硬件处理尚有不足。通过对比分析,得出上述现象的原因是二者在判断边缘时选用的阈值不同,后续可通过软件拟合出图像梯度与最佳阈值的关系来改进算法。
图9 静态图像边缘检测结果显示
2.4 显示模块
Camera Link是一种基于视频应用的通信接口,它是由Channel Link技术扩展而来。Channel Link的操作如图10所示。
Channel Link由一个驱动器和一个接收器对组成。该驱动器接受28个单端数据信号和一个单端时钟,其中数据按照7:1的比例串行化为4组LVDS数据流,4组数据流和一个专用时钟在5个LVDS对上驱动;接收器接收4个LVDS数据流和LVDS时钟,然后驱动28位数据和一个时钟到主板[11]。
显示模块基于Base型结构的Camera Link传输模式,将12位图像数据、场同步、行同步和数据有效信号分配到各个端口,这些信号被FPGA发送到DS90CR285芯片后被转换为4组LVDS数据流,锁相环时钟通过第5条LVDS链路与数据流并行发送。这5路LVDS信号通过连线传输到采集卡上,被采集卡上的接收器芯片解码后显示在其配套软件上。
3 实验结果与分析
实验结果如图11所示,成像时的环境照度为5×10-2lx,距离为5m,设置芯片的曝光时间为143ms。
图11(a)为探测器采集到的原始图像,从图中可以看出,在当前照度环境下可以辨认出图中的字迹,但是由于探测器自身缺陷等问题,肉眼可见有许多突发的盐粒噪声。图(b)为添加去噪算法后的图像,可以看出原图中的噪声被有效滤除了,同时由于中值滤波是非线性滤波,物体的边缘没有受到太多影响。图(c)为添加边缘检测算法后的图像,该算法可以将字迹的边缘提取出来,并且由于算法对图像进行了二值化处理,因此物体的轮廓更易被识别,但是同时灰度跨度较大的非边缘点也会被检测出来。
在图像处理的速度上,本系统的工作频率为85MHz,针对分辨率为1280×1024的12位图像进行处理时,根据图12所示的仿真波形可以看出,FPGA处理一帧图像的总时间约为23ms。
使用MATLAB软件“运行并计时”功能记录对一帧分辨率同为1280×1024的静态图像进行滤波和边缘检测处理,MATLAB处理一帧图像的总时间为658ms,速度远远慢于FPGA,由此可见,FPGA在图像处理方面有极大的速度优势。
图11 实验结果图
图12 FPGA中值滤波和边缘检测模块仿真波形
4 结论
通过分析低照度图像的特点,基于FPGA设计了低照度环境下的视频采集与处理系统。首先,FPGA通过IIC总线配置CMOS图像传感器内部寄存器驱动芯片进行图像采集;接着,FPGA对接收到的图像数据进行中值滤波来降低图像噪声,并通过改进的Sobel边缘检测算法提取出边缘使得物体的轮廓更易被识别;最后,将处理过的视频数据进行编码后通过Camera Link接口传输到采集卡,由采集卡解码并显示。在此过程中,充分利用FPGA的并行处理特性,模块之间采用流水线设计,在节约硬件资源的同时大幅提升了处理速度。实验结果表明,成像系统在5×10-2lx照度环境下可获得清晰的图像,且能凸显出物体轮廓信息。经过对图像算法的量化对比分析,本文通过FPGA实现的中值滤波算法与软件仿真的效果相仿,但是边缘检测算法与仿真效果稍有差距,说明在自适应平台阈值的设置方法上有待改进。
[1] 方明, 李洪娜, 雷立宏, 等. 低照度视频图像增强算法综述[J]. 长春理工大学学报: 自然科学版, 2016, 39(3): 56-64, 69.
FANG Ming, LI Hongna, LEI Lihong, et al. Overview of low-light video image enhancement algorithms[J].: Natural Science Edition, 2016, 39(3): 56-64, 69.
[2] 赵红伟, 刘凯丽, 张伟, 等. 基于FPGA的光电成像与显示电路设计[J].光电子技术, 2019, 39(3): 205-209.
ZHAO Hongwei, LIU Kaili, ZHANG Wei, et al. Design of photoelectric imaging and display circuit based on FPGA[J]., 2019, 39(3): 205-209.
[3] 朱虹. 数字图像处理基础[M]. 北京: 科学出版社, 2005.
ZHU Hong.[M]. Beijing: Science Press, 2005.
[4] 韩团军. 快速中值滤波算法研究及其FPGA硬件实现[J]. 电子器件, 2017, 40(3): 697-701.
HAN Tuanjun. Research on Fast Median Filter Algorithm and Its FPGA Hardware Implementation[J]., 2017, 40(3): 697-701.
[5] 黄梦涛, 胡永才. 改进自适应中值滤波的低照度烟雾图像去噪[J]. 计算机工程与设计, 2018, 39(6): 1659-1663.
HUANG Mengtao, HU Yongcai. Improved adaptive median filter denoising in smoking image of low illumination[J]., 2018, 39(6): 1659-1663.
[6] Gonzalez R C, Woods R E.[M]. 3rdEdition, Beijing Publishing House of Electronics Industry, 2011: 445-465.
[7] 叶惠娇, 冉全, 成果. FPGA图像边缘检测系统的设计与实现[J]. 计算机应用与软件, 2018, 35(12): 237-240, 302.
YE Huijiao, RAN Quan, CHENG Guo. Design and Implementation of FPGA Image Edge Detection System[J]., 2018, 35(12): 237-240, 302.
[8] 杨帆, 张皓, 马新文, 等. 基于FPGA的图像处理系统[J]. 华中科技大学学报: 自然科学版, 2015, 43(2): 119-123.
YANG Fan, ZHANG Hao, MA Xinwen, et al. Image processing system based on FPGA[J].: Natural Science Edition, 2015, 43(2): 119-123.
[9] 林源晟. 基于FPGA的图像边缘检测系统设计[D]. 西安: 西安电子科技大学, 2014.
LIN Yuansheng. FPGA-Based Image Edge Detection System Design[D]. Xi’an: Xidian University, 2014.
[10] 毛栋. 基于FPGA的高速CMOS成像系统设计[D]. 西安: 中国科学院大学(中国科学院西安光学精密机械研究所), 2019.
MAO Dong. Design of High-speed CMOS Imaging System Based on FPGA[D]. Xi’an: University of Chinese Academy of Sciences (Xi'an Institute of Optics and Fine Mechanics, Chinese Academy of Sciences), 2019.
[11] 磨少清. 边缘检测及其评价方法的研究[D]. 天津: 天津大学, 2011.
MO Shaoqing. Research on Edge Detection and Its Evaluation Method[D]. Tianjin: Tianjin University, 2011.
[12] 陈炳文, 王文伟, 梅天灿, 等. 利用比例分解和嵌套窗口进行彩色图像边缘提取[J]. 武汉大学学报: 信息科学版, 2011, 36(6): 695-698.
CHEN Bingwen, WANG Wenwei, MEI Tiancan, et al. Using scale decomposition and nested windows for color image edge extraction[J].: Information Science Edition, 2011, 36(6): 695-698.
[13] 黄德天, 刘雪超, 吴志勇, 等. 基于CameraLink的高速图像采集处理系统设计[J].吉林大学学报: 工学版, 2013, 43(S1): 309-312.
HUANG Detian, LIU Xuechao, WU Zhiyong, et al. Design of high-speed image acquisition and processing system based on Camera Link[J].: Engineering and Technology Edition, 2013, 43(S1): 309-312.
A Low Illumination Image Acquisition and Processing System Based on FPGA
LIU Lei,QIAN Yunsheng
(School of Electronic and Optical Engineering, Nanjing University of Science and Technology, Nanjing 210094, China)
In terms of the problems of low brightness, high noise and blurred edges in low-illumination images, based on Xilinx's Artix-7 series FPGA chip, the XQE-1310 image sensor with good low-light performance is driven to filter and edge the video signal collected by the detector. After the detection, a series of operations such as acquisition and processing of low-light images were completed, and the processed video signals were displayed in real time through the CameraLink video format. Finally, a low-light night vision system was designed. The experimental results show that the minimum working illuminance of the system can reach the order of 10-2lx. The filtering algorithm can effectively filter the salt and pepper noise in the image while maintaining the edge information of the image. The adaptive edge detection algorithm can adjust the threshold in real time according to the illuminance level. It highlights the contour information of objects in low-light environments. The system makes full use of the advantages of fast speed and high efficiency of FPGA (Field Programmable Gate Array), and the final imaging result is clear and stable, which is convenient for human eyes to observe.
low-illumination image, filter, edge detection, FPGA
TN223
A
1001-8891(2022)05-0462-07
2021-06-17;
2021-09-23.
柳磊(1996-),女,硕士研究生,主要从事光电成像科研工作。E-mail:liulei00000416@163.com。
钱芸生(1968-),男,教授,博士生导师。主要从事光电测试、图像处理和仿真等工作。E-mail:yshqian2015@163.com。
国防科技微光重点实验室基金。