基于ICE的分布式ECT/CT系统研究平台的软件设计
【摘要】 可扩展性差、可重用性低、局限使用一种编程语言开发、单机等是常见的ECT/CT软件的缺点。本文介绍一种基于Internet Communications Engine(ICE)的分布式ECT/CT仿真平台的软件设计和实现方法。这一基于ICE的软件设计使其具有高度的可扩展性与重用性、支持多编程语言开发和分布式部署的特点,很好地解决了常规平台的一些局限。分布式的高性能优势也优化了系统对计算机资源的利用,从而提高了系统算法的运算效率。
【关键词】 ECT; CT; ICE; 分布式; 多语言平台
Abstract: 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 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 up the computation of simulation and reconstruction for its distributed system design by its optimization in using computation resources. The internet?connected property of the system greatly improves its utilization.
Key words: ECT; CT; ICE; distributed system; muti?language support
1 引言
发射型断层成像技术,即ECT(Emission Computed Tomography),是一种日益受到重视的医学成像技术。而计算机断层成像技术,即CT (Computed Tomography)在临床医学上的应用是20世纪医疗技术进步的重要标志之一。ECT/CT相关的研究与应用离不开计算机的支持,尤其是ECT/CT系统设计和算法的研究更是离不开软件技术的支持。
通常用于ECT/CT研究的软件平台大多基于一种编程语言,如仅仅使用VC++编写,导致后续开发必须使用VC++开发,扩展性与灵活性都比较低。同时这些软件平台大多数为单机的程序,不支持应用,导致平台的利用率与效率大打折扣。随着ECT/CT系统研究深入地开展,对平台的性能要求越来越高,这种情况下常用的ECT/CT软件平台必将不能满足研究的需要。
1.1 ECT/CT系统研究平台简介
ECT/CT系统研究平台是一个通用的ECT/CT实验研究平台。平台的仿真模块提供对基本几何体(目前提供三种:长方体、圆柱体和椭球体)的模型编辑功能,通过这些几何体构造复杂的模型,如三维Shepp?Logan模型等。利用平台的模拟投影功能可以对多种扫描方式,如面阵探测器三维螺旋锥束扫描进行模拟和仿真计算,通过设置适当的参数完成对基本几何体模型的成像。由于实践过程中被成像物体的复杂性,平台同时需要提供网格化复杂物体在多种扫描方式下的模拟投影。
平台提供的开发工具可以使科研人员方便的使用VC++6.0、VC++8.0、Java等多种语言对平台进行扩展和模块添加。同时它对网络和分布式部署的支持,一方面可以使一个算法模块或系统同时被多个研究人员使用,另一方面也可以充分地利用科研资源,提高效率,减少运算时间。
1.2 ICE中间件与分布式系统介绍
ICE (Internet Communications Engine)是ZeroC公司提供的一款高性能的、面向对象的而且是开源的中间件。它提供一种适用于异种环境的面向对象中间件平台,即:客户端和服务器端可以使用不同的编程语言编写,同时也可以将两者运行在不同的操作系统和机器架构上,并且可以使用多种网络技术进行通信。
ICE目前支持的主流的编程语言,如:C++、Java、C#、Visual Basic、VC++、Python、PHP和Ruby等,支持常见的操作系统,如:Windows、Linux、Solaris、HP、MacOSX;同时除了支持TCP/IP、SSL、UDP等网络通信协议外,还支持定义自己的通信协议。ICE内建的安全机制(内置防火墙)也可以大大保证使用ICE分布式系统的安全性。
本文提出的基于ICE分布式的ECT/CT系统研究平台的软件设计,一方面大大降低平台扩展的门槛,使研究人员脱离出繁琐的编程语言门户限制,完全专注于算法和系统性能等研究。另一方面利用高性能分布式计算的优势,提高算法的运算速度,同时也减少了科研人员之间的重复开发,提高算法模块的可重用性,提高了科研效率。
2 研究平台的体系架构设计
我们采用面向对象编程中比较常见的MVC三层架构来设计仿真平台,三层架构包括:用户界面层、控制器层、模型算法层。
(1) 用户界面层:用户界面层也就是与用户交互的界面,对于ECT/CT系统研究平台来说,视图层一般来说是负责用户数据的采集、校验、初步处理和接受用户请求,并把相关数据传递给控制器层的相关方法,之后显示由模型层处理后的结果。用户界面层开发和维护比较简单,一般位于客户机端,也就是科研人员的电脑上。
(2) 控制器层:它可以理解为从用户接收请求, 将模型与视图匹配在一起,共同完成用户的请求。它就是一个分发器,选择什么样的模型,选择什么样的视图,可以完成什么样的用户请求。控制层并不做任何的数据处理。它只把用户的信息参数等传递给模型,告诉模型做什么,并把模型层的结果选择符合要求的视图返回给用户。一个模型可能对应多个视图,一个视图可能对应多个模型。该层一般也位于客户端。
(3) 模型层:就是模型算法所在层。对于ECT/CT系统研究平台来说,就是ECT/CT投影模拟算法、ECT/CT图像重建算法等模型算法所在层,它的处理过程相对于其他层是黑箱操作,即对于其他层来说,它只是接收相关的参数,输出相应的结果,具体的算法流程对其他层来说并不可见。这样做的好处显而易见:对于算法的改进和更新并不影响系统其他部分。最大程度上保证了平台的灵活性。这部分也是平台的核心部分。科研人员在研究过程中需扩展的图像重建算法等模块一般被加到此部分。
3 功能扩展原理
模块是由Slice语言(Specific Language for ICE)来定义的。Slice语言是一种纯粹的描述性语言,它描述的是接口和类型(不是实现),我们使用Slice来定义我们需要添加的模块,里面包含相应的接口和数据类型。
例如我们实现CT投影模拟的模块,定义CT投影模块如下:
module CT{
……
interface CTProjection{ //定义CT投影接口
void setUtil(CTUtil util);//传递辅助结构,CTUtil是CT投影的辅助结构,包//模拟CT投影数据的所需参数
bool Projection();//CT投影方法
};
};
我们使用Slice2Java和Slice2Cpp编译器编译生成对应于特定编程语言(java,c++)的编程框架,供科研人员将算法实现添加进入框架内。
在添加具体实现之后,我们可以通过类似下面的代码将其部署到服务器上:
……
Ice.ObjectAdapter adapter = communicator().createObjectAdapterWithEndpoints("CT_Adapter", "default ?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通信器
Ice.ObjectPrx base = ic.stringToProxy("CTProjection:default ?p 10000");//获得代理,通过标识:CTProjection
ProjectionPrx proj=ProjectionPrxHelper.checkedCast(base);//获得Projcetion接口
proj. setUtil(util);//设置辅助类
proj. Projection();//产生模拟投影
……
客户端与服务器端的通信由ICE保证实现,这个过程可以使用图2来表示:图2 添加模块过程示意图(虚线表示自动生成的文件)
4 研究平台的具体实现
在按照上述架构设计的基于ICE的ECT/CT实现中,研究平台主体框架使用Java语言编写,提供投影模型编辑、CT投影模拟仿真、ECT投影模拟仿真、二/三维图像重建等功能,并集成了针对C++、VC++6.0、VC++8.0的ICE扩展工具。
系统研究平台的界面如图3所示,左图为CT仿真投影的界面设计,右图为ECT仿真投影的界面设计。图4是一个仿真成像的结果示例。图3 研究平台使用界面
图4 平台模拟S?L头模型CT的投影结果(左)和胸腔模型ECT投影结果(右)
5 功能扩展举例
我们在实现平台扩展工具时充分利用Java语言的动态编译和动态加载接口,实现在客户端的自动化加载新添模块。科研人员通过扩展工具生成相关代码之后,平台客户端读取配置文件,将新增算法模块的相关信息自动注入控制器,从而保证科研人员无需对客户端进行开发即可直接使用新添模块。
利用该工具我们可以方便地添加模块到平台上,下面以添加模拟SPECT投影为例讲述扩展开发过程:
1) 在平台的二次开发界面上选择要使用的编程语言、要添加的模块名称(SPECT)、和接口名(Projection);
2) 点击生成按钮,二次开发工具在平台的secondev文件夹自动生成相关文件;
3) 继承SPECT类,实现相应接口的函数Projection (根据实际研究的方法或子方法);
4) 在服务器端实现部署供调用;
5) 客户端将会自动加载该模块。
由此可见,科研人员的工作量基本上可以100%放在实际研究的方法或子方法上,而节约了以往放在界面、接口、和其他相关算法整合等等的工作上,根据我们的经验,这部分工作可能占去很多科研人员50%甚至更多的时间。
6 结论
本文介绍了一个基于ICE的分布式ECT/CT系统研究开放平台的设计和实现方法。使用分布式的设计通过优化资源共享提高了各平台模块的运行效率和重用性,具体运行效率的实际提高情况依赖于可用机资源的多少。而使用ICE作为中间件,可以使科研人员脱离开放语言的限制,降低了扩展的门槛。与平台集成的辅助扩展工具也进一步解放了科研人员,省去了学习Slice语言与部署模块的步骤,从而使加快科研进程。平台充分结合了的安全性和多用户使用的方便性,为其发挥最大效用提供了可能。
【】
[1]Michi Henning, Mark Spruiell. Distributed Programming with ICE[M]. ZeroC, Inc. 2007?3.
[2]唐杰,高文焕,邢宇翔等. 通用CT算法研究实验平台的软件设计[J]. 核学与探测技术,2006,26(2):153-156.
[3]张志宏. ICE:挑战CORBA 的新的面向对象中间件平台[J]. 计算机, 2004(9):30-33.











