基于FPGA优化和惯性测量单元的快速红外图像去模糊
2021-11-14王玥,付强,吴艳
王 玥,付 强,吴 艳
(1.柳州工学院 信息科学与工程学院,广西 柳州 545616;2.柳州铁道职业技术学院 建筑技术学院,广西 柳州545616;3.广西科技大学 电气工程与计算机学院,广西 柳州 545001)
0 引言
图像模糊[1]在传感器获取图像的过程中时有发生,如平台的转动、振动都有可能造成像素的叠加和偏移,去模糊处理是图像处理领域的热门研究课题。与一般CCD相机相比,红外成像系统中的模糊更加常见。其中,万向节是稳定红外成像的传统机制,一般由轴上的电机、回馈传感器以及驱动电路组成[2]。在红外目标跟踪系统中,万向节系统常用于保持红外探测器的朝向,以保持目标在成像系统的视场内。因此,突然的平台移动、振动、机械冲击都会影响万向节的性能,从而造成红外图像的模糊。
为了尽可能减少模糊,增强清晰度,已有很多学者对其进行了研究。目前,图像去模糊方法一般可分为两大类:确定性方法和概率方法。确定性方法包括逆滤波[3]和最小二乘,以及正则化方法[4]。这类方法通过直接分析或数值计算得出,不进行随机或概率运算。基于迭代的去模糊方法也可归入此类。概率方法包括维纳滤波(一种后验解决方案)和迭代卡尔曼滤波器方法等[5],这类方法依赖于统计数据。
文献[6]基于图像数据的保真度和正则化项,提出惯性测量单元(Inertial Measurement Unit,IMU)保真度代价的概念,惩罚不太可能产生IMU测量值的模糊核,对曝光时间内的相机运动轨迹进行估计。文献[7]通过典型的稀疏字典学习方法消除噪声,减少特征系数的训练时间,利用双边滤波器实现POCS算法中点扩散函数估计,虽然该方法较好地保持了图像的边缘细节,但整体复杂度较高。文献[8]通过参数化维纳滤波器方法,对取自微测热辐射计红外探测器的红外图像进行去模糊,该方法假定移动目标造成红外图像模糊,但运动模糊的点扩散函数(Point Spread Function,PSF)必须是一个指数衰减函数,且为获得准确PSF,目标的速度和方向必须为先验知识。
还有一些研究提出了嵌入式系统的实时图像去模糊方法。文献[9]提出了Richardson-Lucy去模糊的FPGA实施方法,在兼顾图像恢复效果的同时,加速处理效率。文献[10]利用2个实时RL迭代以进行PSF估计,并可在智能手机上实施去模糊算法。文献[11]研究了30 帧/秒的全高清图像的实时图像去模糊,使用傅里叶小波正则化反卷积算法对离焦图像进行去模糊,并在后续研究中给出了嵌入式系统的解决方案,但硬件平台上的优化依然有待提高。
本文研究了FPGA上的图像去模糊算法,滤波器采用维纳滤波器,PSF估计根据IMU检测到的红外探测器轨迹进行计算。通过优化硬件的方式达到实时处理要求,使得整个算法具有实际应用价值。
1 提出的方法
1.1 图像模糊模型
若红外探测器在积分时间中发生移动,则获取的图像是模糊的。可通过2种方法对成像系统移动所造成的模糊进行建模:空间不变和空间变化型模糊模型[12]。线性卷积被用于空间不变型模型,也被称为均匀模糊。根据该模型,模糊会均匀地退化整个图像,这意味着在所有像素中存在着相同的模糊量。大部分研究中,相机移动被认为会对图像造成均匀的模糊影响。失真图像一般描述为PSF和清晰图像的线性卷积。由此,模糊图像或失真图像可表示为:
b=i⊗k+n,
(1)
式中,b表示模糊图像(或观测图像);i表示原图像;k表示点扩散函数;n表示噪声项。现实环境中,成像系统的移动非常复杂,仅当相机没有滚动移动,且相机移动位于图像传感器平面内的情况下,空间不变型的案例才是有效的[13]。因此,卷积可能不足以完成对现实中的红外探测器移动的建模。另一方面,空间变化型更加复杂,但能够更好地对相机的移动进行建模。在空间变化案例中,整个图像所受到的模糊并不是相同量级和相同方向的。现实中,相机移动造成的大部分模糊图像会受到空间变化模糊的影响。
空间变化方法考虑图像的不同区域有着不同的模糊量。该方法中,不能通过PSF和净图像的直接线性卷积来定义模糊图像。空间变化型模糊可以被建模为向量矩阵乘法,因为图像的每个像素有不同的滤波器。
为了对红外探测器在图像上造成的畸变和模糊效应进行建模,有必要理解在3D场景中一个点源的红外辐射是如何通过相机的光学系统的,以及红外辐射落入焦平面阵列(Focal Plane Array,FPA)的方式。来自场景中的一个3D点(X,Y,Z)的红外辐射通过一些光学元件,其后通过FPA中的像素区域(x,y)对其进行观测。通常使用成像系统模型来表示该投影过程。小孔相机模型是广泛采用的成像系统模型[14]。该投影过程可表示为:
(x,y,1)T=Pt(X,Y,Z,1)T。
(2)
若红外探测器在积分时间内有移动,则投影矩阵Pt具有时变性。投影矩阵包含红外探测器的内部参数和外部参数。内部参数为焦距、光心和倾斜系数。外部参数为探测器旋转和平移移动。若探测器在积分时间中有移动,则式(2)右侧的Pt矩阵中的旋转和平移项将会发生变化。由此,基于探测器的运动轨迹,运动轨迹上若干个3D点的红外光束将会在FPA上形成一个2D像素区域,在图像上产生了模糊效应[14]。积分时间中的轨迹移动为像素点的PSF。若将运动轨迹分割为足够小的间隔,则可将整个轨迹表示为线性移动之和。若已知探测器在每个时间间隔的相对位置或位移,则可以计算出探测器的运动轨迹。本文利用积分时间中探测器的角位置来计算PSF。
本文利用单应性矩阵,以理解在积分时间开始时从一个像素区域接收到的红外辐射在探测器运动过程中是如何落入不同像素区域的。单应性矩阵是指相机从某个角度拍摄图像中的一个点,到相机从另一个角度拍摄的图像中的同一个点的转换,针对每个像素点进行该转换。因此,单应性矩阵也可用于寻找造成模糊的点扩散函数。单应性会随着时间而变化,取决于探测器的旋转/平移移动和场景深度。例如,在经过时间t处的单应性Ht(d)转换后,时间t= 0处的图像上的点(x0,y0)被转换为另一个点(xt,yt),表示如下:
(xt,yt,1)T=Ht(d)(x0,y0,1)T。
(3)
为了计算在不同时间间隔处每个姿态之间的关系,本文使用单应性矩阵。单应性方法是利用相同探测器从不同角度得到图像的2D转换方法。利用红外探测器的单应性矩阵,可计算总运动轨迹:
(4)
式中,C为内部探测器矩阵;Rt为探测器旋转矩阵;Tt为平移探测器矩阵;N为到图像平面的法线向量;d为场景深度。从红外探测器光学设计中可以很容易得到式(5)给出的内部参数,fx和fy为焦距,cx和cy为光心:
(5)
相机移动造成的模糊,大部分是由相机的旋转移动引起的。因此,可以忽略式(4)给出的平移运动项。由于场景深度在整个图像中几乎不变,因此,可将相机的单应性矩阵简化为:
Hd(t)=CRtC-1。
(6)
本文利用IMU来计算式(6)中红外探测器的旋转矩阵。利用来自IMU的偏航(yaw)、俯仰(pitch)和翻滚(roll)得出旋转项。式(3)给出了像素区域的转换。由此,对于一个当前像素索引,可利用单应性转换计算出在发生已知的相机移动后的新像素索引。根据通过式(3)计算出的当前像素的移动,选择内插像素。对于整个图像的所有像素,使用单应性和双线性内插信息的系数矩阵转换:
it=ati,
(7)
式中,i表示净图像的向量形式,也是时间t处模糊图像的向量形式;at表示系数矩阵形式中时间t处的模糊模型,at的每行均包含少数权值(由于双线性内插,最多4个),以通过净图像i的内插像素来计算时间t处的像素(xt,yt)的强度。因此,at称为转换矩阵。一般,在积分时间中记录下的IMU样本越多,计算出的模糊滤波器的准确度越高。
由于积分时间过程中的每个时间间隔处捕捉一个新的中间图像。因此,可将观测到的模糊图像建模为探测器积分时间中运动轨迹的每个时间间隔处捕捉到的中间图像之和。这种情况下,观测到的整体模糊图像可表示为积分时间T过程中每个时间间隔处净图像的单应性转换之和:
(8)
红外探测器在每个时间间隔中的朝向被称为红外探测器的姿态。若已知在每个时间间隔的探测器朝向,则可计算出旋转矩阵,并得出每个时间间隔的单应性。本文通过实施上文描述的模糊建模算法,利用IMU样本计算每个像素的PSF滤波器k。图1给出了一些像素的PSF滤波器。
图1 一些像素的PSFFig.1 PSF of some pixels
由图1可以看出,不同像素的PSF滤波器几乎相同,因此,这种类型的模糊被称为空间不变模糊。利用这一合成模糊图像和计算出的PSF,可以得到去模糊后的图像。
1.2 图像去模糊
本文利用FPGA IP核,在Xilinx系统发生器中实施维纳滤波。使用维纳滤波的一个原因是在实施维纳滤波时可以使用快速傅里叶变换(Fast Fourier Transform,FFT)算法。但维纳滤波器的一个限制是其仅适用于移除空间不变型模糊。在空间不变模糊中,整个图像会有几乎同等程度的失真。因此,可使用卷积或滤波方法移除空间不变模糊,因为一个PSF滤波器可用于整个图像。如前文所述,通过IMU数据和基于单应性的算法得到PSF滤波器,即退化滤波器。因此,应从合成模糊图像中移除空间不变型模糊。
前文已计算出红外探测器运动引发的PSF模糊滤波器k和由该移动所产生的合成模糊图像b。现在,必须求出净图像i。如式(10)所示,可通过模糊滤波器直接分割模糊图像,由此得出净图像,即,逆滤波:
B(u,v)=I(u,v)K(u,v)+N(u,v),
(9)
(10)
式中,如果噪声不是已知的,可能无法计算出完全的净图像。即使噪声为已知,如果模糊滤波器包含零值或非常接近零的数值,N(x,y)/K(x,y)可能会成为主导项。逆滤波作为高通滤波器,可以增强图像边缘和图像结构。
另一方面,由于逆滤波方法不能有效处理高噪声图像,可采用维纳滤波方法[15]。如式(11)所示,去模糊程序中考虑了噪声的统计特征。如图像中的噪声是未知的,则将维纳滤波切换为逆滤波。
(11)
式中,Sn(x,y)表示噪声的功率谱密度;Si(x,y)表示图像的功率谱密度。为进行维纳滤波,需要得到图像和噪声的功率谱密度信息。除单独计算这2个数值之外,也可直接使用观测图像的信噪比(Signal to Noise Ratio,SNR)。
图2 本文方法示意Fig.2 Schematic diagram of the proposed method
2 FPGA硬件实施与实验分析
2.1 本文FPGA设计
维纳滤波方法更适用于实时实施,维纳滤波算法包括模糊图像和PSF模糊滤波器的2D-FFT、复数乘法以及逆2D-FFT。本文在Xilinx系统生成器工具中使用Xilinx FPGA IP核实施了这些步骤。使用FPGA IP核将维纳滤波方法集成到电子硬件中,可直接利用FPGA IP核及Xilinx系统生成器工具,在RTL层设计和验证数字硬件。该工具能够生成并合成用于数字设计的HDL代码。同时,使用相同工具,还可对特定算法的FPGA资源利用率进行监测。Xilinx系统生成器工具的主要优点是能够结合Matlab和Simulink对设计的硬件进行协同仿真。本文针对不同图像进行了仿真,并为维纳滤波器提供了现成RTL设计。若利用直接线性卷积完成,则复杂度约为O(n2)。若使用FFT完成,则算法复杂度为O(n·lbn)。为此,必须使用傅里叶变换,将模糊滤波器和模糊图像转换到频域。
2.1.1 硬件平台
本小节将说明2D-FFT实时实施中的关键问题,包括计算复杂度、存储规划和计算时间等,并分析为实施维纳滤波,在实时数字信号处理中可能会使用的平台,例如CPU、GPU和FPGA。FPGA常与CPU或GPU一起被用于实时数字信号处理中,以加快处理负荷较大的复杂运算。Xilinx的ZYNQ系统SOC结合了CPU和FPGA,以快速执行复杂运算。ZYNQ集成电路封装了双核ARM Cortex A9处理器。FPGA可在处理器速度不够时提供更快的并行处理。通过协议高级可扩展接口确保FPGA和CPU之间的通信。本文实时平台的组织结构如图3所示,仅在Xilinx系统生成器工具的FPGA侧实施了维纳滤波算法,即图3右侧。由此可观察维纳滤波算法使用了多少FPGA资源,从而正确选择包含足够FPGA资源的ZYNQ器件号。系统通过软件处理一些任务,如图3左侧所示,包括图像捕捉、IMU数据读取、红外探测器移动是否超过限制并在积分时间中产生模糊的判断,使用IMU传感器样本计算PSF模糊滤波器,为此,本文建立一个中断控制软件架构,以读取IMU传感器的样本。
图3 本文实时平台的组织图结构Fig.3 Organization structure of real-time platform
众所周知,惯性传感器中存在漂移问题。若IMU漂移处于较高水平,对于较长的曝光时间和积分时间,使用惯性传感器进行的PSF估计容易出现误差。本文使用校准后的IMU数据,估计并校正了随机和确定性误差参数。因此,所提红外成像模型中不考虑IMU漂移。
2.1.2 存储规划
存储器是实时图像处理系统的一个关键。实时图像处理中大多使用2种类型的存储器:SDRAM和SRAM。SRAM存储器成本较高,因此大部分信号处理研究倾向于采用SDRAM,但SDRAM本质上存在按列寻址限制。此限制会导致2D-FFT处理速度的下降。在将SDRAM用作基本图像处理存储器时,转置存储(Corner Turn Memory,CTM)方法非常适用于2D-FFT[16]。在Xilinx系统生成器仿真中,使用FPGA的双口块RAM存储器IP核,其作用类似于外部存储器。
使用该方法是因为外部存储单元的仿真难度较大。首先,要处理的图像大小是决定要使用的存储器类型和容量多少的关键。假定探测器能够捕捉1 024×1 024分辨率的图像,每个像素16位;由此,单帧图像需要1 024×1 024×16 = 16 MB的存储。实时图像处理中,使用3帧(而非1帧)以实现连续非中断的图像处理流。将来自红外探测器的3个连续图像保存在存储器中,作为输入帧缓冲。同理,对于处理后的图像,在存储空间(称为输出帧缓冲)中保留3帧图像。图像处理流程的中间步骤得到的图像可以保存在存储器中。此外,要考虑到FFT运算所需的存储空间。在存储器使用中需要考虑到上述所有情况。SDRAM能够满足这些存储需求。
2.1.3 2D-FFT的实施
2D-FFT是维纳滤波算法最重要部分,本文在Xilinx系统生成器中实施了2D-FFT。利用Xilinx提供的1D-FFT IP核获得2D-FFT。首先,对整个红外图像逐行进行1D-FFT。然后,向结果应用按列1D-FFT,得到2D-FFT。使用SDRAM,按下文描述的次序实时实施改程序:① 将图像逐行写入SDRAM存储器。对存储器中保存的每行执行1D-FFT;② 将结果按列再写入存储器。该过程等效于对图像进行转置。再一次执行逐行1D-FFT后,得到图像的2D-FFT。
在SDRAM存储器的写入/读取之前,必须选择或激活行地址。在写入/读取后,或行地址发生变化时,需要刷新或重新加载SDRAM存储器。当执行直接转置时,DRAM控制器必须识别相应的行或列中的变化,并对该行或列进行预充电。SDRAM使用行写列读或列写行读的原理。由此,在转置操作过程中,写入和读取速度之间会产生严重不匹配。SDRAM存储器的过度使用会降低整个图像处理流程的速度,这是实时图像处理的一个瓶颈。因此,本文利用CTM方法以进行快速高效的实时图像处理,由此可缩小写入和读取步骤之间的速度差异。通过使用Xilinx系统发生器中FPGA的内部存储器来实施CTM方法。使用CTM的2D-FFT操作如图4所示。在实施转角矩阵法时,使用了Xilinx系统发生器提供的参考设计[17]。在Xilinx系统发生器中实施256点的2D-FFT需要约196 000个时钟周期。将时钟频率选择为150 MHz,则计算256-点的2D-FFT过程需要约1.3 ms。
图4 使用CTM的2D-FFT操作Fig.4 2D-FFT operation diagram using CTM
2.2 去模糊结果分析
本节对本文去模糊结果进行展示和分析,同时,对比了几种同类方法的去模糊结果和PSF估计情况,这些方法有文献[9,11,13]。其中,文献[9]提出了Richardson-Lucy去模糊的FPGA实施方法。文献[11]研究了30 帧/秒的全高清图像的实时图像去模糊,使用傅里叶小波正则化反卷积算法对离焦图像进行去模糊。文献[13]提出了频域优化的图像去模糊方法。
2.2.1 去模糊图像的边缘检测
本文利用图像4个角的像素,执行图像去模糊测试,利用PSNR度量对去模糊图像的质量进行量化评估。在Matlab中利用偏航、俯仰和翻滚样本计算出PSF;在Xilinx系统生成器中通过维纳滤波RTL设计执行去模糊仿真。图5给出了去模糊图像的边缘检测结果,之所以进行边缘检测,是因为图像边缘信息对于图像去模糊后的结果至关重要。由图5可以看出,去模糊后的图像边缘更加明晰且有轮廓性,PSNR值得到了明显改善,图像整体看起来更加清晰。
图5 本文方法去模糊结果的边缘检测情况Fig.5 Edge detection of deblurring results for the proposed method
2.2.2 图像去模糊效果比较
本文去模糊方法采用ZYNQ Ultrascale+设备,处理的域为频率。表1给出了PSF估计方法的比较,相关研究表明[16],利用基于IMU的方法计算模糊PSF能够提升红外成像的性能。文献[9,11,13]方法依赖于空间不变或空间可变型PSF,但本文设计能够计算2种类型的PSF,这是所提方法的主要优势所在。
表1 PSF估计方法的比较Tab.1 Comparison of PSF estimation methods
为了从更多定性的角度对比各方法的去模糊效果,本文利用一些模糊的红外交通视频进行实验。如果去模糊后的效果越好,则汽车被检测出的准确率越高,反之则越低。各方法去模糊后的汽车检测准确率比较如图6所示。可以看出,如文献[9]可以较好地对正在行驶的汽车进行去模糊,去模糊效果位列第二,但对较大模糊程度的图像区域处理并不好;文献[11,13]的红外去模糊效果较差;本文方法的去模糊效果最佳,主要得益于所提方法可以处理空间不变和空间可变型的2种PSF,可以精确估计每个像素的PSF。
(a) 原模糊图像
(b) 文献[9]去模糊结果
(c) 文献[11]去模糊结果
(d) 文献[13]去模糊结果
(e) 本文去模糊结果图6 各方法去模糊后的汽车检测准确率比较Fig.6 Comparison of vehicle detection accuracy after debluring by various methods
2.2.3 各方法的运行效率比较
各方法的运行效率比较如表2所示,比较了总处理时间和平均帧率。可以看出,所提方法在处理时间、每秒帧数方面实现了显著性能提升。FFT处理是硬件环境中运行图像处理算法的一大难题,但本文利用转角转置进行2D-FFT,大大缩减了总的处理时间。
表2 各方法的运行效率比较Tab.2 Comparison of operation efficiency for each method
PSF的计算时间很大程度上决定了方法的运行效率,在Xilinx系统生成器的结果中,当PSF滤波器使用2D-FFT块时,耗时约2.6 ms。如果将逆2D-FFT和复数乘法纳入考量,则整个维纳滤波设计对256×256 的模糊红外图像的处理约耗时4 ms。这表明即使在最差情况下,对于以30 Hz提供图像的红外探测器,提出的方法也可实现实时处理。
3 结束语
本文利用红外成像系统在积分时间中的IMU数据,计算空间不变和空间变化型模糊,在Xilinx系统生成器工具中针对实时应用成功设计了维纳滤波,即空间不变去模糊技术,并在Matlab中对RTL设计进行了快速测试验证。与标准HDL测试平台相比,这是一种更直接的测试方法。与当前先进方法相比,提出的基于FPGA硬件的红外图像去模糊设计实现了较大性能提升,能够从合成模糊图像中成功移除空间不变模糊。本文方法的PSF估计依赖于IMU检测到的红外探测器轨迹,但IMU会积累误差,长时间的视频去模糊会造成较大的误差,如何在长时间去模糊的过程中保持合理的误差范围将是本文未来研究的方向。可能的方法是设定收集数据的有效时间间隔,或者利用软件算法对IMU误差进行校准,从而保证长时间工作。