作者:Hello,Panda 这一次,熊猫君分享一个内窥镜的技术实现方案。内窥镜的方案很多:主处理器有用专用 ASIC 的,比如日、台、韩的相机 ASIC ;有用专用 CPU 的,比如海思、瑞星微和君正等。熊猫君的这个是基于 Xilinx ZYNQ 的低成本方案。 纵观中低端的内窥镜用图像传感器,主要是以 OV 的为主,熊猫君接触和实现过的主要有 OV6946+OV426 、 OV6948+OV426 、 OV9734 、 OH02A1S (带近红外增强)、 OH0TA10+ 普通 ADC (这颗料据说是业界最小, 400 × 400 相素,封装尺寸只有 550 μ m*550 μ m )、 DH01A10 等等,接口有模拟的、 MIPI 和 LVDS ;另外还有就是艾迈斯的 NanEyeM , 320 × 320 相素,接口用的是内嵌码的 LVDS ,需要高速时钟过采样才能接收,比较麻烦。对 OV 的 Sensor 而言,模拟输出通过 ADC 采样后一般可以转为 LVDS 或 DVP 接口, MIPI 输出的因为分辨率和帧率都较低,速率不会太高( lane 速率< 800Mbps ),完全可以用 ZYNQ 加电阻网络来接收图像。 一、硬件方案 以下我们以 OV 的 DH01A10 为例来叙述, DH01A10 实际上算是 OV6946 的升级版本,同样是 400 × 400 相素的,区别是工艺更加先进:( 1 )近红外波段成像增强;( 2 )灵敏度高达 3600mV/lux-sec ( OV6946 只有 1000mV/lux-sec ,整整是 3.6 倍);( 3 )封装尺寸只有 550 μ m × 550 μ m , 1/36” (业界最小,差不多是 OV6946 的 1/4 ) ; ( 4 )输出接口驱动能力为 4 米,可用用 OV426 接收,也可用其它 ADC 方案来搭。因此,相较于 OV6946 而言, DH01A10 近红外成像,成像质量更高,驱动能力更强,不再有竖条纹状非均匀性现象。那么,对于一般的手术用或检查用台式机,系统的硬件框图如下图 1 所示。 图 1 基于 ZYNQ 的医疗内窥镜硬件框图 如上图 1 所示,医疗手持式或台机对体积和功耗没有较高的要求,接口要求比较丰富一些,比如可以通过千兆网和 USB 接口导出录制的视频和拍摄的照片,可以通过网络配置机器的参数,有按键和触摸屏可以操控机器,有 HDMI 可以接入到通用显示器等等。一般的,拍照存储为 JPEG 格式,视频存储为 mp4 或 avi 格式,存储在内部的大容量 eMMC 中。通常的,会将摄像头模组做成模块化可拆卸装置,作为一个耗材出现。 二、软件方案 在这个系统中, ZYNQ 实现了软硬件协同处理,软件方案图如下图 2 所示。在 PL 上,主要实现了 Sensor 驱动(图像采集和寄存器配置等)、 ISP 处理、 JPEG 视频编码以及 eDP 或 LVDS 屏的驱动。在 PS 上,上层框架基于 QT ,实现了产品 UI 、触摸屏、操控接口、视频的编解码、视频的录制、存储、预览和回放,照片的拍摄、保存和回看等功能,以及配置 FPGA 进行初始化、自动曝光和自动摆平和的配置工作。从器件性能上来说, ZYNQ-7000 系列的 ARM 是双核 Cortex-A9 , -2 速度的也最多只能跑到 766MHz ,因此优化这个系统使视频录制和显示达到实时性的要求,所需要做的工作量很大,也需要 linux 和 fpga 层面协同做很多的处理,可谓是将芯片的性能运用到了极致。即使这样, arm 端实现 h.264 编码也只能保证 400*400/30fps 的实时性,高于此规格的均由 FPGA 来进行 Motion JPEG 编码,最终封装为 AVI 视频保存。回放时解码相对简单, ARM 运算即可满足要求。本系统最高支持 1080P/30fps 的流处理。在 ISP 上,系统还需针对医疗及 sensor 做一些特殊的处理,比如大多数的 OV6946 而言有竖条纹,此时要做非均匀性校正算法,此类 senor 的动态范围普遍偏低,还需要做一些对比度拉升或锐化处理使之看起来更加的锐利一些,有些还会有针对性进行调色处理等等。 图 2 基于 ZYNQ 的内窥镜软件方案 总体来说,中低端的内窥镜前端设备不会涉及到专业的医疗软件自动成像分析,主要还是检查和手术过程中现场人工查看和分析这些影像。即使有自动软件分析的需求,这些一般是通过接口传输影像数据到 PC 端后另行专业软件处理。 更为高端的腹腔镜之类,方案有用海思的,也有用 ZYNQ UltraScale+ MPSoC 带 Codec 那款的,国外的头部的也有用高端 FPGA+ 高端的自有 ASIC 芯片的,总之整个技术难度要上一个很大的台阶。 另外,现在甚为流行的胶囊内窥镜,则走的另外一条低功耗的路子,传感器性能不一定高,要求无线传输图像,帧率可能是 1~2Hz ,也可能是触发式的,但是有一个极低功耗的要求和一个很小体积的要求,一般要求能够工作(休眠)数个小时。目前市面现有的产品也有采用低功耗 FPGA ( actel 的)加 MSP430 单片机的方案(熊猫君拆过研究过一两款现有产品,也动过折腾一款的念头)。 三、其他 在当前的形势下,熊猫君这边的中低端内窥镜方案主要还是集中在基于 ZYNQ-7010 、瑞星微 RV1126 这两个平台上,也有海思和 ZU4EV 的,但是这俩一个是拿到芯片不容易,一个是太贵了,代价太高了,风险也太高了,其他的总是差点啥,不是这里性能不够,就是那里接口少了。总之,希望其他国产能够崛起,实现一个小目标:达到海思 Hi3559 的水平。 熊猫君这边有成熟的基于 ZYNQ-7000 和 RV1126 的完整方案和整机,也欢迎感兴趣的朋友莅临现场指导。如果您需要,而我恰恰也有的话,我们或许就能愉快的合作一把呢。 今天的分享到这里就结束,欢迎大家加入熊猫君的 QQ 群或微信公众一起侃侃大山、吹吹水、讨论讨论技术问题,大家一起愉快的交个朋友吧,以下是 QQ 群和微信公众号的二维码,手机扫码即可添加。