一种基于FPGA的红外图像预处理算法的实现

时间:2022-05-25 10:17:17

一种基于FPGA的红外图像预处理算法的实现

摘要:针对数字图像处理中预处理技术中的滤波算法运算量大,实时性差的问题,利用FPGA来完成此类算法具备一定的优势。该文提出了一种基于FPGA来实现box滤波算法的专用电路结构,并详细介绍了该结构中每一个关键模块的设计,最后给出了运算量和实时性分析。实验证明,该预处理算法在FPGA上的实现完全满足实时处理的需求,并达到各项性能指标。

关键词:数字图像处理;预处理;FPGA;滤波;实时性

中图分类号:TP301文献标识码:A文章编号:1009-3044(2011)16-3943-02

在图像处理系统结构中,图像预处理算法通常在整个核心算法的最前端。各种传感器在获取真实世界的场景时,由于内部AD转换器本身存在的量化误差,不可避免的造成图像失真,同时,数字图像在传输过程中也会受到各种噪声的干扰,导致最终获取的数字图像和真实场景有较大区别,此类现象在红外图像的获取过程中尤其严重。因此直接在红外图像上进行诸如目标识别、分析、跟踪等高层次图像处理算法通常得不到较好的结果,而较好的办法是首先对图像进行预处理。预处理算法包括(1)对图像进行空间域校正;(2)对噪声进行时间域或空间域的过滤;(3)对背景进行抑制,同时对感兴趣区域进行增强等。针对第2点和第3点,最有效的方式是采用合适的滤波器对图像进行滤波处理,但滤波处理算法通常包含利用模板对图像进行卷积操作,当滤波算法较为复杂时,此类操作非常耗时,甚至在专用的数字信号处理器芯片(DSPs)上都难以做到实时性。该文提出了一种基于FPGA的图像预处理算法的实现,通过在FPGA内部搭建滤波器结构来独立完成预处理工作,实验证明该方法能够对采集图像进行实时的处理并达到预期指标,同时对于FPGA内部资源的消耗也在合理范围之内。

1 算法系统结构及设计

本系统的设计思想是使用FPGA实现box滤波检测算法的前端处理,包括图像接收降分辨率、滤波,分割以及融合后图像数据的二值化。整个处理流程如图1所示。总体设计有降分辨率box滤波、数据融合、图像分割和控制电路5个主要模块组成。输入的原始图像数据,经过box滤波模块处理后有3种不同的滤波结果;滤波后的数据进行融合处理,然后进过二值化的分割处理,突出候选目标;控制电路控制着各个模块流程的操作。

1.1 降分辨率模块

1.1.1 功能介绍

针对不同尺度的目标,有可能需要降低图像的分辨率,降低分辨率有很多方法,包括邻域均值和隔行,隔列抽取的方法[1]。考虑到硬件资源比较丰富,这里采取邻域均值的方法来降分辨率,降低的倍数可以由上位机来决定。其本质上即均值模板与输入图像卷积,只是模板移动的步进不同而已。

1.1.2 结构框图和说明

降分辨率模块硬件结构如图2所示。

1) 行延时模块

对一行原始数据进行延时,获得相邻的若干个像素,具体延时的次数由降分辨率最大的倍数决定。延时结构采用器件中基本触发器DFF来实现,其特点是所需信号建立的时间非常短,适合用于象素的延时操作。进过N级延时即获得相邻的N个象素。

2) 均值计算模块

对一行连续相邻的象素进行求和,同时加上前一行的求和值。

3) 地址控制模块

根据输入的降分辨率的倍数选择均值模块中求和象素的个数,同时产生后级FIFO的读写使能、深度选择,以及降分辨率后行接收中断信号的产生。

4) 行缓存FIFO模块

用于储存输入图像的行数据,FIFO的深度由地址控制模块决定。

1.2 Box滤波模块

1.2.1 功能介绍

滤波器模块的主要功能是对输入的原始图像数据进行抑制背景突出目标,提高信噪比。在实际应用中,为了适应多种尺度的目标,采用3种不同大小的滤波模板其尺寸分别为5*5,9*9,15*15。

1.2.2 结构框图和说明

具体的滤波器硬件结构如图3所示。

设计中需要注意的几点如下:

1) 填充时间

在每帧开始,行缓存FIFO需要一行的填充时间,故在第一行时FIFO的读使能信号是无效的。同时为了避免发生异常的错误,在每帧的开始对FIFO进行清空。

2) 滤波模板拆分

以5*5的模板为例,可以将5*5的盒式滤波模板拆分成3种形式的行模板:[1,1,1,1,1],[1,0,0,0,1],[1,0,32,0,1],其中,为0的系数对应像素不选通,为1的系数对应的像素相加。这样能最大化的简化模板的设计过程。

3) 系数的归一化

由于滤波过程中会出现负数,需要考虑对滤波中产生的负数进行处理。

4) 不同模板不同步问题

对每行数据进行重组,并且重构输出行使能信号。由于对滤波边界采用不处理原则,则处理结果应该处于整幅图像的中间。以5*5滤波为例,其上下左右两行两列应该置零,在时间上,滤波后图像的第3行对应原始图像的第5行。具体实现方式是,在每帧前两行期间拉低行数据使能信号,同时在一帧结尾多使能2行的时间。

2 时性实验结果

整体设计采用多级流水结构,图像像素按行逐个随时钟节拍流入,滤波算法随着像素节拍流水处理,降分辨率消耗时间201/50MHz=4.02us滤波过程一共7(行)*64+19=467个周期, 参考系统时钟为50MHz,即处理时间为467*20ns=9.34us,分割操作总共耗时5个周期,即处理时间为5*20ns=0.1us。具体如表1所示。

由此可见,在传感器送出数据后4.02+9.34+0.1=4.954us后得到的一帧的处理结果,相比较接收时间,处理时间是相当短的,这样给后续DSP做跟踪处理留下了较为宽余的空间,也证明这种设计方案是确实可行的。

3 结束语

数字图像处理中的预处理算法通常包括滤波类算法,而此类算法一般具有计算量大,重复模式多等特点,利用FPGA来处理具备相当的优势。该文提出了一种基于FPGA的图像预处理算法的实现,结合具体的box滤波器模板给出了预处理过程中降分辨率模块、Box滤波模块的详细设计,并对关键技术进行了说明。最后给出了该算法在FPGA上实现的所需要运算量。实验证明,该方法完全满足实时性的要求。

参考文献:

[1] 陈朝阳,秦付莘,张天序,等. 一种红外海面小目标检测算法的ASIC结构实现[J].微电子学与计算机,2004,21(5):108-113.

[2] 朱磊,张贵清,张天序.一种新型2-D模板卷积结构的FPGA实现[J].微计算机信息,2007,23(8).

[3] 陆海东,吴明赞.基于DSP+FPGA结构的小波图像处理系统设计[J].电子技术应用,2006,32(3).

注:本文中所涉及到的图表、注解、公式等内容请以PDF格式阅读原文

上一篇:增强无线局域网安全性 下一篇:时钟树性能的研究及改进方法