基于FPGA 的红外图像运动补偿滤波算法实现

2023-03-15 02:04林前进朱婧文李大鹏邵艳明
上海航天 2023年1期
关键词:差值红外滤波

林前进,朱婧文,李大鹏,余 跃,邵艳明

(1.上海航天控制技术研究所,上海 201109;2.中国航天科技集团有限公司 红外探测技术研发中心,上海 201109)

0 引言

红外热成像技术广泛应用于军事、医学和监控安防等领域,随着应用环境的日益复杂和应用技术的深化推进,对于红外图像显示质量的要求也不断提升[1-2]。但在图像采集传输过程中,系统的成像质量受限于噪声干扰,其中主要包括图像探测器的暗电流噪声、探测器信号放大电路中产生的噪声(主要有热噪声、闪烁噪声、光电二极管之间的感光不均匀噪声),以及在成像电路中还有信号处理电路所带来的噪声等,如模拟前端电路中的热噪声、数字电路的量化噪声等[3-5]。因此,通过有效的滤波技术抑制噪声改善图像显示质量,是后续图像处理分析不可或缺的环节。

常见的红外图像滤波方法主要分为空域方法和时域方法[6]。空域滤波主要是利用噪声空间分布的随机性,传统的方法有均值滤波、高斯滤波等。这类空域滤波算法会导致图像中边缘和纹理的退化,导致表征图像细节信息的关键梯度数据丢失,输出图像整体表现出模糊感[7-8]。非局部均值滤波算法通过噪声估计,能较好地去除图像中的高斯噪声,并且能够保持边缘,但是算法本身计算复杂度高,囿于实时处理场合的使用[9]。区别于空域滤波对于单帧图像的处理模式,时域滤波方法[7]包含限幅滤波、一阶滞后滤波等,考虑了帧间图像的相关性,具备更好的噪声处理效果,但是针对运动场景,由于噪声和场景变化的混叠导致目标产生伪影等时域模糊现象[10-11]。因此,为了兼顾保留帧间相关性和去除时域模糊问题,以运动补偿的红外图像无限脉冲响应(Infinite Impulse Response,IIR)滤波算法[12]为基础,引入阈值判定和帧间相关性信息保留等方法,实现图像运动区域的检测分类,根据区域属性设置不同滤波参数进行滤波处理,有效滤除图像噪声,改善图像显示质量。

红外图像实时处理技术是决定众多红外探测器件和高性能处理算法走向军事及现代化等领域工程应用的关键[13-15]。在实际工程需求中,随着红外图像分辨率和图像帧频的不断提高,对图像处理系统的实时性提出挑战,单纯的软件系统对图像进行实时处理已经显得乏力,而通用处理器的串行执行模式也制约了图像处理的速度,限制了其应用性[16-17]。现场可编程门阵列(Field Programmable Gate Array,FPGA)器件具有并行性架构特点,满足实时性高、可重配置性灵活以及开发周期短等优势,使其在众多的图像处理芯片中脱颖而出,得到了广泛的青睐和使用[18-20]。因此,本文采用FPGA作为硬件平台,实现红外图像运动补偿滤波算法的硬件设计,结合流水线和串行移位方法加速算法的执行效率,提高运动补偿滤波算法的实时性,通过实验数据表明运动补偿滤波算法的有效性,方便进一步的图像处理操作。

1 运动补偿滤波算法原理

红外图像噪声时域IIR 滤波器描述为

式 中:Px,y(t)为当前时刻原始图像数据;Fx,y(t)为当前时刻滤波后图像结果;Fx,y(t-1)为前一时刻滤波后图像,下标x、y为图像像素在二维图上的横纵坐标;a1、b1为滤波器影响因子。

b1影响因子比重越大,则滤波器截止频率越低,平滑效果越显著,但同时也会增大相位延时。除了b1影响因子之外,图像中的高频成分也会对输出产生相位延迟,从而导致时域图像模糊。高频成分主要来自图像运动区域,因此需要对图像进行运动区域检测并加以处理,从而在滤波基础上有效抑制图像模糊现象。因此引入差值背景图[21-22]的方法对图像区域进行区分。算法中将差值背景图定义为当前时刻图像与前一时刻滤波后图像的差值绝对值,表示为Diffx,y(t)=|Px,y(t)-Fx,y(t-1)|。差值背景图的波动主要受图像运动和图像噪声两部分因素影响,从而导致图像帧间的差异变化,运动区域检测如图1 所示。

图1 运动区域检测Fig.1 Schematic diagram of the motion area detection

首先,通过对差值背景图的均值和方差求取,根据高斯分布3sigma 原则计算阈值BGN,差值背景图中像素与阈值BGN一一比较,如图1(a)所示。图中,超出阈值范围的像素集合确定为图像运动区域或者图像噪声部分。

其次,为排除噪声因素的影响,引入图像八邻域判定方式实现对图像运动区域的检测,由于红外图像的动态噪声多为白噪声且像素之间的噪声分布相互独立,因此在某一像素大于阈值BGN 时,为了进一步区分为图像运动区域或者图像噪声,需要对其所在的八邻域进行判断。

再次,由于阈值BGN 求取遵循3sigma 原则,像素点落入在BGN 阈值范围内的概率公式为:,如图1(b)曲线所示。

最后,因此八邻域内存在3 个以上像素均大于阈值BGN 概率计算为3.2×10-9,这是一个极小概率事件,红外噪声在统计意义上无法满足该判定条件,而图像运动造成的差值背景图变化具备很强的邻域相关性,即使是弱小红外目标也极易满足八邻域判定条件。

因此,通过八邻域判定条件有效对噪声和运动区域进行区分,如果像素点(x,y)在大于阈值BGN条件下,且其八邻域存在3 个以上像素大于阈值BGN,则定义该点(x,y)为运动像素点。

在运动区域检测基础上,引入索引号图标号设计,保留多帧红外图像数据的帧间相关性,进一步细分运动像素点。定义索引号图Tx,y(t),cf为图像帧标记即图像帧数的计数值。如果差值像素点处满足阈值判断,且周边八领域像素存在3 个以上像素满足阈值判断的条件,则将图像帧标记cf更新至索引号图Tx,y(t)中,否则保持前一帧相同数据。在更新完索引号图后,此时定义索引号图Tx,y(t)中所有值等于cf的像素集合映射为图像运动区域,索引号图中所有值等于cf-1、cf-2、cf-3 的像素集合映射为图像中间区域,索引号图中其他像素映射为图像静态区域,根据图像区域的区分选取不同的滤波参数进行图像处理。

通过式(1)可知,a1和b1作为滤波器影响因子,其中b1影响因子比重越大,则滤波器截止频率越低,平滑效果越显著,但同时也会增大相位延时。因此,针对图像静态区域,滤波器作用主要侧重于图像噪声的滤除,因此提高b1影响因子的权值,提升图像的平滑效果,故对图像静态区域设置参数为a1=0.125,b1=0.875。针对图像运动区域,滤波器作用则弱化噪声滤波效果,降低滤波带来的相位延时,防止场景变化的时域伪影现象,故降低b1影响因子的权值,对图像运动区域设置参数为a1=0.875,b1=0.125,而图像中间区域则折中处理,选择滤波参数为a1=0.25,b1=0.75。本文实现对图像不同区域属性的运动补偿滤波处理,整体算法流程如图2 所示。

图2 算法流程Fig.2 Flow chart of the filtering algorithm

为了验证本文算法的有效性,对多种图像滤波处理算法进行对比实验。以外场真实数据为基础,通过Matlab仿真给出普通时域滤波、普通空域滤波与运动补偿滤波的效果对比,如图3 所示。绿色虚线方框标注图像部分背景,绿色实线方框表示其放大效果图,蓝色方框标注图像观测目标。如图3(a)和图3(c)所示,普通空域滤波算法会导致图像中边缘和纹理的退化,目标细节信息的关键梯度数据丢失,呈现出模糊感。如图3(a)和图3(b)所示,普通时域滤波算法考虑了帧间图像的相关性,具备良好的背景噪声处理效果,但是针对运动场景,由于噪声和场景变化的混叠导致图像目标产生伪影现象。利用运动补偿算法得到结果如图3(d)所示,背景噪声得到了有效抑制,同时并未引起明显的伪影现象和运动模糊。

图3 原图下的滤波效果对比图Fig.3 Comparison of filtering effect under the original image

表1 不同算法γ 细节表征Tab.1 Detail information representation of γ by different algorithms

2 基于FPGA 的硬件设计

基于FPGA 的红外图像运动补偿滤波算法主要由BGN 阈值计算模块、帧标记更新计算模块和滤波输出模块组合实现。通过红外线阵探测器实现红外图像的采集,模拟的红外图像信息经过AD 电路转换成数字图像输入FPGA。

BGN 阈值计算模块如图4 所示,主要完成差值背景图的均值运算和方差运算,设计采用流水线方法缩短存储元件间的数据通路,进而提高时钟频率改善电路的吞吐能力。首先,对当前原始图像数据和前一帧滤波图像数据进行同步读取,进行差值运算,并对差值运算结果进行绝对值求取,得到算法需要的差值背景图;其次,所有绝对值运算结果跟随时钟节拍进行累加,对所有数据累加后完成差值背景图的均值运算;最后,重新读取绝对值运算数据,结合均值结果,完成差值背景图的方差运算。方差运算部分以差值运算模块、乘法运算模块、数据累加求平均模块和开方运算模块组合实现,同理得到差值背景图的方差值。根据“均值+3×方差值”范式计算阈值BGN。计算出来的阈值BGN 结果通过寄存器锁存,直至下一帧图像阈值计算后更新。

图4 BGN 阈值模块流水线计算Fig.4 Pipeline calculation diagram of the BGN threshold module

帧标记更新计算模块如图5 所示,将算法中分支判断和循环部分通过硬件电路形式进行展开,主要通过比较器、加法器、复用器和RAM 内存组合设计完成。

图5 帧标记更新计算Fig.5 Calculation diagram of the frame mark update module

图中绿框Diff(x,y)点代表差值背景图中某一像素,黄色部分表示像素点Diff(x,y)的八邻域像素,分别表示为Diff(x-1,y-1)、Diff(x-1,y)、Diff(x-1,y+1)、Diff(x,y-1)、Diff(x,y+1)、Diff(x+1,y-1)、Diff(x+1,y)、Diff(x+1,y+1)。采用串行移位方法将八邻域像素与阈值BGN 通过比较器判断后并相加,再采用比较器判断Diff(x,y)八邻域内是否存在3 个以上像素超过阈值BGN。同时满足Diff(x,y)大于阈值BGN 的条件,则将图像帧标记cf更新写入至对应索引号图中,否则保持索引号图中原始数据。在计算过程中,通过添加寄存器延迟模块保持并行链路中的数据同步性计算。以此类推,将Diff(x,y)遍历整幅差值背景图,完成所有图像数据的帧标记cf更新,但在遍历过程中,由于图像的边缘像素缺失八邻域数据,所以设计中对边缘图像数据的帧标记不作更新处理。

滤波输出模块如图6 所示,由比较器、移位器、加/减法器、复用器和RAM 内存组合完成硬件设计。逐一读取索引号图中数据index_out,通过比较器与当前图像帧标记对比,若两者相等表示该像素处为运动区域,若两者相差小于4 则表示该像素处为中间区域,否则便为图像静态区域,并根据不同的区域确定相应的滤波参数。考虑数据计算的同步性,当前图像数据、上一帧滤波数据和索引号图数据index_out 需要保持在同一使能下读取操作。硬件设计中使用比较器和位合成器,形成使能控制信号以区分不同区域属性。此外同步读取原始图像数据和上一帧图像滤波数据,对三种区域属性的滤波运算进行硬件设计展开,通过移位器操作代替片上乘法器操作,优化资源使用。复用器模块通过使能控制信号对滤波结果进行多路复用选择输出。更新后的滤波数据再次缓存至滤波图像RAM 中,并为下一帧图像处理做数据准备。

图6 滤波输出模块Fig.6 Schematic diagram of the filter output module

3 功能实现

选用Xilinx 公司的Kintex7 系列FPGA 来实现整体功能,具体型号为410tffg900-2。使用硬件设计语言在Vivado 2015 环境下完成整体功能的实现,并对逻辑的时序和功能进行仿真和验证。FPGA 实现运动补偿滤波过程采用流水线的工作方式,硬件系统通过红外探测器采集256×256@100 Hz 的视频流红外数据作为待处理原始图像数据,FPGA 主频时钟200 MHz,时钟周期为5 ns。资源利用率见表2,该算法硬件设计占用资源较少,片上拥有较大的设计升级空间,满足设计初衷。在红外成像系统中,将原始图像数据和滤波图像分两路同时输出显示,在工程试验中原始红外图像数据与运动补偿滤波后的实时画面对比如图7 所示。图7(a)、图7(b)和 图7(c)表示 运动过 程中截取 第2 405、2 409 和2 417 三帧原始红外图像数据,图像白点处为运动检测目标,由于探测器性能、通道差异、前端电路以及工作环境等因素影响导致图像背景上出现闪烁条纹状噪声,影响红外目标的实时截获和识别。图7(d)、图7(e)和图7(f)表示经过运动补偿滤波处理后对应的滤波图像,在保留红外目标特征的同时,持续滤除条纹噪声,改善图像背景,运动补偿滤波处理,从而达到预期效果。

表2 算法硬件设计资源利用情况表Tab.2 Resource utilization table of the algorithm hardware design

图7 运动场景下硬件实现结果对比图Fig.7 Comparison diagram of the hardware realization results in motion scenes

按照流水线操作,对单帧图像数据进行运动补偿滤波处理需要的时间计算如下。算法的硬件设计过程分为BGN 阈值计算模块、帧标记更新模块和滤波输出模块,处理时间分别为tBGN、t帧标记更新和t输出。通过算法流程分析,可以得知前一帧图像数据的BGN阈值作用于当前帧图像数据的帧标记更新模块和滤波输出模块,故而在BGN 阈值计算模块与帧标记更新模块、滤波输出模块在单帧图像周期内计算相互独立,并行执行逻辑运算。因此单帧图像数据的算法处理时间最终为Max(tBGN,t帧标记更新+t输出)。

在BGN 阈值流水线计算过程中,差值背景图的平均值求取和方差求取部分相互依赖,以顺序逻辑执行,需要二次遍历所有图像数据。然后差值运算、绝对值运算、乘法运算以及阈值组合均需要一个时钟周期,开方运算需要20 个时钟周期,最终tBGN=(2×256×256+26)×5 ns=0.66 ms。在帧标记更新和滤波输出模块计算过程中,比较器、复用器、加法器、移位器以及位合成模块均需要一个时钟周期,同样帧标记更新模块以流水线结构完成差值背景图的遍历,此外索引号图RAM 在帧标记更新模块和滤波输出模块之间缓存时间为半幅图写入后读出,最终t帧标记更新+t输出=(256×256+256×128+10)×5 ns=0.5 ms。因此在该硬件设计中,对实时采集的红外图像的运动补偿滤波算法处理时间是0.66 ms,而红外图像帧频为100 Hz 即10 ms,设计裕量满足系统实时性要求。

通过上述对滤波结果的对比、资源利用率的分析和处理时间的评估可以看出,运动补偿滤波算法能够在低延时的前提下,有效改善了红外图像质量,去除图像中时域背景噪声,提升红外显示系统整体性能。

4 结束语

本文通过红外图像阈值计算和索引号更新计算,实现图像的运动区域检测,以流水线、串行移位等设计方法在FPGA 上完成红外图像运动补偿滤波算法的硬件设计。实验结果表明:基于FPGA 的红外图像运动补偿滤波算法能够有效去除红外图像中的时域噪声,并抑制运动模糊,明显改善了红外图像显示质量,硬件设计方法充分利用了FPGA的优势,易于实现,提升了算法的运行频率,保证了FPGA 实时图像处理能力,且FPGA 资源占用低,具备较强的工程应用价值。

猜你喜欢
差值红外滤波
网红外卖
闪亮的中国红外『芯』
差值法巧求刚体转动惯量
TS系列红外传感器在嵌入式控制系统中的应用
枳壳及其炮制品色差值与化学成分的相关性
基于快速递推模糊2-划分熵图割的红外图像分割
RTS平滑滤波在事后姿态确定中的应用
基于线性正则变换的 LMS 自适应滤波
基于区域最大值与平均值差值的动态背光调整
用平均差值法制作乡镇精细化温度预报