基于单片机的振镜扫描实时跟踪系统
2020-08-05朱新泽谭朗海曾亚光周月霞
李 泽,朱新泽,谭朗海,张 浩,曾亚光,周月霞
(佛山科学技术学院 自动化学院,广东 佛山 528200)
0 引言
光学相干层析成像(OCT)是近10年迅速发展起来的一种成像技术,能够对包括生物组织在内的强散射介质进行深度成像[1]。其成像基础在于振镜扫描,OCT系统通过控制振镜对物体进行扫描,从而得到物体的二维或三维结构图像。
为了获得更高质量的图像,通过采用STM32系列单片机精确控制振镜扫描,模板匹配算法实时匹配目标图像,实现良好的控制效果,完成对物体的实时扫描成像。
1 振镜扫描跟踪系统结构
振镜扫描跟踪系统由上位机、单片机控制电路、振镜扫描系统、工业相机组成,其结构示意图如图1所示。系统启动后,一方面上位机通过与单片机控制电路的串口通信方式,对单片机下达指令输出不同扫描信号,控制振镜偏转,同时光束在经过准直镜准直平行后,进入振镜被反射偏转,在半反半透镜表面上再一次被反射后,实现对目标不同方式的扫描;另一方面,上位机实时接收工业相机拍摄到的目标图像,通过目标跟踪算法,获得目标的位置信息后,通过单片机控制电路对扫描信号加入相应的偏置电压,实现对运动目标的跟踪扫描。
图1 振镜扫描控制系统结构图Fig.1 Structure diagram of galvanometer scanning control system
图3 正弦波信号Fig.3 Sine wave signal
2 单片机控制程序与PWM DAC电路设计
2.1 单片机控制信号程序设计
STM32F4系列单片机具有片上DAC外设,它的分辨率可配置为8位或12位的数字输入信号[5],具有两个DAC输出通道,这两个通道互不影响,每个通道都可以使用DMA功能,都具有出错检测能力,可外部触发。
图2 信号产生程序框图Fig.2 Block diagram of signal generation
图4 余弦波信号Fig.4 Cosine wave signal
对于正弦波、余弦波、阶梯波和三角波信号,利用STM32的DAC、定时器、DMA(直接存储器访问),编程实现定时器定时触发DAC,对通过DMA高速传输的信号数据进行数模转换,在对应I/O口输出频率可控信号。程序框图如图2所示。
信号波形如图3~图6所示。
对于PWM信号,利用STM32的定时器,通过程序改变自动重装载值(ARR)、时钟预分频系数(PSC)和比较寄存器(CCRx)中的值来改变PWM信号的频率与占空比,在对应I/O口输出频率和占空比可控信号。PWM信号如图7所示。
2.2 PWM DAC电路设计
如图8所示为PWM DAC的电路框图。
图5 阶梯波信号Fig.5 Ladder wave signal
图7 PWM信号Fig.7 PWM signal
其工作流程为,单片机输出的正极性PWM信号经过反相电路后产生负极性PWM信号,然后通过加法放大电路将单极性信号转换为双极性信号,再经低通滤波电路滤除PWM信号中的谐波分量[7],得到所需要的模拟电压。当物体运动时,该模拟电压用于对信号的偏置,从而控制振镜对物体进行跟踪扫描。
整个电路主要采用双运算放大器LM358,该芯片内部包含有两个相互独立的、高增益的运算放大器,适合于电源电压范围很宽的单电源使用,也适用于双电源工作模式,并具有内部频率补偿功能。本文采用双电源供电工作模式,从而实现正负电压的输出[9]。
3 振镜扫描系统
3.1 振镜扫描原理
图9为二维振镜扫描原理图。振镜的机械部分是由X、Y两个振镜组成的振镜头,每个振镜电机轴上都安装了一个反射镜片,通过控制振镜电机,使得这两个反射镜相互配合偏转不同的角度,带动激光光束在扫描平面上偏转,进而扫描出物体完整的图形[10]。
图6 三角波信号Fig.6 Triangle wave signal
图8 PWM DAC电路框图Fig.8 PWM DAC circuit block diagram
图9 二维振镜扫描原理图Fig.9 Schematic diagram of two-dimensional galvanometer scanning
3.2 振镜扫描跟踪系统结构的建立
3.2.1 光学系统
在振镜扫描系统中,必须在扫描平面上获得尽可能小的激光高功率密度的光斑。因此,通过使用扩束镜调节激光器发出的激光光束变为平行光束,然后通过聚焦透镜获得符合要求的激光高功率密度光斑。
图10 振镜扫描控制系统界面Fig.10 Galvanometer scanning control system interface
图11 串口通信程序流程图Fig.11 Serial port communication program flow chart
3.2.2 振镜头
振镜头由X、Y两轴上的反射镜、扫描电机和伺服电路两部分构成。反射镜安装在扫描电机的轴上,电机带动反射镜偏转;扫描电机不能旋转,只能有限角度地偏转,它内部集成了位置传感器实时测量扫描电机的偏转角度;伺服电路接收驱动器生成的模拟电压信号,控制扫描电机按要求偏转。
4 振镜扫描控制系统上位机设计
上位机控制程序主要是通过人机交互程序设置参数并输入字符、数字、字母等,形成相应的振镜扫描规划,得到相应扫描图形的数据。
4.1 界面设计
界面设计是利用Visual Studio 2015的MFC来实现的,MFC(Microsoft Foundation Class Library)基础类库提供了一种在Windows平台上编程的框架,该框架是一个编写高效更专业应用的强大工具,缩短了开发时间,增强了代码的可移植性,在不减少编程的自由和灵活性的情况下提供了更多的支持。
如图10所示,界面主要包含有串口通信参数设定模块、扫描信号设定模块、USB相机开启及数据反馈模块和其他功能模块。界面打开后,设置串口参数,实现与单片机的通信,然后发送物体扫描方式的数据,同时打开相机得到扫描后的物体图像,在物体运动时,偏置电压值实时发送给单片机,从而控制振镜偏转角度变化,实现目标跟踪扫描。
4.2 通信设计
串口是一种单片机间通信非常通用的设备端口,因其结构简单、适合远距离传输,而得到广泛应用。本文中上位机与单片机采用串口通信方式进行通信,实现数据传送与反馈[11]。
上位机串口通信模块程序包括串口初始化,Comm事件响应,串口数据发送和数据处理,其具体流程如图11所示。
在串口初始化中,设定串口号和通信协议中所需的波特率、校验位、数据位、停止位,通过发送控件触发Comm事件,将扫描控制信号数据按照一定规则发送给单片机,同时接收并处理单片机反馈回来的数据。
4.3 目标跟踪算法设计
本文采用基于特征的目标跟踪算法,适用于具有突出特征的目标图像。算法初始化时在选定的目标区域内提取特征点,跟踪过程中通过对前后两帧的特征点进行匹配,计算出目标的位置、尺度和旋转变化,进而实现对目标的跟踪。
针对基于特征的目标跟踪算法主要通过两个步骤来实现,分别是特征提取和特征匹配。
1)特征提取
特征提取是将图像的移动目标的特征点找到并有效地提取处理,属于特征识别范畴[12]。这些特征需要具有突出的代表性,不仅能够较好地区分目标和背景,还可以应对目标被部分遮挡或形状的变化。
图12 (a) 物体原始位置图像Fig.12 (a) Object original position image
2)特征匹配
特征匹配是在得到目标图像特征点的基础上,通过相似性判定准则,寻找到与目标特征点最相似的坐标,同时获取目标信息,标记目标位置进而实现目标的有效跟踪的过程[12]。
5 实验结果分析
为了验证该系统对物体实时跟踪扫描的实现效果,利用Sun Time FX30工业相机采集640×480大小的图像,以每秒60帧的速率进行采集,同时采用步进电机控制物体运动,在上位机窗口实时显示目标图像和扫描区域,结果如图 12(a)(b)(c)所示。
其中,图12(a)为物体原始位置图像,在原始图像中设定需要跟踪扫描的具有明显特征的区域,此时设定为红色方框区域;通过步进电机控制物体运动后,得到如图12(b)、图12(c)所示的运动时部分位置图像,振镜扫描区域时刻处于红色方框内。实验表明,该系统能够很好地控制振镜扫描,实现了对物体实时跟踪扫描成像。
图12 (b) 物体运动位置图像aFig.12 (b) Object moving position image a
图12 (c) 物体运动位置图像bFig.12 (c) Object moving position image b