基于FPGA的红外镜头自动聚焦技术研究与实现

基于FPGA的红外镜头自动聚焦技术研究与实现
孙少伟,杨粤涛,杨炳伟,万安军,钟海林
(苏州长风航空电子有限公司,江苏苏州 215001)
摘要:自动聚焦技术在红外热像仪监控领域有着非常重要的作用。目前业内红外自动聚焦技术存在聚焦成功率低、架构复杂、聚焦速度慢等状况,为此提出了一种基于FPGA的红外镜头自动聚焦技术,采用单FPGA实现了红外图像处理显示和自动聚焦的功能。鉴于红外图像普遍存在竖条纹噪声和随机噪声等特点,本文在实现聚焦过程中对红外清晰度评价算法和爬山算法做了改进和优化。实验结果表明本文提出的算法和实现方式能够很好地实现红外镜头的自动聚焦,同时具备集成度高、聚焦速度快、成功率高等特点,有比较广泛的应用前景。
关键词:红外;自动聚焦;FPGA;清晰度评价;爬山算法
中图分类号:THB11      文献标识码:A      文章编号:1001-8891(2021)05-0464-09
Research and Implementation of Infrared Lens
Auto-focus Technology Based on Field Programmable Gate Array
SUN Shaowei,YANG Yuetao,YANG Bingwei,WAN Anjun,ZHONG Hailin
(AVIC Suzhou Changfeng Avionics Co., Ltd., Suzhou 215001, China)
Abstract: Autofocus technology plays an important role in the field of infrared thermal imager monitoring. At present, there exist some problems with infrared auto focusing technology, such as low success rate, complex architecture and low focusing speed. Therefore, this study proposes an auto focusing technology of infrared lens based on FPGA, which realizes the functions of infrared image processing, display, and auto focusing with a single FPGA. In view of the common characteristics of vertical stripe noise and random noise in infrared images, this study improves and optimizes the infrared definition evaluation algorithm and mountain climbing algorithm in the focusing process. The experimental results show that the algorithm and implementation method proposed in this study can help infocusing on the infrared lens remarkably. Meanwhile, the proposed method has characteristics such as high integration, fast focusing speed, and high success rate, and thus has wide application prospects.
Keywords: infrared, autofocus, FPGA, definition evaluation, mountain climbing algorithm
0  引言
红外热成像技术近些年在国防、战争、探测、监测等领域有着十分广泛的应用。对于应用在边海防的热像监控仪来说,使用过程中红外转台需要固定周期的旋转定位来达到巡视目的,每次转动到新的位置对应新的场景需要重新聚焦来得到清晰的画面显示,因此红外热像仪的自动聚焦功能能够大大方便操作者的观察和使用。
相比于可见白光成像技术,红外成像技术根据被观测物体本身的发热实现对被观测物的成像,由于其成像原理跟可见白光成像原理不一致,因此红外成像技术与白光成像技术在实现上有一定的差异。基于图像实现自动聚焦技术在白光画面处理中已经非常成熟了,文献[1]和文献[2]中,作者分别使用PC和FPGA 完成了基于可见白光画面的镜头自动聚焦。
在实际应用中,由于红外探测成像仪的性能受到红外探测器、模数转换电路、结构散热、光学镜头等诸多因素影响,传统的白光图像自动聚焦技术在红外画面的自动聚焦上效果很差。因此要针对红外画面自身的特点(存在竖条纹现象、噪声过高等)提出一种自动聚焦技术。本文提出一种基于FPGA的红外镜头自动聚焦技术,相比于文献[3],针对红外画面竖条纹的特点改进了图像质量评判的算法,相比于文献[4],
464
针对红外图像噪声大的特点优化了爬山算法来实现镜头控制,相比于文献[5],本文不依赖于上位机的参与,完全由FPGA本身实现图像采集、图像优化、图像清晰度评估、爬山算法实现、电机控制等工作,大大提高了热像仪整机的集成度。
1  热像仪组成与自动调焦原理
1.1  热像仪组成
本文提出的具备自动聚焦功能的热像仪实物如图1所示。主要组成部分包括红外镜头、红外探测器、图像处理电路、FPGA电路、DDR3、电机驱动电路以及调焦电机和调焦机构(机械齿轮)。
图1 自动聚焦红外热像仪实物图
Fig.1 Autofocus infrared thermal imager
1.2  热像仪工作原理与自动调焦工作原理
红外热像仪的主要架构如图2所示。
Electric Motor
图2  红外热像仪主要架构
Fig.2 Main structure of infrared thermal imager
从图2中可以看出整个热像仪的组成架构,热像仪的工作流程如下。
1)光线通过红外镜头进入到红外探测器焦平面,红外镜头能够通过的光谱有效波长为8~12 m,可以将可见白光滤掉。
2)红外焦平面将红外光转化为电信号,本次选用的红外焦平面能够成像的有效分辨率为720×576。
3)红外焦平面输出的信号为模拟视频信号,电路中需要将其进行数模转换,用AD转换芯片AD9251实现将红外模拟信号转换为奇偶各14bit的数字视频数据。
4)奇偶数据需要在FPGA内部进行重组,然后对红外画面进行非均匀校正、图像增强、去竖条纹、温度补偿等后期图像处理,这一部分不是本文的重点,不多讨论。
这一步中,需要将步骤3)生成的奇偶数据逐行拼接成一幅完整的画面,图像中每一行相邻的两个像素的灰度值来自不同的源(奇偶通道),在成像中会产生“竖条纹”现象。竖条纹在红外成像中普遍存在,在本步骤环节FPGA对画面进行优化处理,消除竖条纹带来的干扰,使整帧画面显示更加平缓流畅。
5)处理好的图像数据通过外部电路编码成PAL 制视频格式直接输出到显示器,也可以通过网络压缩编码到服务器端进行显示。
对于自动聚焦来说,需要依赖于这一步生成的图像数据进行。
6)根据5)生成的图像,进行图像清晰度评价。FPGA对并行数据有强大的处理能力,因此选用梯度能量算法进行清晰度评价。常用的梯度能量算法需要对整幅画面的所有像元做数据处理,计算量比较大,同时处理时间长。本文提出了一种改进的梯度能量算法来评价成像清晰度,具体见第2章。
瞬时速度中心7)FPGA的PL端将图像清晰度评价的结果交给下一个环节处理。对于这一步,文献[5]的设计里整个6)和7)都依赖于上位机的PC实现。本文则是继续在FPGA内部实现根据清晰度来进行自动调焦。
8)FPGA的PL端根据清晰度评价数据采用爬山算法实现对电机的控制,进而调整镜头焦距,最终得到清晰的画面,完成聚焦。
爬山算法在可见光成像自动聚焦中有比较广泛的应用,但是由于红外图像本身噪声大,竖条纹多,在爬山过程中会出现“伪山顶”状态。“伪山顶”的存在会直接导致自动聚焦的失败,为此本文针对爬山算法做了优化和改进,具体见第3章。
概括起来,自动调焦的实现流程如图3所示,整个过程是一个闭环反馈的过程,需要反复的调整优化,最终达到图像的最清晰状态,即聚焦状态。
本文采用Xillinx公司的ZYNQ系列FPGA- FXC7Z030-2FBG676实现上述4)~8)步。ZYNQ内部分为PL端和PS端,其中PL端为可编程逻辑门阵列,用来实现图像处理和清晰度评价,PS端内部为ARM核,用来实现爬山算法和电机控制。同时FPGA
465
466
外部配置两片DDR3,型号为Micron 公司的MT41J128M16HA ,单片容量256 MB ,两片容量512 MB ,用于缓存视频画面数据。
图3
自动聚焦流程
Fig.3  Auto focus process
2  红外图像质量评判在FPGA 中的实现
2.1  清晰度评判算法
文献[6]中对清晰度评判算法做了全面具体地介绍,结合红外图像的特性以及FPGA 实现难易程度。本文采用梯度能量算法来对图像清晰度进行评判。
如图4所示,对图像素3×3掩模区域内的像素灰度值做平方差和处理。
无线投票系统
图4  利用3×3掩码计算梯度能量
生命晶石
Fig.4  Calculation of gradient energy using 3×3 mask
对于图中像素点(x ,y ),定义其能量值为F (x ,y )为其周边8个相邻像素灰度值与其差的平方和。如公式(1)所示:
F (x ,y )=(f (x -1,y -1)-f (x ,y ))2+[f (x ,y -1)-f (x ,y )]2+
[f (x +1,y -1)-f (x ,y )]2+[f (x -1,y )-f (x ,y )]2+[f (x +1,y -1)-f (x ,y )]2+(f (x -1,y +1)-f (x ,y ))2+[f (x ,y +1)-f (x ,y )]2+[f (x +1,y +1)-f (x ,y )]2
(1)
将所有的像素灰度差方和累计相加得到一幅图像的梯度能量值为: ()719575
防止冷凝水
value 11
,x y F F x y ===∑∑          (2)
对于清晰度高的画面,由于其图像细节比较多,因此梯度能量值F value 会是一个比较大的数值。对于模糊的画面,每个像素值都差别不大,F value 的值也很小。对于一幅单像素画面(所有像素值都一样)来说,F value =0。
所以,F value 数值大小能够反映图像细节的程度,进而反映出一幅图像画面的清晰度。梯度能量算法能够评价出图像的清晰度,本文采用该算法评估红外画面的清晰度。
2.2  梯度能量算法在红外图像清晰度评判中的改进
2.1节中提及的梯度能量对于评价可见白光画面清晰度有很好的结果,但是由于红外画面是奇偶列数据拼接而成(1.2节提及到的第3步),因此左右相邻像素灰度值差别很大,直接采用传统的梯度能量评价算法实施的聚焦效果不佳。本文针对这种现象对算法做了一定的改进,使用3×5掩模而不是3×3掩模,这样能够避免不同视频源的画面像素带来的差异,将竖条纹带来的噪声降到最小。
同时鉴于热像仪自动聚焦对时间的要求,本文采用的梯度能量计算没有对整幅画面像素值进行计算,而是取了中间1/3区域的像素进行计算,这样计算量为整幅画面计算量的1/9。经过大量的实验验证,采取画面中心1/3区域计算完成的自动聚焦效果跟整幅画面计算的效果一致。
改进的掩模与中心区域选择示意见图5。
图5  在1/3中心窗格内选用3×5掩模示意图 Fig.5  Select 3×5 mask in 1/3 center pane
2.3  改进算法在FPGA 中的实现
FPGA 的PL 端使用FIFO 和寄存器实现掩模窗口9个数据的缓存。在PL 端的程序中需要完成①设计FIFO 读写控制信号的时序;②缓存3×5掩模的数据;
467
③计算单个像素点3×5掩模的方差和,输出该数据。  FPGA 内部对FIFO 读写控制示意图如图6所示。当第一行数据到来时,将其写入FIFO1中;当第二行数据到来时,将FIFO1中保存的第一行数据读出,写入FIFO2中,同时将第二行数据写入到FIFO2中;当第三行数据到来时,同时读出FIFO1和FIFO2中的数据,此时,第三行数据与FIFO1、FIFO2中保存的第一行和第二行数据一同进入其后的寄存器组REG1~REG9。REG1~REG9的数据分别代表3×3掩模内(x -2,y -1),(x ,y -1),(x +2,y -1),(x -2,y ),(x ,y ),(x +2,y ),(x -2,y +1),(x ,y +1),(x +2,y +1)9个点。
图6  利用FIFO 和寄存器缓存3×3掩模数据 Fig.6  Cache 3×3 mask data by FIFO and register
根据图6中的REG1~REG9寄存器中的9个数
制卡机据,FPGA 计算REG5中像素点与其余8个寄存器所对应的像素点灰度值的方差(公式(1))。由于改进算法只对中间1/3区域进行计算,因此程序设置列计数器和行计数器对一帧画面的行列进行计数,当列
计数器计数到241~480以及行计数器计数到193~384的范围内(此范围即对于720×576分辨率的画面,1/3中心区域像素点的范围)时,认为像素数据可以进行计算。对此范围内的所有像素点的方差值进行累加,最终得到32 bit 的梯度能量值(公式(2))。  按照前面介绍的理论,该32bit 数值越大表明图像越清晰,为后面实现调焦提供爬山依据。
3  改进型爬山算法在FPGA 中的实现
3.1  基于爬山算法的自动调焦  文献[7]中对爬山算法有比较详细的介绍。如图7所示,爬山算法的基本原理是不断逼近最大梯度能量值的一个过程,从图3自动聚焦流程图中可以看出,每一次调焦后图像都会发生变化,梯度能量也随之变化,在这个不断的变化过程中,到最大的梯度能量值,即为图像最清晰的时刻。这个最清晰画面对应的镜头位置即为聚焦位置。
从图7的示意中可以看出,聚焦过程共爬山8步。其中前3步一直处于“上山”过程,第4、5步处于“下山”过程,这时画面已经比之前第3步后变差,因此第6、7步又开始“回头爬山”。在第7步后已经过了山顶,因此改变步长,最终第8步爬到了“山
顶”,完成聚焦工作。
Focus Length
of the len of the len
图7
爬山算法示意 Fig.7  Hill climbing algorithm
实际工作中,爬山过程往往8次尝试之内可以完成,期间需要不断的调整步长来达到聚焦的目的。 3.2  爬山算法在红外镜头自动调焦中的改进与实现
图7所示为白光画面下爬山的实现,相对来说是比较理想的一个过程。对于存在比较大噪声的红外图像来说,爬山过程中会出现多个“山顶”的情况,如图8所示。
Focus Length
of the len of the len
图8  红外图像聚焦的爬山示意 Fig.8  Hill climbing of infrared image focusing
图8中的A 、B 和D 为“伪山顶”,是由红外图像中的噪声引起的。按照爬山的标准流程,从镜头初始位置开始爬山,很容易将A 初误判为山顶,这时就无法达到聚焦的目的。为此本文对红外图像自动聚焦的爬山算法做了如下优化处理。
1)FPGA 的PS 端接收PL 端传输的梯度能量值来判断是否爬山。为了减少噪声的影响,每接收3个值做一个平均值作为爬山的依据,即对一个固定画面计算三次梯度能量值取平均值,这样能够减少随机噪声对画面清晰度评判的影响。
2)对于是否“回头爬山”的判断机制,判定在当前的步长下,连续两次都为“下山”则开始回头。这种机制下,A 和B 这种比较小的山顶在第二次判定
468
过程中会出现梯度能量值反弹现象,这样即判断为是伪山顶,但是这种情况在真山顶C 处是不会出现的。
基于上述两条优化方案,本文基于FPGA 的PS 端实现自动聚焦的流程如图9所示。 4  功能实现与性能测试
4.1  聚焦效果
针对本文提出的自动聚焦技术,以及文献[2]和文献[4]提出的自动聚焦的方式分别作了复现和对比。如图10所示。
囊袋
图9  本文提出的改进爬山算法在FPGA PS 端实现流程 Fig.9  The improved hill climbing algorithm implemented on FPGA PS
(a) 可见光画面                              (b) 红外原始画面 (a) Visible light image                        (b) Infrared original image

本文发布于:2024-09-22 10:21:45,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/2/213721.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:聚焦   自动   算法
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议