基于FPGA的应用于一体化摄像机的灰度差分自动聚焦算法设计

可编程逻辑

1362人已加入

描述

自动聚焦是一体化摄像机研究的关键技术之一,本文介绍了一体化摄像机光学镜头中变倍电机和聚焦电机的控制原理,实现了步进电机初始位置检测、变焦曲线的跟踪,为了适应不同物距变倍跟踪,本文实现了灰度差分自动聚焦算法,根据当前图像的聚焦函数值并采用爬山搜索策略实现了图像的自动聚焦。整个控制系统采用VHDL描述,自制了图像采集板,在Xilinx XUPV5-LX110T FPGA开发板上验证。

1 引言

一体化摄像机指内置光学镜头,具有变倍、自动聚焦功能的摄像机,其结构小巧、使用方便、监控范围广,已广泛应用在教学视频展台、视频监控等领域。变焦控制可实现图像的变倍、自动聚焦,是一体化摄像机中的关键技术之一。步进电机可将电脉冲信号转换成角位移,每接收一个脉冲信号就可驱动步进电机转动一个固定角度,实现物体的准确定位,通过控制脉冲的频率可控制电机转动的速度,步进电机已广泛应用于高精度控制系统中。一体化摄像机光学镜头中包含变倍步进电机与聚焦步进电机,变倍电机转动时,为使图像聚焦清晰,聚焦电机也应随之转动,具体转动步数与物距有关,具体参数可由镜头生产厂家提供的变焦跟踪曲线获得。为了适应不同物距的清晰成像,变倍跟踪结束后,还应进行自动聚焦,以显示清晰的图像。

2 步进电机工作原理

本文选用的光学镜头具有变倍和聚焦两个步进电机,光学变焦22倍,步距角18°,每步位移量0.02mm,转速600~800pps,采用2-2相驱动励磁方式,驱动脉冲变化如表1所示。

FPGA

表1 步进电机驱动脉冲

若驱动脉冲按1—》2—》3—》4—》1方向循环发出,则步进电机带动的镜片朝靠近图像传感器方向移动,反之朝远离图像传感器方向移动,从而可通过产生不同的驱动脉冲控制电机的转动步数及转动方向。

由于每次系统掉电时,步进电机的停止位置不固定,所以每次系统工作时,首先要进行步进电机位置的判断并驱动步进电机转到某一固定位置,如一倍放大位置。步进电机中用电机位置检测器来判断电机的位置,位置检测器电路如图1所示。其工作原理为,当电机驱动的检测器运动到发光二极管与光敏三极管之间时,阻挡二极管发出的光线,则三极管处于截止状态,输出信号为高电平;当检测器离开中间位置时,发光二极管使三极管导通,则输出信号为低电平。由于二极管和三极管位置固定,所以输出信号电平跳变位置是固定的。

FPGA

变倍电机向靠近传感器方向转动时,则图像放大,同时聚焦电机也应转动一定步数以得到清晰图像,变倍电机与聚焦电机对应的步数坐标称为变倍跟踪曲线,不同物距对应不同的变倍跟踪曲线。由于机械误差,同一型号的电机的变倍跟踪曲线稍有差异,为了适应不同电机需求,变倍放大后,聚焦电机根据变倍跟踪曲线对应转动一定步数后,再进行一次自动聚焦,便可得到清晰图像,同时也可适应不同物距需求。

3 系统设计

3.1 系统设计及工作原理

系统结构如图2所示,图像传感器将采集的视频图像输入到FPGA, FPGA输出变倍电机和聚焦电机驱动信号,并经H桥放大后输出到光学镜头,同时,光学镜头将变倍电机和聚焦电机的位置检测信号反馈输出到FPGA中,用以检测当前电机位置。

FPGA

系统上电后,FPGA判断光学镜头返回的变倍电机位置检测信号和聚焦电机返回的检测信号,若检测信号为低电平则驱动电机向靠近图像传感器方向转动,直至检测信号为高电平,在电平跳变处停止,同理,若检测信号为高电平,则驱动电机向远离传感器方向转动,直至检测信号为低电平,在电平跳变处停止,以上则完成对电机的初始化。初始化结束后,则驱动电机转动到一固定放大倍数位置。电机变倍时,变倍电机转动一定步数,同时驱动聚焦电机转动对应步数,具体步数可根据变倍跟踪曲线获得,变倍结束后,FPGA计算当前场图像的高频分量,判断当前图像的清晰度,并采用爬山搜索策略驱动聚焦电机,以实现图像的自动聚焦,从而可保证每次变倍结束后得到清晰的图像。

3.2 FPGA内部功能实现

根据现代EDA设计采用的“自顶向下”的设计方法,系统功能分为以下功能模块:电机初始化、变倍跟踪、搜索、自动聚焦算法、系统控制、电机驱动等,如图3所示,下面将详细介绍各模块的实现方法。

FPGA

3.2.1电机初始化

该模块功能是实现电机初始位置的判断,并驱动电机转动到某一固定位置。系统上电后,根据电机位置检测器返回的状态信号判断当前电机的运动位置,若返回低电平则驱动电机向图像传感器方向移动,直至检测信号为高电平,在检测信号跳变时,停止电机转动;若检测信号为高电平,则驱动电机向远离传感器方向移动,直至检测信号为低电平,在检测信号跳变时,停止电机转动,由于检测信号跳变位置是固定的,所以系统上电后可驱动电机转动到预设置的固定位置。

3.2.2变倍跟踪

该模块实现变倍电机的驱动,并根据变倍跟踪曲线确定聚焦电机对应的转动步数。根据变倍跟踪曲线,将变倍电机转动范围平均分成40段,由计数器1-40表示当前电机位置,当变倍电机由k转动到(k+1)时,则变倍电机朝传感器方向转动Z(k+1)-Z(k)步长,若F(k+1)》=F(k),则聚焦电机朝传感器方向转动F(k+1)-F(k)步长,若F(k+1),则聚焦电机向远离传感器方向转动F(k)-F(k+1)步长,其中Z(k),F(k)、分别表示k点对应的变倍电机和聚焦电机在变倍跟踪曲线上的坐标;当变倍电机由k转动到k-1时,则变倍电机朝远离传感器方向转动Z(k)-Z(k-1)步长,若F(k-1)《=F(k),则聚焦电机朝远离传感器方向转动F(k)-F(k-1)步长,若F(k-1)》F(k),则聚焦电机朝传感器方向转动F(k-1)-F(k)步长。

3.2.3自动聚焦算法实现

本文采用灰度差分法计算图像的聚焦评价函数,算法描述为:

其中,f(x,y)表示第x行,第y列像素的亮度值

该算法实现时,利用FPGA内的BlockRAM作为行缓存,缓存四行数据,实现内部功能模块如图4所示。

FPGA

读写控制模块控制四个行缓存中数据的读写,每场图像第一行数据写入到行缓存1,第二行数据写入到行缓存2,第三行数据写入到行缓存3,第四行数据写入到行缓存4,同时,将行缓存1、2、3中数据读出到算法实现模块,第五行数据写入到行缓存1,同时,将行缓存2、3、4中数据读出到算法实现模块,按此读写规律进行直至一场图像结束。算法实现模块接收从行缓存中读出的数据,并将每个行缓存读出的数据赋值给内部相连的三个寄存器,则第二行中间寄存器对应算法中的f(x,y)像素,根据聚焦评价函数值公式即可求出当前场的聚焦函数值,并将当前场图像的聚焦函数值与前一场图像的聚焦函数值相比较,如当前场图像的聚焦函数值大于前一场图像聚焦函数值,则输出比较信号为高电平,表示当前场比前一场图像清晰,反之输出低电平,表示当前场图像比前一场图像模糊。

3.2.4搜索实现

该模块根据自动聚焦算法模块输出的相邻两场图像聚焦函数值的比较结果,来控制聚焦电机的转动方向,当输出图像的聚焦函数值最大时停止转动,则实现图像的自动聚焦。

该模块具体实现过程为,变倍结束后,在图像场同步信号的消隐期间,使聚焦电机朝预定义的固定方向转动一步,在下一场图像场同步的下降沿采集自动聚焦算法模块输出的聚焦函数值比较结果信号,若该信号为高电平,则表示当前图像比前一场图像清晰,则电机转动方向正确,继续向该方向转动一步,同理,在下一场图像的场同步下降沿采集聚焦函数值比较结果信号,若为高电平,则继续向该方向转动,若为低电平,则向相反方向转动一步后停止电机转动,则自动聚焦结束;若第一次采集的聚焦函数值比较结果信号为低电平,则表明首次设定的转动方向错误,则向相反方向转动两步后,在下一场图像的场同步下降沿判断聚焦函数值比较结果信号,若为高电平,则继续沿该方向转动,若为低电平,则向相反方向转动一步后停止电机转动,则自动聚焦结束。

3.2.5系统控制实现

该模块主要对初始化模块、变倍跟踪模块、搜索模块输出的变倍电机和聚焦电机的驱动信号(包括转动方向、步数)进行选择输出,系统上电后,首先是初始化模块产生的驱动信号有效,初始化结束后,其它模块才可正常工作,图像变倍时,变倍跟踪模块输出的电机驱动信号有效,变倍结束后,搜索模块产生的电机驱动信号有效。

3.2.6电机驱动模块

该模块根据系统控制模块输出的电机驱动信号(转向,步长)来产生对应的A+、A-、B+、B-电机驱动脉冲。该模块内部为模值为4的计数器,输入转向控制信号为高电平时,该计数器加法计数,转向为低电平时,计数器减法计数,根据输入的步长控制输出驱动脉冲的持续时间长度,计数器值对应不同的驱动脉冲信号,则可产生不同方向、不同步长的电机驱动脉冲。

4结论

由于FPGA的并行处理特性,本文设计的变焦控制系统可同时控制变倍电机和聚焦电机,提高了变倍跟踪速度,论文采用的灰度差分算法对整场图像计算高频分量,能适应不同图像,较好地反映图像的离焦极性,提高自动聚焦准的确性。该设计在Xilinx XUPV5-LX110T FPGA开发板上实现,本文设计的变焦控制系统可应用于一体化摄像机的研发,具有很好的商业价值。

附图1:实验使用的22倍光学镜头

附图2:实验使用的开发平台

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分