光学定位中近红外目标实时检测系统设计
2022-12-10邹嘉琪毕松林顾永刚
邹嘉琪, 毕松林, 顾永刚, 翟 超
(中国科学技术大学 工程科学学院,安徽 合肥 230027)
0 引 言
近红外(NIR)光学定位系统基于多目立体视觉理论对NIR波段发光目标进行三维空间定位,由于其非接触式测量和工作在独立红外波段的特性,在手术导航及工业测量等场景应用广泛[1]。对视场内NIR发光目标的检测是光学定位中的关键技术。随着成像技术的不断发展,图像的分辨率和成像速率逐渐提高,在要求高精度和高实时性的应用场景中,需要系统能够快速地处理大量的图像数据,完成特定目标的实时检测,对计算性能提出较高要求[2]。
Zynq系列可扩展处理平台是集成了ARM和现场可编程门阵列(field programmable gate array,FPGA)的片上系统(system on chip,SoC),其内部结构被划分成处理系统(processing system,PS)和可编程逻辑(programmable logic,PL)两部分,分别对应ARM处理器和FPGA。依靠软硬件协同设计,Zynq平台能够兼顾处理器系统的稳定性和可编程逻辑部分的灵活性,实现一系列复杂的快速图像处理应用,完成算法的硬件加速[3]。高层次综合(high level synthesis,HLS)方法是一种将高层次编程语言转换为满足设计约束的寄存器转换级(register transfer level,RTL)描述的工具,可以有效地缩短开发周期,方便复杂算法在硬件逻辑上的部署。
本文基于Zynq平台,采用软硬件协同设计及高层次综合方法设计了一种面向三目立体视觉光学定位应用的NIR目标实时检测系统,该系统应用于手术动态导航中,能够对手术器械上带有多个红外发光标记点的靶标进行高精度的检测追踪,同时满足实时性要求。
1 系统整体架构
系统架构总体划分为PS和PL两部分。其中,主控程序部署在PS,在Linux操作系统环境下完成整个视频传输过程的控制调度以及与上位机的通信功能;PL接收来自PS端的图像数据,进行一系列图像处理算法后提取出目标中心特征信息发送回PS部分。系统框架如图1所示。
图1 系统整体框架
系统由3台工业相机、Zynq板卡和上位机组成,实物如图2。3台工业相机拍摄的视频信号作为系统的前端输入保存在DDR4内存中,平台选用的处理器芯片型号为ZU3EG,其PS部分包含有四核ARM Cortex-A53处理单元,处理单元控制PL部分的Video DMA(VDMA)模块对内存中图像进行读取并传送到一系列图像处理模块中,对图像进行实时的预处理、校正、分割和目标灰度重心特征提取,控制器再将提取到的重心坐标存储到Block RAM存储单元中供PS端处理器读取。最后反馈信息通过以太网口传输到上位机进行后续处理。
图2 近红外目标检测系统实物
2 PS部分主控程序设计
平台的主控程序部署在PS端,主要负责图像数据的采集传输以及通信,根据上位机指令完成相关任务。
2.1 视频采集与VDMA驱动实现
根据立体视觉相关理论,定位的实现是通过多台相机在不同方向采集目标图像完成的[4]。本文系统视频信号通过同一水平面上3台互成一定角度的面阵工业相机获取,工业相机型号为Basler acA2000—165umNIR,相机镜头处加装NIR滤光片以获取清晰近红外图像。相机分辨率最高达到2 048像素×1 088像素,高速率的图像数据通过USB3接口进行传输。
工业相机的配置、控制以及图像数据的采集在嵌入式Linux系统环境下进行,其软件设计框图如图3所示。对相机的配置遵循GenlCam标准,该标准将相机的一系列属性翻译成C++的应用编程接口[5],例如传输层带宽的分配、外部触发模式和曝光时间等。
图3 PS部分主控程序流程
大部分光学定位系统,特别是在运动目标的实时定位过程中,多台相机间拍摄时间的不同步是造成定位误差的重要原因[6]。相机通过外部信号触发控制拍摄以消除不同步带来的定位误差,3路触发信号由同一时钟源生成以保证同步,从各相机I/O口输入控制曝光。
由于ARM处理器难以快速处理海量的二维图像数据,缓存后的图片数据需要传输到PL进行并行处理以满足实时性要求。通过PL端部署的VDMA IP核进行传输,VDMA模块将内存中的二维图像数据转换为AXI4-Stream接口类型的数据流,实现PL端可编程逻辑和DDR4内存之间的高速数据访问。
使用VDMA模块需要添加设备驱动程序进行控制。本文采用物理地址映射的方法,通过读写内存来实现对寄存器的控制,实现用户空间下对VDMA模块的控制。Linux系统中,/dev/mem文件对全物理内存进行了抽象,用系统调用函数mmap()将物理地址映射到用户空间中,就能直接在用户空间操作PL端于AXI总线上挂载的VDMA模块的寄存器,从而控制数据传输。这种非驱动控制的方式避免了用户空间与内核空间频繁的数据拷贝,提高了程序的运行性能[7]。
2.2 上位机通信
Zynq平台与上位机的通信依靠以太网口,在Linux环境下建立TCP连接,通信过程依赖Socket套接字,平台作为服务器,上位机作为客户端。完成Socket的初始化后建立网络连接,Zynq平台作为客户端向上位机发送请求,上位机接收到请求命令后向系统发送不同命令来控制系统的运行,如系统运行的开始和停止、一些相机关键参数的配置等。处理后的坐标数据也通过网口传输到上位机。
上位机运行用户界面程序,根据定位结果进行三维重建,并随着应用场景的不同而导入相应的三维模型进行实时显示。
3 PL图像算法设计
3.1 预处理与畸变校正
相机的成像过程中,由于镜头制造偏差,往往会引入畸变,导致原始图像的失真。另外,成像过程中不可避免地会引入高频脉冲噪声,同样影响图片的成像质量。对图片进行滤波和畸变的校正,能有效改善图片的失真和信噪比,提高检测的精度[8]。
图片的预处理及畸变校正算法采用高层次综合方法,通过Vivado HLS软件中,针对FPGA硬件优化的图像处理的库函数实现,库函数将C/C++实现的代码转为硬件电路描述语言并综合成硬件逻辑。算法采用多级流水线结构实现,以达到实时处理的效果。
视频流数据通过AXI4-Stream流式接口输入中值滤波模块,中值滤波是一种非线性滤波器,将N×N窗口内中心像素以邻域内像素灰度的中位数代替,能有效对图片进行平滑处理,滤除椒盐噪声。经过滤波后的视频流输入畸变校正模块,模块根据预先标定的各相机内参矩阵对输入图片逐像素进行校正,采用最近邻插值方法。
为了实现对红外目标的检测,需要对图像进行分割,将目标与背景区分开来。阈值法是图像分割中基本的方法,实现简单且性能稳定[9]。本文系统根据先验知识设定阈值,将灰度小于所设定阈值的像素视为背景像素,对图片进行全局的阈值分割。
3.2 灰度重心法提取中心
分割后每帧图片中仅剩下灰度高于阈值的目标像素,视场内的多个红外目标区域在图片上体现为多个独立的连通域,在采用灰度重心法提取中心之前需要对各连通域进行标记区分。不同于可以流水线式实现的图像滤波等算法,硬件上实现的连通域标记算法往往需要占据较多的时间和硬件资源,成为实时系统的瓶颈[10]。
由于红外目标在视场中的成像区域通常比较小,图片中大部分像素为背景像素,所以,本文基于红外图像成像特性和需求,设计了一种简化的快速连通域标记算法。
算法采用游程编码的思想对输入视频流数据同时进行标记和特征提取,对每一行中连续的目标像素进行游程编码,将视频数据流转换成携带特征信息的码流。每个编码所包含的信息如图4代码所示。
图4 用于描述特征的游程编码结构体定义
对码流进行分析,根据8邻域原则判断编码流是否连通,若连通则将位置及灰度信息进行合并,否则建立新连通域,算法流程如图5所示。
图5 灰度重心算法流程
当某个连通域没有新的编码能够进行合并时,该连通域建立完成,此时进行连通域中心的计算,并将结果写入到BRAM模块
(1)
式中I(x,y)为坐标(x,y)的像素点的灰度,S为目标连通域,(x0,y0)为计算得到的灰度中心坐标。当积累到足够连通域个数或标识帧结束的编码到来时,计算结束。
由于计算模块需要多个时钟周期进行特征合并运算,因此,在编码模块和计算模块之间插入先进先出(first-in first-out,FIFO)IP,作为缓冲,用于匹配模块之间的运算速度差异。基于红外目标成像的特点,由于目标像素个数占整幅图像比例较小,系统实时性能够得到保证。
系统包含3台工业相机,因此,上述预处理及灰度重心提取算法都需要部署3个实例,各实例并行运算,对同一时刻各台相机所拍摄图片进行同时处理。部署算法后的PL端可编程逻辑资源利用率如表1所示。
表1 PL资源占用率
4 实验与性能分析
基于本文所设计的NIR目标实时检测系统,针对种植牙手术场景中的机械手上固定的主动式红外靶标进行实时检测和后续的定位实验,测试系统的精度和稳定性,靶标上装有3个红外发光二极管作为发光标记点,标记点之间距离固定。在完成相机标定后,通过3台相机对靶标的拍摄,定位3个标记点位置并计算出靶标尖点位置坐标。实验所用靶标和其所成的像如图6所示。
图6 实验所用靶标实物及成像
系统以60帧/s的速率处理3台相机同步拍摄的2 048像素×1 088像素分辨率的近红外图片。标记点经过本文系统实时检测并确定位置后,根据本课题组先前对三目立体视觉匹配算法的研究工作[11],可以在上位机实时计算出靶标尖点的世界坐标位置,从而完成对靶标尖点的实时定位。
进行定位后的靶标实时显示在上位机界面,同时显示的还有导入的被作为测量物的模型作为参考系,系统上位机程序界面如图7所示。
图7 系统上位机程序界面
实验对系统的检测效果和定位精度进行了评估,采用标记点间相对偏差的标准差进行量化,在靶标平移及旋转的运动姿态下,统计视场为824 mm×437 mm,景深为540~1 380 mm范围内50张图片中3个标记点间距离的标准差,如表2所示。
表2 各标记点间精度结果 mm
5 结束语
本文研制了一种高精度的实时NIR目标检测系统,该系统能够应用于基于三目立体视觉的光学定位应用中。通过Zynq平台软硬件协同设计及高层次综合的方法,实现了实时的图像采集、预处理、阈值分割及特征提取等模块设计,传输和处理速率达到了60帧/s,最终对特定靶标尖点定位精度达到0.093 8 mm,能够满足手术导航场景中的高精度、高实时性要求,该系统也易于推广到其他光学定位应用场景中。