1、 基于 ICE 的分布式 ECT/CT 系统研究平台的软件设计【摘要】 可扩展性差、可重用性低、局限使用一种编程语言开发、单机等是常见的 ECT/CT 软件的缺点。本文介绍一种基于 Internet Communications Engine(ICE)的分布式 ECT/CT 仿真平台的软件设计和实现方法。这一基于 ICE 的软件设计使其具有高度的可扩展性与重用性、支持多编程语言开发和分布式部署的特点,很好地解决了常规平台的一些局限。分布式计算的高性能优势也优化了系统对计算机资源的利用,从而提高了系统算法的运算效率。 【关键词】 ECT; CT; ICE; 分布式; 多语言平台Abstract:
2、 Common disadvantages of ECT/CT simulation softwares include lack of expandability and reusability, supporting only one programming language, incapability to be connected to the Internet and so on. This work presents a design and realization of the distributed ECT/CT research platform which is based
3、 on the technology of Internet Communications Engine (ICE). The platform has great expandability as well as reusability, and it supports more than one programming language. Therefore, this platform offers a good solution for overcoming the limitations in general platforms. The platform also speeds u
4、p the computation of simulation and reconstruction for its distributed system design by its optimization in using computation resources. The internetconnected property of the system greatly improves its utilization.Key words: ECT; CT; ICE; distributed system; mutilanguage support1 引言发射型断层成像技术,即 ECT(
5、Emission Computed Tomography),是一种日益受到重视的医学成像技术。而计算机断层成像技术,即 CT (Computed Tomography)在临床医学上的应用是 20 世纪医疗技术进步的重要标志之一。ECT/CT 相关的研究与应用离不开计算机的支持,尤其是 ECT/CT 系统设计和算法的研究更是离不开软件技术的支持。通常用于 ECT/CT 研究的软件平台大多基于一种编程语言,如仅仅使用 VC+编写,导致后续开发必须使用 VC+开发,扩展性与灵活性都比较低。同时这些软件平台大多数为单机的程序,不支持网络应用,导致平台的利用率与效率大打折扣。随着 ECT/CT 系统研究
6、深入地开展,对平台的性能要求越来越高,这种情况下常用的ECT/CT 软件平台必将不能满足研究的需要。1.1 ECT/CT 系统研究平台简介ECT/CT 系统研究平台是一个通用的 ECT/CT 实验研究平台。平台的仿真模块提供对基本几何体(目前提供三种:长方体、圆柱体和椭球体)的模型编辑功能,通过这些几何体构造复杂的模型,如三维 SheppLogan 模型等。利用平台的模拟投影功能可以对多种扫描方式,如面阵探测器三维螺旋锥束扫描进行模拟和仿真计算,通过设置适当的参数完成对基本几何体模型的成像。由于实践过程中被成像物体的复杂性,平台同时需要提供网格化复杂物体在多种扫描方式下的模拟投影。平台提供的开
7、发工具可以使科研人员方便的使用VC+6.0、VC+8.0、Java 等多种语言对平台进行扩展和模块添加。同时它对网络和分布式部署的支持,一方面可以使一个算法模块或系统同时被多个研究人员使用,另一方面也可以充分地利用科研资源,提高效率,减少运算时间。1.2 ICE 中间件与分布式系统介绍ICE (Internet Communications Engine)是 ZeroC 公司提供的一款高性能的、面向对象的而且是开源的中间件。它提供一种适用于异种环境的面向对象中间件平台,即:客户端和服务器端可以使用不同的编程语言编写,同时也可以将两者运行在不同的操作系统和机器架构上,并且可以使用多种网络技术进行
8、通信。ICE 目前支持的主流的编程语言,如:C+、Java 、C#、Visual Basic、VC+、Python、PHP 和 Ruby 等,支持常见的操作系统,如:Windows、Linux 、Solaris、HP 、MacOSX;同时除了支持TCP/IP、SSL、UDP 等网络通信协议外,还支持定义自己的通信协议。ICE 内建的安全机制(内置防火墙)也可以大大保证使用 ICE分布式系统的安全性。本文提出的基于 ICE 分布式的 ECT/CT 系统研究平台的软件设计,一方面大大降低平台扩展的门槛,使研究人员脱离出繁琐的编程语言门户限制,完全专注于算法和系统性能等研究。另一方面利用高性能分布式
9、计算的优势,提高算法的运算速度,同时也减少了科研人员之间的重复开发,提高算法模块的可重用性,提高了科研效率。2 研究平台的体系架构设计我们采用面向对象编程中比较常见的 MVC 三层架构来设计仿真平台,三层架构包括:用户界面层、控制器层、模型算法层。(1) 用户界面层:用户界面层也就是与用户交互的界面,对于ECT/CT 系统研究平台来说,视图层一般来说是负责用户数据的采集、校验、初步处理和接受用户请求,并把相关数据传递给控制器层的相关方法,之后显示由模型层处理后的结果。用户界面层开发和维护比较简单,一般位于客户机端,也就是科研人员的电脑上。(2) 控制器层:它可以理解为从用户接收请求, 将模型与
10、视图匹配在一起,共同完成用户的请求。它就是一个分发器,选择什么样的模型,选择什么样的视图,可以完成什么样的用户请求。控制层并不做任何的数据处理。它只把用户的信息参数等传递给模型,告诉模型做什么,并把模型层的结果选择符合要求的视图返回给用户。一个模型可能对应多个视图,一个视图可能对应多个模型。该层一般也位于客户端。(3) 模型层:就是模型算法所在层。对于 ECT/CT 系统研究平台来说,就是 ECT/CT 投影模拟算法、 ECT/CT 图像重建算法等模型算法所在层,它的处理过程相对于其他层是黑箱操作,即对于其他层来说,它只是接收相关的参数,输出相应的结果,具体的算法流程对其他层来说并不可见。这样
11、做的好处显而易见:对于算法的改进和更新并不影响系统其他部分。最大程度上保证了平台的灵活性。这部分也是平台的核心部分。科研人员在研究过程中需扩展的图像重建算法等模块一般被加到此部分。3 功能扩展原理模块是由 Slice 语言(Specific Language for ICE)来定义的。Slice 语言是一种纯粹的描述性语言,它描述的是接口和类型(不是实现),我们使用 Slice 来定义我们需要添加的模块,里面包含相应的接口和数据类型。例如我们实现 CT 投影模拟的模块,定义 CT 投影模块如下:module CTinterface CTProjection / 定义 CT 投影接口void s
12、etUtil(CTUtil util);/传递辅助结构,CTUtil 是 CT 投影的辅助结构,包/模拟 CT 投影数据的所需参数bool Projection();/CT 投影方法;我们使用 Slice2Java 和 Slice2Cpp 编译器编译生成对应于特定编程语言(java,c+) 的编程框架,供科研人员将算法实现添加进入框架内。 在添加具体实现之后,我们可以通过类似下面的代码将其部署到服务器上:Ice.ObjectAdapter adapter = communicator().createObjectAdapterWithEndpoints(“CT_Adapter”, “defau
13、lt p 10000”);/ 创建通信代理Ice.Identity myID =adapter.getCommunicator().stringToIdentity(“CTProjection”);/生成模块的 id,客户端通过 id 来联系上对应的模块CTProjectionI pro=new CTProjectionI();/这是投影模拟的具体实现类adapter.activate();/将模块激活,添加到服务器,等待被调用在客户端在客户端,我们可以通过下面的代码调用上述接口:Ice.Communicator ic = Ice.Util.initialize(args);/初始化 ICE
14、通信器Ice.ObjectPrx base = ic.stringToProxy(“CTProjection:default p 10000”);/获得代理,通过标识:CTProjectionProjectionPrx proj=ProjectionPrxHelper.checkedCast(base);/获得Projcetion 接口proj. setUtil(util);/设置辅助类proj. Projection();/产生模拟投影客户端与服务器端的通信由 ICE 保证实现,这个过程可以使用图2 来表示:图 2 添加模块过程示意图(虚线表示自动生成的文件)4 研究平台的具体实现在按照上述
15、架构设计的基于 ICE 的 ECT/CT 实现中,研究平台主体框架使用 Java 语言编写,提供投影模型编辑、CT 投影模拟仿真、ECT 投影模拟仿真、二/三维图像重建等功能,并集成了针对C+、 VC+6.0、VC+8.0 的 ICE 扩展工具。系统研究平台的界面如图 3 所示,左图为 CT 仿真投影的界面设计,右图为 ECT 仿真投影的界面设计。图 4 是一个仿真成像的结果示例。图 3 研究平台使用界面图 4 平台模拟 SL 头模型 CT 的投影结果(左)和胸腔模型ECT 投影结果(右)5 功能扩展举例我们在实现平台扩展工具时充分利用 Java 语言的动态编译和动态加载接口,实现在客户端的自
16、动化加载新添模块。科研人员通过扩展工具生成相关代码之后,平台客户端读取配置文件,将新增算法模块的相关信息自动注入控制器,从而保证科研人员无需对客户端进行开发即可直接使用新添模块。利用该工具我们可以方便地添加模块到平台上,下面以添加模拟SPECT 投影为例讲述扩展开发过程:1) 在平台的二次开发界面上选择要使用的编程语言、要添加的模块名称(SPECT)、和接口名(Projection );2) 点击生成按钮,二次开发工具在平台的 secondev 文件夹自动生成相关文件;3) 继承 SPECT 类,实现相应接口的函数 Projection (根据实际研究的方法或子方法);4) 在服务器端实现部署
17、供调用;5) 客户端将会自动加载该模块。由此可见,科研人员的工作量基本上可以 100%放在实际研究的方法或子方法上,而节约了以往放在界面、接口、和其他相关算法整合等等的工作上,根据我们的经验,这部分工作可能占去很多科研人员 50%甚至更多的时间。6 结论本文介绍了一个基于 ICE 的分布式 ECT/CT 系统研究开放平台的设计和实现方法。使用分布式的设计通过优化资源共享提高了各平台模块的运行效率和重用性,具体运行效率的实际提高情况依赖于可用计算机资源的多少。而使用 ICE 作为中间件,可以使科研人员脱离开放语言的限制,降低了扩展的门槛。与平台集成的辅助扩展工具也进一步解放了科研人员,省去了学习 Slice 语言与部署模块的步骤,从而使加快科研进程。平台充分结合了网络的安全性和多用户使用的方便性,为其发挥最大效用提供了可能。【