【作 者】康明洪,严壮志,,徐宁远,朱泳
1 上海大学通信与信息工程学院,上海市,200072
2 上海大学生物医学工程研究所,上海市,200072
内窥镜在五官科(耳鼻咽喉)疾病诊疗过程中有广泛的应用。早期五官科诊疗器械包括耳镜、间接鼻咽镜、间接喉镜等,属于第一代产品,目前仍然是许多医院的常用基本设备;而为了满足更精准的诊疗需要,五官科诊疗领域出现了一些新器械和新设备,并逐渐出现了一些将这些器械和设备整合形成的综合诊疗台,是目前主要的五官科检查设备,属于第二代产品[1-3];随着技术的进步,市场上也出现了一些数字化高清五官科内窥镜综合诊疗工作站[4-6],可以提供高清五官科内窥镜视频,还可以实现临床病例的收集、统计、分析和存储,属于第三代产品。
目前国外仅有少数厂家生产耳鼻喉诊疗工作站,如荷兰Entermed高档耳鼻喉综合诊疗台、美国Medtronic耳鼻喉动力视频系统、德国Richard-Wolf公司数字高清(HD)摄像系统、德国ATMOS高档耳鼻喉综合诊疗台、韩国MEDSTAR耳鼻喉科综合诊疗台、韩国MEGA耳鼻喉科综合诊疗台等,这些设备一般都及其昂贵,而国内的类似产品比较少,导致五官科综合诊疗设备在国内医院的配置率比较低,不能满足现代五官科医疗的需求。
本文研发数字化高清五官科—头颈外科综合诊疗工作站配套的高清内窥镜视频图像系统,提供临床检查、诊断、诊疗和教学所需求的高清视频或图像采集、处理、显示、存储和传输等功能,并配合图文工作站进行工作。
本系统作为五官科综合诊疗工作站的基础和核心系统,是综合考虑五官科综合诊疗工作站的应用环境设计的。图1描述了一般的五官科患者就诊流程。
视频图像系统和图文工作站共同构成数字化高清五官科—头颈外科综合诊疗工作站,本文主要涉及视频图像系统的设计,提供高清内窥镜视频的采集、显示、存储、传输,和诸如冻结、白平衡、放大等多种临床所需的处理。通过中央处理器(CPU)和图形处理器(GPU)协同工作实现了高清内窥镜视频的实时处理。图2是视频图像系统的框架设计图。
图2 视频图像系统的框架设计图Fig.2 Architecture design of video image system
图2中手柄中的高清相机可输出1920×1080像素的全高清内窥镜视频,高清相机和高清视频采集卡构成视频采集单元;CPU和GPU构成视频处理单元;高清视频回放卡和高清医用监视器构成视频显示单元;手柄中的手柄键盘、脚踏板和键盘解码模块构成人机交互单元。此外,通过网络接口实现视频图像系统和图文工作站的交互。系统的数据流图如图3所示。
图3 视频图像系统的数据流图Fig.3 Data flow diagram of video image system
根据系统的框架设计图和数据流图,将视频图像系统划分为5个主要的功能模块,即相机控制模块、视频处理模块、视频显示和存储模块、人机交互模块、图文工作站交互接口模块。共有10个主要的处理功能,即冻结、白平衡、测光模式、亮度、对比度、放大、旋转、翻转、双屏显示和轮廓强调。
本节重点介绍上述5个功能模块的实现方法,主要包括硬件支持和软件设计。
控制相机可以实现高清视频的白平衡和亮度调节两个系统功能。视频图像系统通过串口控制高清相机。对于白平衡,主要是由于内窥镜光源“色温”的不同会导致内窥镜视频颜色失真,从而影响医生的观察,一般高色温的光源下拍摄的内窥镜视频偏蓝,低色温下则偏红。为了消除“色温”的影响,需要在内窥镜检查之前对相机进行白平衡调整。具体做法是将相机对准“标准白色卡纸”,然后按动手柄键盘上的白平衡键,高清相机会自动进行白平衡,在结束之前,高清相机需一直对准“标准白色卡纸”,直到高清医用监视器上显示的“标准白色卡纸”呈现正常的白色为止。
对于亮度调节,是通过调节相机的快门实现的。五官科内窥镜检查过程中一般使用的都是短焦距镜头,由于硬管镜前端和耳鼻咽喉内腔表面的距离比较近,一般监视器上显示的内窥镜视频亮度比较高,影响医生的观察和判断,需要通过调整相机的快门使得采集到的内窥镜视频亮度在合理范围之内。
视频处理提供医生内窥镜检查所需的多种实用功能。本系统使用NVIDIA CUDA架构的GPU协同CPU实现高清内窥镜视频的实时处理[7]。在10个系统功能中,除白平衡和亮度调节外,其余8个功能都是在本模块中实现的,其中冻结和测光在CPU中完成,其余6个在GPU中完成。此外GPU还设计有明度(以区别之前的亮度调节)处理,主要是完成测光功能。下面分三部分介绍,即冻结部分、GPU视频处理部分和测光部分。
图4 冻结程序设计流程图Fig.4 Software flow chart of freezing
(1)冻结部分 冻结在本系统中的定义是将冻结键按下瞬间的视频帧保存在“临时帧内存”,并以此帧进行后续处理。冻结时并不会将视频帧存储下来,医生根据诊断需要自行决定是否存储该视频帧,如需存储,则通过操作脚踏板完成。冻结的程序设计流程图如图4所示。
(2)GPU视频处理部分 该部分实现了高清内窥镜视频的多种并行处理,极大缩减了处理耗时,使得高清视频的实时处理成为了可能。图5显示了GPU处理的输入和输出。
图5 GPU处理的输入和输出Fig.5 Input and output of GPU process
从图5中可知,GPU视频处理有4个输入,即控制参数、视频帧、参考图和菜单图。控制参数决定了明度、对比度、放大、旋转、翻转、双屏显示和轮廓强调的处理方式,其中明度处理是测光处理的一部分,将在测光部分详细介绍。视频帧是YUV格式的,高清视频YUV(YCbCr)到RGB的转换公式如式(1)所示。
参考图系统默认是将最后一张存储的视频帧作为参考图,供医生对比观察使用,此外,参考图可通过图文工作站指定,将在图文工作站交互接口模块中详细介绍。菜单图是根据当前系统的控制状态绘制的,主要是为支持人机交互,将在人机交互模块中详细介绍。GPU视频处理输出两张视频帧,分别用于显示和存储,其中存储帧格式为RGB可以节省存储空间。
下面介绍上述7个GPU视频处理的算法设计。根据处理特点将它们分为两组,一组是调节像素值,包括明度、对比度和轮廓强调;一组调节像素坐标,包括放大、旋转、翻转和双屏显示。其中明度和对比度的处理公式如式(2)所示。
式中B代表明度调节参数,B越大则输出视频明度越强,C代表对比度调节参数,C越大则对比度越强。轮廓强调可以通过拉普拉斯锐化实现。对于像素坐标的处理,设变换前的像素坐标为(m0,n0),变换后的像素坐标为(m1,n1),那么放大、旋转和翻转的映射公式分别为式(3)~式(5)。
式中W和H分别代表视频的宽度和高度。z,q,h,v分别代表放大系数、旋转角度、水平翻转系数和垂直翻转系数,其中,翻转系数为0表示不翻转,为1表示翻转。将式(3)~式(5)三式合并,则放大、旋转和翻转前后的像素坐标映射关系为式(6)。
将放大、旋转和翻转的像素坐标映射关系综合考虑可以省去诸多中间的计算,软件实现更简单更高效。
(3)测光部分 测光模式分三种,即低位、默认和高位,医生根据肉眼观察选择不同的测光模式,若内窥镜视频亮度过高则选择低位模式,反之选择高位模式。医生选定测光模式后,系统对内窥镜视频的亮度水平进行“评估”,若较高则调低明度控制参数,反之则调高,从而实现内窥镜视频亮度的“自适应”调整。可以看出测光功能是亮度调节的补充,都是为了防止内窥镜视频中出现大范围的“高亮区域”。测光程序设计流程图如图6所示。
图6 测光程序设计流程图Fig.6 Software flow chart of metering
显示和存储是视频图像系统的基本功能。为了得到较好的显示效果,采用了色彩还原性好、性价比高的高清医用监视器。高清内窥镜视频的存储是本模块的重点,主要分存储视频和存储图像,作为临床资料用于科研和教学。相比内窥镜视频,内窥镜图像的临床应用相对比较多,因此,系统默认存储高清内窥镜图像。图像存储格式为JPEG,视频存储格式则为M-JPEG,两种格式都能在保证视频质量的情况下达到较大的压缩比。由于视频的存储相对复杂一些,下面重点介绍高清内窥镜视频的存储。
在存储视频时,一般会根据系统的性能设计一个视频“缓冲区”。本系统中“缓冲区”为内存空间中的一块静态内存空间,大小为1.2 GB,最多可缓存200张视频帧。分别建立视频采集线程和存储线程操作该“缓冲区”,其中采集线程用于将采集到的视频帧存入“缓冲区”,存储线程用于将“缓冲区”中的视频帧存入存储器。由于一般情况下采集线程比存储线程工作速度更快,需要协调两个线程的同步,并尽量减少“丢帧”。图7显示了采集线程和存储线程的两种工作状态。
图7中“入缓冲区”代表采集线程,“出缓冲区”代表存储线程。对于状态1,缓冲区有足够的空间,不会发生“丢帧”;对于状态2,当“入缓冲区”和“出缓冲区”的操作内存空间“重叠”时(图中虚箭头所指处)需要丢帧,否则会覆盖掉之前采集的但尚未存储的视频帧,从而发生错误,此时需要“丢帧”以保证视频的连续性。
本系统提供手柄控制键盘和脚踏板,供医生操作和使用。其中手柄键盘上有5个按键,为冻结键、白平衡键、模式键、上选键和下选键。其中模式键、上选键和下选键构成组合控制键,在手柄控制菜单的配合下工作,手柄控制菜单的设计如图8所示。
图7 视频“缓冲区”的工作状态Fig.7 Operating status of “video buffer”
图8 手柄控制菜单的设计Fig.8 Design of handle shank control menu
手柄控制菜单分普通菜单和高级菜单,系统默认菜单为普通菜单。模式键用于当前菜单各菜单项间的切换,上选键和下选键用于当前模式状态的调整,特别的,若当前选择的菜单项为复位时,上选键为当前菜单的复位,下选键用于普通菜单和高级菜单间的切换。此外脚踏板用于采集视频和图像,系统默认采集图像,通过“长按”模式键可以实现采集图像和采集视频间的切换。手柄控制键盘和脚踏板通过键盘解码模块连接到视频图像系统。
图文工作站交互接口主要是供图文工作站访问视频图像系统所用,以实现患者信息和数据的交互。图文工作站是数字化高清五官科—头颈外科综合诊疗工作站的另一个子系统,与本系统不同,主要是实现患者信息的登记、图文诊断报告的快速填写、存储或打印图文诊断报告等功能。
待检查患者首先在图文工作站登记信息,如姓名、年龄、检查号等。登记后可以将患者的姓名和ID发送给视频图像系统,此时就可以在视频图像系统端进行内窥镜检查,医生使用视频图像系统采集患者的高清内窥镜视频或图像,在检查过程中,助理医生可以及时将检查结果输入图文工作站,并从视频图像系统中获取采集到的高清内窥镜图像,以生成图文诊断报告。此外在图文工作站可以选择某位患者的高清内窥镜图像,并在视频图像系统中打开作为双屏显示时的参考图,这在患者复诊时特别有用,医生可以对诊疗前后效果有更好的判断。图文工作站访问视频图像系统中的视频和图像是通过FTP文件传输方式实现,图文工作站只需保存视频和图像才存储信息即可。
除上述视频和图像的交互外,都是通过控制指令实现的,指令格式设计为“ENT指令类型:指令长度:指令内容END”,其中ENT是指令头,END是指令尾,指令类型有PAT、OPEN、VIDEO、IMAGE四种,其中PAT指令包含了患者的姓名和ID信息,OPEN指令包含了待打开的图像的存储路径,VIDEO和IMAGE指令分别包含视频和图像的存储路径。
视频图像系统的测试效果,如图9所示。
图9 系统整体测试效果图Fig.9 Overall test result of the system
图9中左下角是一个小功率的光源,最后面的是视频图像系统主机,右手握住的是手柄,高清相机在手柄中,手柄上有控制键盘。监视器左上角显示的是待检查患者的姓名和ID,左下角显示的是手柄控制菜单,右上角显示的是存储模式,图像存储或视频存储,右小角显示的是当前日期和时间。图10是双屏显示效果图。
图10中监视器左半部分显示的是参考图,右半部分是实时图像,通过对比医生可以得到更准确的判断。特别地,在图文工作站的配合下可以将患者之前的内窥镜图像和当前检查所见的内窥镜图像进行对比,这对于复诊患者特别有用。
图10 双屏显示效果图Fig.10 Result of double screen display
本文研发的高清视频图像系统主要是作为五官科诊疗工作站的配套系统使用的,基本满足了第三代数字化高清五官科内窥镜诊疗工作站的设计要求。目前五官科诊疗工作站在国内医院的配置率还比较低,而国外的产品比较昂贵,国内的类似产品较少,所以五官科诊疗工作站具有良好的市场前景。此外本文设计的高清视频图像系统也可以应用到其他的内窥镜系统中。
[1]Kaplan MB,Ward DS,Berci G.A new video laryngoscope-an aid to intubation and teaching[J].J Clin Anesthes,2002,14(8): 620-626.
[2]Jones WS.Video otoscopy: bringing otoscopy out of the“black”box[J].Int J Pediatr Otorhinolaryngol,2006,70(11):1875-1883.
[3]Ye B,Wang L. A CMOS based image acquisition system for electronic endoscope[C].IEEE SOPO,2009:1-3.
[4]Tsunoda A,Hatanaka A,Tsunoda R,et al.A full digital,high definition video system (1080i)for laryngoscopy and stroboscopy[J].J Laryngol Otol,2008,122(01): 78-81.
[5]Strauss G,Bahrami N,Hofer M,et al.The HD-panoramic visualization system: a new visualization system for ENT surgery[J].Eur Arch Otorhinolaryngol,2009,266(9): 1475-1487.
[6]Aziz M,Brambrink A.The Storz C-MAC video laryngoscope:description of a new device,case report,and brief case series[J].J Clin Anesthes,2011,23(2): 149-152.
[7]Ono A,Kondo K,Inaba T,et al.A GPU-supported high-level programming language for image processing[C].IEEE SITIS,2011: 245-252.