1. 引言
微型内窥镜一般工作在操作空间较为狭小的受限环境中,广范应用于医疗、航天、半导体和安防等领域。在一些比如微创手术或者神经外科手术等场合,往往需要更为精确的立体视觉定位,而常见的内窥镜一般采用单个镜头,只能做平面成像,难以提供准确的三维信息。
本方案基于两片微型图像传感器和FPGA组成双目视觉方案,前端器械端通过柔性材料连接,具体体积小、使用灵活、成像质量高,以及可以手持等特点。
2. 系统总体设计方案
2.1. 系统介绍
FPGA是Field Programmable Gate Array的缩写,全称是现场可编程门阵列,是一种高度可配置的集成电路,允许用户在制造后通过硬件描述语言对其进行编程,以实现特定功能。FPGA具有并行处理能力、高吞吐量和低延迟的优势,广泛应用于信号处理、图像处理、工业控制等领域。
光学镜头采用OV6946芯片,此芯片是OmniVision公司面向医疗市场推出的小型成像元件[1],大小仅有0.9 × 0.9 mm,而图像分辨率可以达到400 × 400@30fps,并且片上集成ISP单元,可以实现BLC、AEC/AGC和MWB等图像处理算法。即使加上集成LED照明,在封装后可以做到大小1.2 mm左右的模组,这使得其很适合做内窥镜方向的应用。由于OV6946本身输出的图像是模拟信号,一般的使用需要配合OV426芯片桥接[2],才能输出DVP数字信号。
本方案集成两片OV6946芯片,其输出的模拟图像信号通过OV426转接,并通过DVP接口连接至FPGA,FPGA与电脑通过EZUSB FX3模块连接[3],以传输实时图像。
2.2. 技术特点
1) 体积小,适用于对空间要求极高的场合。
2) 双目组成的三维成像视觉方案,可以提供更好的立体视觉效果。
3) 利用FPGA的逻辑触发对两个图像传感器同步,可以实现两个Pixel以内的帧同步。这在立体成像同步上有一定的优势。
4) 无需复杂的双目视频算法,无需对镜头校准,使用3D头盔左右模式即可显示立体图像。
5) 两种硬件的形态,既支持连接至PC,通过PC外接头盔显示的传统方案,也支持直接输出至3D头盔的嵌入式方式。
3. 硬件实现方案
3.1. 机械结构
硬件上,本方案采用两组OV6946 + OV426芯片,两片OV6946加上LED照明组成前端的器件端,后端电路板集成FPGA和两片OV426芯片,前后端使用FPC软排线连接,可以保证器械的灵活性。PCB上使用FPGA采集原始BAYER格式的图像,并在内部集成ISP处理单元,处理后的两幅图像合成一幅左右模式的图,通过HDMI输出至显示器,配合3D头盔,可以实现3D成像的方案。并且,PCB上集成了EZUSB FX3模块,输出标准的UVC格式图像,可以连接到PC端,使用常见的软件比如VLC实时显示3D图像。
器械前端采用双OV6946的结构,两个模组并排地连接固定,在周围集成LED照明单元。两个模组输出的信号和LED照明电源同时经过FPC软排线连接到后面电路板。FPC的长度可以定制,能支持大约两米的长度,供常用的医学手术使用。
3.2. 电路结构
前端的两组镜头通过FPC软排线连接到后面的电路板。电路板上集成了FPGA,除此之外,还集成了两片DDR3 X16颗粒,组成32位DRAM。一颗HDMI芯片提供可选的HDMI输出,可以外接显示器。一颗EZUSB FX3芯片,可以连接USB3.0到PC。
整体电路结构图如图1所示:
Figure 1. Overall hardware architecture
图1. 整体硬件结构图
3.3. FPGA选型与简介
FPGA采用AMD公司的产品XC7Z020CLG400-2,这是ZYNQ-7000系列的可编程片上系统(SoC),它集成了FPGA和双核ARM Cortex-A9处理器,适用于嵌入式计算、信号处理、工业自动化等高性能应用。其主要特点有:
1) FPGA + ARM处理器:片上集成了FPGA逻辑和ARM Cortex-A9,适用于嵌入式计算和硬件加速。
2) 高性能DSP计算:内置220个DSP计算单元,适用于信号处理、图像处理和AI加速。
3) 灵活的I/O设计:支持多种接口(USB、PCIe、UART、SPI、I2C、CAN、SDIO)。
4) 丰富存储选项:NOR/NAND Flash、SD/eMMC存储。
5) 低功耗设计:适用于嵌入式和电池供电系统。
3.4. 3D头盔显示模块
3D头盔显示主要通过一系列硬件和显示技术来呈现沉浸式的三维图像和交互体验。其核心原理是通过双眼视差三维成像,具体来说,3D头盔通常会配备两个显示屏(一个为每只眼睛提供图像)或者采用单一显示屏,通过光学分离技术(如镜头)让每只眼睛看到不同的图像。这种方法模仿了人类眼睛的视差效应:每只眼睛看到稍微不同的视角,通过大脑合成产生深度感知。
同时,当左右眼看到的图像稍有不同(基于摄像机的立体图像),大脑会将这些图像结合起来,产生三维的深度感知,从而获得身临其境的视觉体验。
在选型上,3D显示头盔只需要选用常见的可以通过HDMI从PC串联的设备即可。PC将显示的图像实时串流至头盔,同时还可以将平面的图像输出至外接的显示器,供人员查看。
将3D头盔打开左右的3D模式后,人眼靠近头盔,即可观察到三维图像。
4. FPGA实现方案
4.1. FPGA整体实现框架
FPGA系统框架如图2所示。所有模块都提供AXI4-Lite Slave接口,挂载到FPGA的AXI总线上,以便可以通过ZYNQ-7000芯片的ARM处理器在线读写内部寄存器,从而修改各模块配置。
整体的FPGA设计模块图如图2所示:
Figure 2. FPGA block diagram
图2. FPGA结构图
4.2. OV426控制模块
FPGA内部实现两个OV426模块,通过10位DVP接口分别与两个OV426模块连接,传输实时图像。模块内SCCB模块,用于初始化和在线修改CMOS的配置,比如白平衡、开窗大小等参数。系统异常通过中断引脚INT_o向ARM汇报。
需要说明的是,传统的相机同步方案一般是基于单片机和ASIC,为了实现帧同步,在上层软件处理的“软”同步方法,此方案缺点是无法保证原始图像的同步。而本方案基于FPGA,在两个OV426模块的外部分别增加了SYNC_i同步的逻辑,由外部统一出发,这可以在硬件的层面达到了原始图像的“硬”同步。实验结果表明,本方案可以达到2个Pixel以内的帧同步。
OV426模块设计框图如图3所示:
Figure 3. OV426 block diagram
图3. OV426模块结构图
4.3. EZUSB FX3控制模块
上位机与FPGA的通信采用EZUSB FX3模块,其为英飞凌公司推出的灵活的USB控制器,提供5 Gbps的理论传输速率,实测速度大于260 Mbps。可以传输1080p@30Hz的视频。对于两组400 × 400@30fps的图像,实际带宽完全没问题。
FPGA内部实现EZUSB FX3模块,通过10位并口与EZUSB FX3模块连接,传输实时图像。模块内实现状态机、监测与管理数据传输模式、缓冲区满、数据有效等系统状态。
EZUSB FX3模块设计框图如图4所示:
Figure 4. EZUSB block diagram
图4. EZUSB模块结构图
5. 软件实现
5.1. EZUSB FX3固件的实现
EZ-USB FX3支持多种工作模式,以满足不同的应用需求。这些模式可以通过FX3的配置进行灵活切换,适应不同的硬件和数据传输需求。常见的工作模式包括:
1) 主机模式。FX3作为USB主机与外部USB设备进行通信。
2) 外设模式。FX3作为USB外设连接到上游USB主机。
3) 数据传输模式。支持USB 3.0模式,实现高带宽的设备应用,如高清视频采集和流式传输。
4) UVC (USB Video Class)外设模式。FX3充当USB视频设备,通过USB接口传输视频流。
5) GPIF (General Programmable Interface)模式。能够与外设进行高带宽、低延迟的数据传输。
6) 同步时钟模式。允许它在与其他外设同步时钟进行数据交换时进行精确的时序控制。
7) 异步传输模式。通过该模式与外设进行数据传输,适用于大多数基于流的传输应用。
在本应用下,通过修改FX3的固件,使其工作在数据传输模式下,EZUSB FX3做bulk实时数据采集,单次块传输大小为16 KB。
5.2. 上位机驱动实现
为了减少图像显示的延时,提高系统的实时性能,图像的采集、处理和显示采用多线程异步的架构,数据通过线程安全的环形队列ConcurrentQueue缓冲,采用生产–消费者模式,数据采集线程作为生产者,将采集到的图像放入缓冲队列,并工作在最高优先级,以保证帧的完整性,达到系统最大的可靠性。图像处理线程作为消费者,从缓冲队列读取图像帧,并处理后dispatch到GUI线程,这样可以保证用户界面的流畅性。
上位机软件与FPGA数据流遵循自定义的帧同步协议,保证每帧数据的完整有效性。
上位机软件的架构如图5所示:
Figure 5. Software architecture
图5. 软件架构图
5.3. 上位机图形界面
同时,基于上章节中介绍的驱动,在PC端开发基于QT的GUI用户应用程序,用于实时把两个图像传感器的实时图像在经过实时处理之后,分左右两端在显示器上全屏显示,并将原尺寸400 × 400的图像被分别压缩成两幅200 × 400的图像,并在左右两端显示。
实际的成像效果图如图6所示:
Figure 6. Realtime image picture
图6. 实时成像范图
6. 完成情况
截至投稿前,已完成所有的机械和软、硬件工作,并已应用于实际的模拟实验中。
图7展示3D内窥镜在模拟远程操作器械端时的实时成像系统。图中用红色部分标注了3D内窥镜本体部分和3D头盔。
Figure 7. Finished product picture
图7. 成品图
7. 未来展望
未来主要在以下几个方面考虑微型3D内窥镜在FPGA上的系统优化[4]-[6]。
7.1. FPGA集成图像处理
1) 立体匹配:FPGA可加速基于双目或多目立体视觉的深度计算,提高3D成像的实时性。
2) 图像去噪与增强:可在FPGA内部集成图像滤波器,以增强对比度,优化内窥图像质量。
7.2. 数据压缩
1) 实时数据压缩:使用FPGA加速JPEG、JPEG2000、H.264/265等压缩算法,减少数据带宽需求。
2) 高速接口支持:如MIPI、LVDS等接口的CMOS,提高内窥镜系统的数据传输速率。
7.3. AI与图像分析
目标检测与分割:基于FPGA实现神经网络(如CNN)加速,用于病变检测、组织分类等。