APP下载

胶囊内窥镜体外无线图像传输存储系统设计

2012-11-30平,黄

计算机工程与设计 2012年4期
关键词:枚举内窥镜胶囊

刘 平,黄 平

(华南理工大学 机械与汽车工程学院,广东 广州510640)

0 引 言

自1795年德国学者Bozzini用金导管制成直肠镜以来,经历了硬式内镜、软式内镜[1]、胃内照相机、纤维内镜及电子内镜等阶段。内窥镜的研究与发展,已经在医疗仪器中占据重要位置。消化道疾病困扰着全球无数患者,传统的电子内窥镜采用机械式插入方法,在检测的时候存在重大的缺陷[2]。小肠是消化道最长的器官,具有弯曲和游离的特点,普通设备只能达到小肠0.8~1m的地方,再住下会给病人造成极大的痛苦,许多患者因恐惧而放弃检查[3]。

随着微创、无创医学理念的普及,医疗 “人性化”被提升到了一定高度,口服式胶囊内窥镜作为新兴的消化道疾病诊断系统得到了飞速发展。目前,以色列、日本、韩国和中国等都在致力于这方面的研究。胶囊内窥镜是多种技术相结合的综合系统,它集微机电系统 (MEMS)、光电工程、无线通讯系统和生物医学等于一身,它包含无线图像传输、照明、磁场驱动等多个子系统[4]。病人检查时服下胶囊,胶囊借助消化道的蠕动在消化道内运动,对胃肠道进行拍摄取样,同时通过无线传输的方式将取样得到的图像传输至体外接收装置,为医生提供诊疗依据。

基于USB2.0高速接口,本系统从图像数据的实时传输入手,运用了DirectShow接口技术,通过VC++软件开发平台开发出用于图像处理的软件,将从胶囊内窥镜的无线发设模块发射出来的图像信息直接显示在电脑屏幕上,同时将图像信息直接存储在计算机硬盘上进行专门的处理。

1 系统设计及基本原理

整个系统的设计分为软件和硬件两大部分。硬件部分主要包括:基于OV6920的体内无线窥视胶囊[5]、调频接收器、天敏UV200视频采集棒、计算机。计算机终端软件利用自主开发的胶囊内窥镜图像处理软件。系统结构如图1所示。

图1 系统结构

检测时,被病人服下进入消化道的胶囊,利用内置的摄像头对消化道特定位置和非特定位置进行拍摄,胶囊内镜OV6920图像传感器将光信号转化成视频信号。视频信号与发射电路内部产生的高频载波进行调制,调制后的复合视频信号再通过缓冲放大送至交天线,转变成电磁波的形式向外发射[6]。调频接收器将无线电磁波信号还原为复合视频信号,复合视频信号通过UV200视频采集棒转变成计算机可以识别的信号之后,经过USB接口传给计算机。图像采集流程图如图2所示。

图2 图像采集流程

计算机接收到视频数据流之后,通过基于DirectShow的应用程序,将视频信号在显示器上进行显示,从而可以对胶囊内窥镜得到的视频图像进行实时监测,同时也可以将视频图像以AVI的格式进行存储,以供后需之用。对于存储在本地的AVI视频图像,可以运用基于VC的胶囊内窥镜图像处理软件进行相关处理。

2 图像采集及处理软件设计

软件设计是本系统的另一个重点,而软件设计的关键在于解决视频图像的采集。

Windows系统环境下有3种视频采集方式,分别是基于VFW的视频采集方式、基于DirectShow的视频采集方式和基于SDK软件开发包的视频采集方式。

VFW是由Microsoft公司1992年推出的基于Windows的视频软件工作平台,它提出了AVI文件标准,其中规定了视频和音频交错存放的格式。VFW为用户提供了一整套应用程序接口 (API),通过开发工具,用户可以完成视频采集、压缩、解压缩、回放和编辑程序[7]。但VFW处理效率低,采集质量差。

SDK[8]是由视频采集卡厂家所提供的用于开发视频监视系统的一组库函数,通过使用SDK库函数,用户可以无需了解视频压缩、视频回放、视频网络与视频存盘操作等技术,同样可以进行视频相关的程序开发。但SDK的缺点在于兼容性差,不同采集卡厂商提供的SDK通常没办法兼容,所以编写的程序无法移植并应用到新的操作环境当中。

DirectShow和DirectX同时发布,它是建立在Direct-Sound与DirectDraw组件基础之上的多媒体应用程序开发工具包。DirectShow对视频的捕捉、回放和音频视频采集等高性能求的多媒体的应用提供了强大支持。DirectShow作为完整的基于COM的应用程序,为其它符合COM组件接口的所有第三方开发的组件对象都能够提供相应的视频操作的支持[9]。DirectShow建立在组件对象的基础上,由许多组件模块组成,使用DirectShow能够简单、高速地对流媒体文件进行处理。因此通过对比以3种视频采集方法,DirectShow无疑更适合手于开发Windows系统环境下图像采集系统。

2.1 图像采集及处理软件功能

软件开发平台选用功能强大的Visual C++应用程序开发平台,Visual C++是C++语言的集成开发环境,同时它与Win32紧密相连,利用Visual C++开发平台可以完成各种应用程序的开发,从底层软件一直到客户端软件都可以通过应用Visual C++来完成开发。而且Visual C++调试功能的强大,为大型、复杂软件的开发提供了相当有效的排错手段。随着Visual C++软件版本的日渐升级,它的功能变得越来越强大,几乎延伸到了Windows应用的各个层面,Visual C++日渐成了Windows系统环境中最强大的应用程序[10]。

基于OV6920的无线内窥镜胶囊,设计的软件主要具有如下功能:

(1)对胶囊内窥镜的拍摄进行实时显示,并能将图像以AVI格式存放到硬盘上;

(2)软件支持多种格式视频、音频文件的读取,能够进行暂停、回放、慢速播放及快速播放;

(3)对于有疑点的图像,可以进行图片截取,支持多幅图片连续截取、同时预览,把有需要的图片以BMP的格式进行保存;

(4)能够对图片进行相关的图像处理,并添加相应的文字描述;

(5)实现打印功能。可以将图片和相关的文字描述,通过打印机打印出来。

具体软件运行流程图如图3所示。

图3 软件运行流程

2.2 DirectShow采集原理

DirectShow是作为一套基于COM的编程接口的开放性的应用框架,兼备与底层代码和高层应用程序打交道的功能。图4所示为DirectShow的系统框架图[11]。我们可以看到,其中最大的一块就是DirectShow系统[12],“流水线”是它的基本工作原理,通过Filter Graph Manager统一处理整个数据流处理过程。其中Ring0用户级应用层包括显卡、声卡、VFW采集设备、MPEG2硬件解码器、WDM采集设备等;而Ring3特权级别的应用层提供了统一规范的COM接口。通过这种分离底层硬件设备和高层应用程序的方式可以很方便地编程实现从设备获得多媒体的数据[13]。

图4 DirectShow的系统框架

DirectShow通过Filter[14]与各式各样的设备进行通信。Filter是一个COM组件,是完成DirectShow处理过程的基本单元[15]。按照功能划分,Filter主要可分成下面3种类型:

(1)Source filter(源过滤器):通常数据来源有网络、文件、摄相机等等,而源过滤器主要用于负责引入数据到过滤器图表中;

(2)Transform filter(交换过滤器):数据流的获取以及数据处理如:格式分离与合成、编码与解码、压缩与解压缩由交换过过滤器来完成和实现;

(3)Randering filter(提交过滤器):作为过滤器图表里的最后一级负责接收数据并把数据提交给显卡、声卡等外部设备。

3 图像采集及处理的实现

3.1 利用DirectX相关的API函数采集图像信息

(1)构建FilterGraph

本系统中,图5是Filter Graph[16]结构图。如图6所示是它的执行流程图。

(2)VC++开发平台实现源代码 (只给出主要代码)

// 用于创建filter graph组件

HRESULT hl;

//创建GraphBuilder接口

hl=CoCreateInstance(

CLSID_FilterGraph,//创建标识符

NULL,CLSCTX _ ALL,IID _IGraphBuilder,(LPVOID*)&m_pGraphl);

//创建CaptureGraphBuilder2接口

hl=CoCreateInstance(

CLSID_CaptureGraphBuilder2,//创建标识符

NULL,CLSCTX _ALL,IID _#ICaptureGraph-Builder2,(LPVOID*)&m_pCapturel);

//获得所需Video Window接口

hl=m _pGraphl->QueryInterface (IID _IVideoWindow,//指明需要查询的接口的IID

(LPVOID*)&m_pVW);

//获得所需MediaControl接口

hl=m _pGraphl->QueryInterface (IID _IMediaControl,//指明需要查询的接口的IID

(void**)&m_pMC);

//获得所需BasicVideo接口

hl=m _pGraphl->QueryInterface (IID_IBasicVideo,//指明需要查询的接口的IID

(void**)&mBasicVideo);

其中VideoWindow接口用于视频连接视频渲染窗口,MediaControl接口用于控制流媒体数据,如:播放、停止等。

创建好filter graph之后,还要创建设备枚举器filter用于USB视频信号的检测,实现如下:

CComPtr<ICreateDevEnum>pDeviceEnumLeo=NULL;

//创建所需设备枚举器

hl=CoCreateInstance (CLSID _SystemDeviceEnum,//创建标识符

NULL,CLSCTX _ALL,IID _ICreateDevEnum,(LPVOID*)&pDeviceEnumLeo);

CComPtr<IEnumMoniker>pClassEnumLeo=NULL;

//用于创建设备种类枚举器

hl = pDeviceEnumLeo-> CreateClassEnumerator(CLSID_VideoInputDeviceCategory,//创建标识符

&pClassEnumLeo,0);

在创建filter的过程中,如果创建失败,程序通过return hl进行返回,并具对话框报警。

程序运行过程中,Filter之间利用Sample数据结构传输数据,通过一些接口函数可以获得Sample数据,并获得数据的内在缓冲地址,对内存冲进行处理,转化成我们需要的AVI数据流,并进行保存。

3.2 AVI文件保存

设备种类枚举器根据不同种类的枚举器,例如,视频压缩、视频播放对每一个设备返回一个独立的名称 (moniker)。本系统视频压缩存储过程如下:

(1)创建枚举器组件,CLSID为DLSID_SystemE-num;

(2)利用ICreateDevEnumCreateClassEnuMerator可以获取某一种类的枚举器,该函数可以返回一个IEnumMoniker接口指针,成功时返回S_OK,反之返回S_FALSE。

(3)接着通过IEnumMoniker的Next方法,枚举所有的moniker,并且返回一个IMoniker接口指针。

pClassEnuml->Next (1, &pMoniker, &cFetched) =S_OK;

(4)相应的设备名称可以利用pMonike的BindToStorage方法获得。

pMoniker->BindToStorage (0,0,IID _IProperty-Bag,(LPVOID*)&pMyProp);

VARIANT varName;

varName.vt= VT_BSTR;

pMyProp->Read (L"FriendlyName",&varName,0;

(5)通过调用IMoniker::BindToObject函数生成绑定到设备上的filter。然后利用IFilterGraph::AddFilter将filter加入到Graph图中。

pMoniker-> BindToObject (0,0,IID _IBaseFilter,//绑定设备

(void**)&pCompressl);

m_pGraphl->AddFilter (pCompressl,L"com");

(6)设置AVI输出文件,本系统是将AVI以当前时间命名保存的,所以在设置AVI输出文件之前,应该先得到文件名。

//获取系统时间给ts

CString ts;

SYSTEMTIME t;

GetLocalTime (&t);

ts.Format("%.2d年%.2d月%.2d日%.2d%.2d%.2d 秒.avi",t.wYear,t.wMonth,t.wDay,t.wHour,t.Minute,t.wSecond);

得到文件名之后调用SetOuptFileName设置输出文件。

m _ pCapturel-> SetOutputFileName(&MEDIASUBTYPE _ Avi,ts.AllocSysString ( ),&pMyMux,NULL);

(7)最后连接压缩模块Filter将视频压缩存储。

m_pCapturel->RenderStream (&PIN_CATEGORY _CAPTUREL,//设置类型

&MEDIASUBTYPE_Video,//设置媒体类型pMySrcFilter,pCompressl,pMyMux);

3.3 软件运行结果

本系统硬件实物图如图7所示,其中,1为UV200视频采集棒;2为高频接收器;3为OV6920胶囊。

连接好硬件系统之后,便可以进行软件系统的图像采集。软件运行界面如图8所示。

如图8所示,1是一个静态图片框对象,用于视频预览;2是一个列表框,用于显示截取的图片;3是一组按扭控件,用于控制视频流的播放、暂停等。

点击 “摄像”按扭控件,会弹出视频采集对话框,此时便可以实现视频图像的实时监测,点击 “开始录像”按扭控件,视频流就会开始以AVI的格式保存到程序默认的件夹中,如图9所示。

图9 视频采集对话框

对于本地的视频文件,同样可以通过软件进行预览和截图,只要在运行软件开始的时候单击 “打开”按扭,找到想要打开的视频文件,单击确实就可以方便地进行播放,软件支持拖拽播放,可以直接将文件直接拖进软件界面进行播放。同时可以通过 “捕获”按扭进截图,而截取的图片将会依次显示在图像列表框中。如图10所示。

根据需要,可以将把截取的图片以BMP的格式进行保存。

图10 视频文件播放

4 结束语

本文通过系统地分析胶囊内窥镜图像信息由产生、传递到接收的原理和过程,设计了合理的硬件采集系统,整个硬件系统是以现有基于OV6920的体内无线窥视胶囊为基础而设计的。在软件设计方面,运用DirectShow采集原理,通过Visual C++应用程序开发平台上开发出基于DirectShow的图像采集及处理软件。通过最后的测试,整个系统成功实现了对视频图像的实时监测,可以将胶囊内窥镜所拍摄的图像显示到计算机上,并成功地将图像的信息和数据以AVI格式文件保存到计算机上。

[1]SHEN Jian.Research of capsule endoscope system [D].Nanjing:Nanjing University of Aeronautics and Astronautics,2006(in Chinese).[沈健.胶囊内窥镜系统的研究 [D].南京:南京航空航天大学,2006.]

[2]LIU Yan.Research and development of the image work station of the wireless endos-cope of alimentary canal[D].Chongqing:Chongqing University,2005 (in Chinese). [刘艳.消化道无线内窥镜之影像工作站的研究与开发 [D].重庆:重庆大学,2005.]

[3]ZHU Jing.The database research of wire-less endoscope system used in imaging workstation [J].Chinese Medical Information,2008,14 (10):10-14 (in Chinese).[朱婧.无线内窥镜系统的图像工作站的数据库研究 [J].中国医疗器械息,2008,14 (10):10-14.]

[4]CHEN Liang.Research on the wireless image transmission system of capsule endoscope[D].Nanjing:Nanjing University of Aeronautics and Astronautics,2007 (in Chinese). [陈亮.胶囊内窥镜无线图像传输系统研究 [D].南京:南京航空航天大学,2007.]

[5]LIU Jianqing,HUNAG Ping.Study on the design and experiment of wireless in body based on OV6920[J].Machinery Design & Manufacture,2010,6 (6):183-185 (in Chinese).[刘建青,黄平.基于OV6920体内无线窥视胶囊设计与实验研究 [J].机械设计与制造,2010,6 (6):183-185.]

[6]CHEN Yingjun.Design and experimental research about a capsule wireless endoscope controlled by magnetic flesh [D].Guangzhou:South China University of Technology,2007 (in Chinese).[陈英俊.磁控人体胶囊式无线内窥镜的设计与实验研究 [D].广州:华南理工大学,2007.]

[7]LI Keyi,LIU Zhifang,ZHU Huanjuan.Study of video and audio collection method based on VFW [J].Modern Agricultural Science and Technology,2010 (16):40-41 (in Chinese).[李可一,刘志芳,朱环娟.基于VFW的视、音频采集方法的研究 [J].现代农业科技,2010 (16):40-41.]

[8]CHEN Guojian,YOU Liang,ZHANG Jianhui,et al.Visual C++Bible[M].Beijing:Publishing House of House of Electronic Industry,2011:3(in Chinese).[陈国建,游梁,张建辉,等.Visual C++宝典 [M].北京:电子工业出版社,2011:3.]

[9]XIE Qubo,WANG Liusen,XIA Dingchun.The achieve of image acquisition based on DirectShow [J].Software Guide,2010,9 (6):183-84 (in Chinese). [谢屈波,王六森,夏定纯.基于DirectShow的图像采集的实现 [J].软件导刊,2010,9 (6):183-84.]

[10]PAN Aimin,WANG Guoyin.Inside visual C++ [M].Beijing:Tsinghua University Press,2009:3 (in Chinese). [潘爱民,王国印.Visual C++技术内幕 [M].北京:清华大学出版社,2009:3.]

[11]GUO Hao.Implementation of video capture based on Direct-Show technology [J].Fire Control Radar Technology,2008,37 (2):98-98 (in Chinese). [郭昊.基于 DirectShow 技术实现视频采集 [J].火控雷达技术,2008,37 (2):98-98.]

[12]ZHAO Dezhi,WU Jie,DING Qiulin.Real-time video capture and compression based on DirectShow [J].Computer Technology and D-velopment,2006,16 (1):187-189 (in Chinese).[赵德志,吴浩,丁秋林.基于DirectShow的实时视频信息采集与压缩 [J].计算机技术与发展,2006,16(1):187-189.]

[13]LIU Bo,WANG Jianhua,NI Peng.Video capture and transmission based on DirectShow [J].Natural Sciences Journal of Harbin Normal University,2009,25 (4):72-75 (in Chinese).[刘波,王建华,倪鹏.基于DirectShow的视频采集和传输 [J].哈尔滨师范大学自然科学学报,2009,25(4):72-75.]

[14]XIAO Changjian.Brief talk of capturing images from video streams by DirectShow technology [J].Computer Era,2009,27 (11):66-67 (in Chinese).[肖长健.浅谈 Direct-Show技术捕获视频流中帧图像 [J].计算机时代,2009,27(11):66-67.]

[15]ZHU Yihua,ZHOU Yanbo,WANG Xingxing,et al.Designing and implementing real-time video frame capturing based on DirectShow [J].Computer Application and Software,2011,28 (1):35-38 (in Chinese). [朱尹华,周沿波,王兴星,等.基于DirectShow视频帧实时捕捉的设计与实现 [J].计算机应用与软件,2011,28 (1):35-38.]

[16]TAN Yi,HUANG Huan,LIU Hui.Design and realization of a video compression system based on DirectShow[J].Computer and Figure Engineering,2006,34 (6):138-140 (in Chinese).[谭毅,黄欢,刘辉.基于DirectShow的视频压缩系统的设计与实现 [J].计算机与数字工程,2006,34(6):138-140.]

猜你喜欢

枚举内窥镜胶囊
Shugan Jieyu capsule (舒肝解郁胶囊) improve sleep and emotional disorder in coronavirus disease 2019 convalescence patients: a randomized,double-blind,placebo-controlled trial
一种具有附加内窥镜功能的医疗管
基于理解性教学的信息技术教学案例研究
电子内窥镜临床评价要求探讨
内窥镜技术研究进展
Shumian capsule(舒眠胶囊)improves symptoms of sleep mood disorder in convalescent patients of Corona Virus Disease 2019
一种高效的概率图上Top-K极大团枚举算法
基于太阳影子定位枚举法模型的研究
鼻内窥镜在分泌性中耳炎治疗中的作用
USB开发中易混淆的概念剖析