硕士三维重建算法研究与软件系统实现毕业论文_第1页
硕士三维重建算法研究与软件系统实现毕业论文_第2页
硕士三维重建算法研究与软件系统实现毕业论文_第3页
硕士三维重建算法研究与软件系统实现毕业论文_第4页
硕士三维重建算法研究与软件系统实现毕业论文_第5页
已阅读5页,还剩62页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

.

.

67/67

目录

目录

1

第一章.绪论

3

1.1.医学影像系统PACS

3

1.1.1.PACS的应用围和功能

4

1.1.2.PACS在国外开发应用情况

5

1.1.3.PACS未来展望

5

1.1.4.DICOM标准

7

1.2.医学图像三维重建

9

1.2.1.三维重建数据流程

10

1.2.2.重建算法

12

1.2.3.三维模型的显示

13

1.3.本论文所作的工作与组织

13

第二章.医学断层图像三维重建算法

15

2.1.等值面抽取算法

15

2.1.1.MarchingCubes(MC)算法

16

2.1.2.DiscretizedMarchingCubes算法

20

2.1.3.MarchingTetrahedra算法和剖分立方体算法

23

2.1.4.轮廓拼接

24

2.2.直接体绘制算法

28

2.2.1.直接体绘制算法的分类

28

2.2.2.光线投射算法

28

2.2.3.体绘制加速算法

29

2.3.小结

30

第三章.三维重建软件My3d的实现

31

3.1.My3d和PACS的关系

31

3.2.DICOM网关

32

3.3.二维图像相关的软件设计

33

3.3.1.高分辨率图像的显示方法

33

3.3.2.简单图像处理

35

3.3.3.轮廓线编辑

37

3.4.三维模型渲染方法

38

3.4.1.OpenGL简介

38

3.4.2.渲染流程

42

3.5.程序类图

43

3.5.1.CSingleImageView:平面图像浏览窗口

44

3.5.2.CMultiImageView:多幅缩略图浏览窗口

45

3.5.3.CMy3dView:三维模型显示窗口

46

3.6.小结

46

第四章.设计模式在My3d中的应用

48

4.1.设计模式的基本要素

48

4.2.设计模式的组织与分类

49

4.3.怎样选择设计模式

50

4.4.设计模式使用实例

51

4.4.1.Command模式

51

4.4.2.Strategy

53

4.4.3.Singleton

55

4.4.4.Adaptor模式

56

4.5.小结

58

第五章.结束语

59

5.1.论文工作总结

59

5.2.未来工作展望

60

参考文献

61

64

读研期间发表的论文

65

绪论

﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡

医学影像系统PACS

三维重建软件框架简介

三维重建算法

三维模型显示技术

本论文所作的工作和组织

﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡

医学影像系统PACS

伦琴发现X射线后的一百多年里,医学成像科学与技术对放射诊断学的主要贡献是创造了多种成像方式,例如:CT、MRI、SPECT、PET、DSA、NM、US、CR等,这些新的医学成像技术为临床提供了丰富的影像学资料,极方便了医生的诊断,但与此同时所产生的大量的影像资料对医院的管理提出了更高的要求。传统的胶片备份,人工管理的方法不仅要耗费大量的资金、场地和人力,而且存在着丢失资料、查找困难、存储时间短等问题。显然这种方法已经远远不能满足医院迅速增长的业务要求,迫切需要一种自动化的影像管理系统来代替它,这已成为每一家医院面临的急迫需要解决的问题。

伴随着高速计算设备、网络通讯与图像处理技术的飞速发展而产生的“医学影像存取与传输系统[26][27]”(PictureArchivingandCommunicationSystem)为以上问题的彻底解决提供了一种先进的技术手段。据估算,在一家医院中放射成像(radiography,即将医学影像成像到传统的胶片上)的工作,其工作量通常占影像室工作量的60%至70%。PACS系统可以大大降低该工作量的比例,提高影像室的工作效率。PACS系统的使用不但为医院达到无胶片化环境(filmlessenvironment)提供了解决的方案,而且为今后进一步实现远程医疗、远程教学、远程学术交流和计算机辅助的医学影像诊断提供了支撑环境。

PACS系统受到了医院的广泛欢迎。PACS的最直接受益者是使用科室。第一,在硬成本方面,可以减少胶片用量,节省相机、洗片机药水。第二,在管理方面,智能化的诊断报告系统减少了医生的劳动强度,数据化存储减少了档案管理的麻烦。第三,完整保留图像数据,对于科研、教学和解决未来可能的法律纠纷是最好的保障。PACS对医院管理的益处也是多方面的。建立HIS(医院信息管理系统)系统是医院管理改革的必要步骤。在国外,做为HIS子系统的PACS,其影像的数据量达到HIS信息量的80%,超过其他信息的总和数倍。医疗影像的管理对于提高全院的管理效率是不可或缺的。PACS的影像管理也为远程诊断打下基础。大型医院的专家可以通过INTERNET浏览偏远地区医院送来的图像并作出会诊,偏远地区的医院也可以把图像轻松地送给指定的专家学者。数据传递缩短了时间和空间。这对于提高医院的医疗水平,缓解医疗资源不合理分配,有很大的帮助。

PACS的应用围和功能

PACS可以指任何一种放射医学图像管理系统。在实际应用中,可以把PACS应用划分为四类:①在整个医院实施的完整PACS系统,目标是支持在医院部所有关于图象的活动,集成了医疗设备、图象存储和分发、数字图象在重要诊断和会诊时的显示、图象归档已与外部信息系统;②在医院某个部分实施PACS,目标是提高部门医疗设备的使用效率;③在医院部的图象分发系统,目标是帮助医院的其他部门,特别是急诊室(ER)和监护房(ICU)获得放射医疗部分生成的图象;④远程放射医疗,目标是支持远程图象传输和显示。

根据医院的实际要求,一个实际的PACS系统可能包含了上述四类应用中的一类或多类。完整的PACS系统应该包括图象获取、图象存取与显示、图象处理、数据库管理以与用于传输的高速局域网络和支持远程数据传送的广域网。PACS系统一般具有以下几方面的功能:

⑴将医院中已有的医学图象设备产生的图象通过直接或间接的方式转换为系统能够存储和处理的数字化形式。随着DICOM标准的逐步应用,未来的医学影像设备将统一使用DICOM标准接口,图象获取会更加方便。

⑵存储和管理检查所产生的图象数据,这是PACS系统最重要的功能。由于PACS系统中存储的图象数据量特别巨大,医院每天生成的图像总量可以从几百M到几十个G,需要有能够管理超大规模数据库的数据库管理系统。当前尚无很成熟的产品,受存储器容量的限制,PACS系统的数据通常要分级存储,常用数据存放在再线2设备上,过期数据存放在离线设备中。为减少存储容量,还要对数据进行压缩。

⑶图象显示和处理,这是医生接触和使用最多的功能。在显示工作站上的软件应能满足医生最常用的功能,包括查询数据库中的图象记录,显示图象并且对图象进行一些简单的处理,如放缩、旋转等。同时,医生还要在工作站上写出诊断报告、注释等文本信息。

⑷与HIS/RIS的接口。PACS系统在医院中不是孤立存在的,为了与其他系统互连,PACS系统应当遵循一个信息交换的标准。目前国际上的HL7(HealthLevel7)标准已为多数厂商认可。

PACS在国外开发应用情况

PACS系统是一个涉与放射医学、影像医学、数字图像技术、计算机技术、通讯技术、软件工程、图形图像综合与后处理(三维重建、剖面显示)技术等多学科的高新科技项目,它的开发与应用将对放射医学、影像医学、现代医疗技术、远程医疗、远程科研教学的发展与医院信息化建设起重大作用。

PACS的出现才短短十几年时间,已成为国际医学图像界研究开发的热点。美国ACR(美国放射学全)与NEMA(国家电子制造商协会)共同组成的联合委员会于1993年11月发布了DICOM(医学数字影像与通讯)3.0标准,其中包括了一致性、信息目标定义、服务分类的技术指标、数据词典、信息交换、网络通讯、点对点通讯、文件格式等容。从而,为PACS的研究开发提供了统一规和依据。

目前,在美国和欧洲,数字化医学图像通讯技术己进入了高速发展的实用阶段,许多相关领域的著名厂家(医疗影像设备制造商、计算机制造商、影像设备外设与胶片生产厂家等)都积极参与了PACS的开发、生产和推广。在1994年的北美放射学会上,有近40个厂家展出了PACS技术和产品,而且,美国1994年PACS总销售额为3.98亿美元,1995年为4.73亿美元,1999年已达到10亿美元以上的规模。在美国,PACS已与国家级的通讯网络相结合,成为美国军队和许多大型医院提供影像诊断效率和节省成本的必备系统。在欧洲,PACS已与医院信息管理(HIS)相融合,形成日见扩展的医学信息网,且应用领域逐渐扩大。

在我国,PACS的研究开发尚处于起步阶段,与国外的PACS系统相比还有相当的距离;国一些医院正在考虑建设PACS,个别医院甚至已经在部分试验性地运行PACS,但至今还没有一家医院真正建立了完整的PACS,正有待于医院信息化建设的有识之士,在我国的PACS技术与应用领域开创出一片新天地。

PACS未来展望

目前,企业围图像分发已经在许多部分得到了初步应用。在放射医疗科以外最需要图像显示的部门中已经采用了足够的显示技术,但还不能在任何地点方便地获得图像。RIS和PACS的集成允许在工作站显示诊断报告。PACS和RIS掌握病人在医院中的流动也很重要。这有利于图像和检查的自动预取、路由和分发。RIS与PACS的进一步集成仍在发展中。随着PACS的增长,数据库的高可用性将变得越来越关键。PACS系统的发展向以下一些技术提出了挑战:大容量存储设备、数据库技术、用户界面、压缩和网络。

大容量存储设备分为以下四类:磁介质、光介质、磁带与其它(如全息存储)让在发展中的介质。目前PACS使用的归档介质是DLT磁带或MOD可反复读写光盘,某些情况下也使用CDR(一次写光盘)。磁盘容量正在飞速增长,未来的方向是TB级桌面磁盘。2000年时价格下降到3美分/MB,在光学存储设备中,DVD是目前的热点,DVD目前可以作备份介质,但作为存储介质仍有不足之处,可擦写的DVD还不成熟,也没有统一的标准。磁带的新进展包括磁道记录、磁阻式磁头和允许随机访问的新型格式等。磁带的价格很有吸引力,但不能防潮,也不能接近磁场,对存放场所的要求比较严格。

数据库的性能、可靠性和容量与PACS系统的性能直接相关。PACS系统中图像的每一次流动都与数据库有关。但目前对PACS的数据库技术还需要有大量的研究工作。当PACS集成到HIS系统中时,其重要性将会进一步体现,随着用户对PACS的依赖性增强,数据库的高可用性技术将会越来越重要,分布式数据库将会得到广泛的应用。

在用户端,分析功能的增强和图象增强技术的集成非常重要,语音识别可以将自然语言转换为正文存储在系统中,对生成诊断报告的效率有很大的影响。基于组件的软件将会出现,软件工具(如三维显示应用)可以在应用程序和系统之间进行拖放操作,这是个人用户界面的新发展,用户界面和应用程序能根据需要分布。基于Web的显示方式是其中一例。Web技术和基于组件的软件将缓慢集成。

PACS需要告诉通信网络支持,尤其是在放射医疗部门部,而在临床监护时可以用低速网络。目前的发展方向之一是使用ATM,但ATM的功能还没有完全利用起来,特别是ATM传输活动影像以与影像与静止图像同传的能力。随着通信技术和Internet的发展,远程连接可以使用2M/s或更高的带宽,这将改变PACS的应用围,特别是在家庭领域的应用将会有较大的发展,在医院,将开发更高的带宽用于活动影像和其他信息的传输。

DICOM标准

DICOM是医学数字图象通讯标准(DigitalImagingandCommunicationinMedicine)的英文缩写,是在医学信息领域中有关医学图象的事实上的国际标准。它详细描述了医学图象的存储格式,与网络间图象传输的协议和消息的格式,使医学图象设备的制造厂商和用户可以在标准网络上实现设备互连,简化了各种类型的医学图象系统的开发和应用。目前,大部分知名的医学图象设备制造厂商都采用DICOM作为其通讯互连的标准。因此可以说,理解和实现DICOM标准是实现PACS系统的基础。

1.DICOM发展历史

医学图像设备之间需进行图象与其相关信息的交换,而图象与其相关信息的格式、传输句法与通讯协议等的不一致,将严重阻碍PACS的发展。为此,美国放射学会(AmericanCollegeofRadiology,ACR)和美国的全国电子厂商联合会(NationalElectricalManufacturersAssociation,NEMA)认识到急需建立一种标准,以规图象与其相关信息的交换。

因而,美国放射学大学(ACR)和国家电子制造商协会(NEMA)在1983年形成了一个联合委员会来发展标准,其目的是:推广数字图象信息的通讯,不分设备厂商;促进PACS的发展和扩展,PACS也可以与其他的医院信息系统接口;允许诊断信息数据基础的产生,这些数据可以自通地由广泛的不同的设备分布的查看。

1984年,JosephGitlin博士第一次组织了有关医学图象设备间接口标准的会议。随后,ACR和NEMA联合组成新的委员会,在参考了其他国际标准(CNETC251、JIRA、IEEE、HL7、ANSI)的基础上,着手开发一个医学数字图象通讯标准,其目的在于:提供与制造商无关的数字图象与其相关信息的通讯;便于发展PACS,利于PACS和HIS(RIS)接口;便于建立方便查询的诊断数据库。

1985年,DICOM标准的前身ACR-NEMA标准1.0版本(ACR-NEMAStandardsPublicationsNo.300-1985)推出,它定义了一个点对点的连接和数据交换协议:两台成像设备通过ACR-NEMA接口平面实现连接。在1.0版本推出以后,ACR-NEMA标准不断发展,并于1988年推出了2.0版本(ACR-NEMAStandardsPublicationsNo.300-1988),它包含了1.0版本与其修正版的全部容,并且新增加了支持显示设备的命令,引入了层次方法来标识图象,在描述图象时以增加数据元素(dataelements)的方式来增加图象特性。

总的来说,版本1.0和2.0定义了传输图象与其相关数据的硬件接口标准、一个最小软件命令集和一个统一的数据格式集。由于它们仅提供点对点的通讯模式,又缺乏网络层,只能通过网络接口单元(NIU)与网络连接,所以通讯速率较慢,不能利用网络技术的优势。因此,一些专家学者就纷纷对其进行测试,并撰文提出修改意见。ACR和NEMA也认识到这些版本的不足,于是在1993年又推出了功能强大的DICOM标准3.0。

2.DICOM信息模型

简单说,DICOM标准定义了医学图象与其相关信息的通讯、存储协议。与ACR-NEMA的1.0和2.0版本相比,它做了许多重大的改进,其中最重要的是基本设计的改变。ACR-NEMA的1.0和2.0版本是基于放射领域中不明确的信息模型,数据元素是根据设计者的经验进行分组,这样有可能造成传送的数据不完全,导致某些重要的东西没有传送。相反,DICOM是基于明确而详细的信息模型,这些模型叫E-R(entity-relationship)模型,它们描述了“事物”(如患者、图像、诊断报告等)怎样参与放射诊断以与它们是怎样相互关联的,因而也就使医疗设备制造厂家和用户能够更加清晰地理解DICOM中的数据结构。E-R模型是DICOM工作组根据调查PACS和HIS/RIS接口所得到的结论建立的,他们把放射科中的数据和操作模型化,并保证HIS/RIS与PACS之间的数据需要与操作协调。应用E-R模型可清楚的表达描述事物所需的数据元素之间的关系,DICOM标准中广泛应用了这种模型。

DICOM标准中的数据结构是基于E-R模型并结合面向对象的设计方法,对现实世界实体进行抽象分析开发出来的。面向对象的设计不仅提供描述信息的方法,而且提供描述对信息的操作方法。在面向对象的设计中,对对象的操作与对象紧密相关。DICOM应用了这些概念定义了许多如“存储图象”、“获得患者信息”等的服务(services),这些服务应用了操作(operation)或通知(notification)的结构。DICOM定义了一系列操作和通知,叫做DICOM消息服务元素(DICOMmessageserviceelements,DIMSE)。信息对象与这些服务的复合叫做服务-对象对(service-objectpair,SOP),一个信息对象可应用一系列服务并复合成为SOP类。SOP类代表了DICOM定义的基本功能单元。一个DICOM应用必须说明其遵从的SOP类以与其设备支持的角色,这样才有可能精确地定义一个DICOM功能子集,这个子集包括被交换消息的类型、消息中传输的数据和解释数据的句法。对一个特定的SOP类,DICOM兼容的设备可作为两种角色中的一种:服务类提供者(ServiceClassProvider,SCP),它提供SOP类的服务;服务类用户(ServiceClassUser,SCU),它使用SOP类的服务。根据SOP类和角色,DICOM定义了通讯的一些基本原则,如哪种设备应该请求建立连接,哪种设备应该接受建立连接的请求。

3.DICOM标准应用

DICOM标准属于医疗信息系统领域,它主要用于医学图象设备之间数字信息的交换。因为医学图象设备可能与其它医疗设备进行信息交换,所以DICOM标准的应用围有可能与医疗信息系统的其他领域重叠(DICOM标准没有具体规定其应用围)。

目前流行的PACS系统一般使用DICOM标准作为图象设备接口来获取患者图象。例如,CT、X光机、MR等图象设备的共享打印系统就可以应用DICOM标准作为各种图象设备和打印机的网络互连接口,在图象设备来自多个制造厂商的环境里,这就意味着避免了定制不同设备的接口,减少了连接不同设备的费用和麻烦,简化了系统服务。

DICOM标准还应用于将PACS连接到其他信息系统,特别是连接到RIS或HIS。PACS与HIS和RIS相连需要在两方面均采用相应的标准。DICOM标准通过各种管理服务类来简化PACS方面的问题,RIS和HIS也应该采用相应标准(如HL7)来简化其相应问题。这样就大大简化了两种系统互连的问题。

医学图像三维重建

利用光、声、电、磁等各种物理能的作用机制,配合化学染色剂或造影剂,再借助计算机软硬件技术,促使医学诊断可视化技术有了长足的进步,医学图像诊断装置日新月异。在这种背景下,可视化成了新的需要。可视化,顾名思义就是使原先不能直接反映在人们视觉中的事物或现象成为直观可见的。医学图像诊断装置的出现也正是医学诊断走向可视化的表现。科学计算可视化技术的立足点之一也是最具有代表性的正是医学三维数据场的可视化。可视化技术的发展,促进了医学领域中科研、教学以与临床诊断的巨大变化,其影响深远,同时也给计算机科学技术在医学领域中的应用开辟了广阔的空间。

如何将这些断层切片图像进行三维重建并在显示器上显示,已越来越受到人们的重视,这是因为三维医学图像能提供比二维切片图像更加丰富的信息,得到人体组织、器官逼真的立体显示,从而摆脱了以前那种凭借医生临床经验,在大脑中重建器官三维结构的人为局面,使他们从繁重的大脑重建过程中解脱出来。

三维医学图像重建在临床的应用主要有以下方面:

(1)能使人们从任意角度观察人体结构,并对人体部各个组织的相对位置关系有一个整体了解,从而正确诊断出病变围、位置与程度;

(2)在外科手术的计划和模拟中发挥很大作用,医生可以通过计算机模拟复杂的手术过程,给手术一个定量的描述,还可以比较不同的手术方案和结果,为拟定最佳手术方案提供依据,以提高手术质量,减少医疗事故;

(3)放射治疗计划的制定也是三维医学图像系统的一个重要应用领域,对每个具体病例可以由系统精确地确定出放射源的位置和方向,以使病灶得到足够的照射剂量而其它组织器官尽量减少照射量;

(4)三维医学图像系统还能模拟人体解剖,改进传统的医学解剖教学方式,使学生在计算机上完成模拟手术;

(5)三维医学图像对关节修复、假肢的设计与制作都有很大的意义。

医学院第二附属医院是一间现代化的大型综合性医院,它担任着医疗、科研、保健等重要任务,同时,作为医学院的附属医院,它在教学方面扮演着非常重要的角色。为了提高医生临床诊断的正确性、给医科学生提供直观的三维影像,医学院第二附属医院非常需要基于PACS数据来源的,具有完整功能和高效率的医学影像三维重建系统,以提高医疗、科研和教学质量。

三维重建数据流程

三维重建软件运行的过程如图1.1所示。来自各种医学设备如CT、MRI或者X光片等的原始数据,由于各种医学设备的差异,有的符合DICOM标准,有的不符合DICOM标准,但是通过PACS系统中的DICOM网关后,所有的数据都转换为符合DICOM标准。

三维重建软件系统解析DICOM数据获得待成像数据,并进行了去除噪音、标尺设定、坐标归一化等预处理。

对预处理后的数据,我们采用两种不同的方法来进行重建[2]:

第一种:通过三维表面模型重构算法得到由三角面片组成的三维表面模型。采用MarchingCubes算法进行三维表面重构。我们发现,重构得到的表面模型可以进行简化,从而使之更加适合三维交互显示。

第二种:通过对每一个断层图像进行分割[1],提取出轮廓线,同时允许用户对轮廓线进行编辑,之后从轮廓线得到三维模型。把多层轮廓线拼接成为三维模型,可以直接拼接轮廓,也可以从轮廓线恢复出三维数据场,然后对三维数据场使用MarchingCubes算法(操作方式如图1.2所示)

三维重建算法得到的三维模型,需要通过交互的方式显示出来。我们用鼠标去模拟手,允许对三位模型进行缩放,旋转,移动,调整距离等功能,以达到最佳观察效果。

重建算法

目前医学断层图像三维重建的方法[2]主要有两大类:一类是基于表面的方法,另一类是基于体数据的方法。

(1).表面表示方法。它是表示三维物体形状最基本的方法,可以提供三维物体形状的全面信息。其具体形式有两种:边界轮廓线表示和表面曲面表示。边界轮廓表示是比较早期使用的技术,不易获得具体生动的形象,所以我们只考虑表面曲面表示方法。最早的方法是基于多边形技术,主要用平面轮廓的三角形算法,根据在不同切片图像上抽取出的一组轮廓线,用三角片拟合过这组轮廓线的曲面。Boissonnat提出了另外一种基于表面轮廓的Delaunay三角形方法[3],解决了系列表面轮廓的三维连通性问题。用三角形或多边形的小平面(或曲面)在相邻的边界轮廓线间填充形成物体的表面,所得出的只是分片光滑的表面,Lin采用从轮廓出发的B样条插值重建算法[4],得到了整体光滑的表面。Lorensen和Cline提出了一种称为“MarchingCube”的算法[5],这是一种基于体素的表面重建方法,该方法先确定一个表面阈值,计算每一体素的梯度值,并与表面阈值进行比较判断,找出那些含有表面的立方体,利用插值的方法求出这些表面。在MC的基础上又提出了“MarchingTetrahedra”方法[6],该方法提高了运算精度。为了化简MC或者MT算法生成的三角形面片[29][30],国外分别有不少研究。同时对消除MC和MT算法的二义性也出现了较好的解决方法[7]。

(2).基于体数据的方法[8]。它的最大特点是不需要确立表面的几何表示,而直接基于体数据进行显示,这样就避免了重建过程所造成的伪像痕迹,缩短了在体数据中寻找、计算物体表面的时间。这种方法不丢失细节,更加准确地反映出体数据所包含的形状结构,因此受到普遍关注。直接体绘制法首先要对原始数据进行分类,即确定每一体素中不同生物组织的百分比,一般采用概率分类方法,然后给每个体素赋予相应的颜色与阻光度(Opacity);最后采用投影法或光线投射法生成显示图象。该方法的缺点是运算量很大,不利于实时显示。

三维模型的显示

随着计算机图形技术特别是硬件图形设备的不断发展,三维表面在计算机中的表示逐渐趋向于三角面片网格模型这一单一方法。三角面片网格模型的优点在于:一、简单性,三角形是最简单的多边形,处理起来简单快捷,特别适合由硬件实现;二、通用性,任何其他平面多边形最终都能分割成三角形来处理,而曲面则可以由平片三角面片的集合来近似。当然,在三维物体的造型过程中,还有很多中表示方法,如NURBS、B样条等等,但目前最终的造型结果一般都表示成为三角面片网格。所以,计算机图形学界的各种表面化简算法也都是基于三角面片网格进行的。通过前一节中所述的表面重建算法得到的三维模型也是按照三角形面片的形式组织的。

OpenGL是独立于操作系统的、开放式的三维图形标准,用户可以方便地利用它创建出接近光线跟踪的高质量静止或动画的三维彩色图像。OpenGL实际上是一种图形与硬件的接口,它包括了100多个图形函数,可以利用这些函数建立三维模型和三维实时交互。与其他图形软件程序设计接口不同的是,OpenGL提供了接口定义非常清晰的图形函数。利用这些图形函数,用户可以非常方面的显示各种数据源。

三维重建软件系统的模型显示方法就是利用OpenGL来绘制的,同时使用OpenGL建立自己的视点,指定观察角度、方向与观察围的大小,进行放大、缩小等变换以与完成设定颜色、光源等功能。由于OpenGL的命令比较基础和琐碎,我们在编码的时候对它进行了封装。

本论文所作的工作与组织

本论文成功开发了“医学影像存取与传输系统”(PictureArchivingandCommunicationSystem,以下称PACS系统)中独立的子系统――医学影像三维重建软件My3d。它接受符合“数字医学影像传输标准3.0”(DigitalImagingandCommunicationsinMedicine3.0,以下称DICOM3.0)的数据作为输入,由用户选择待重建的器官组织后,就可以提供给用户易于观察和设置各种参数的三维影像。在软件实现过程中,我们构建了软件框架,选择了适合的技术路线,并解决了一些具体的问题,包括讨论来自PACS系统的DICOM格式的数据来源;在低分辨率显示器上显示高分辨率数据;设计代码结构进行轮廓线编辑;以与封装OpenGL使它更为方便有效的显示三维模型。

本论文在讨论常用的三维重建算法(包括表面重建和体重建)的基础上,对其中的部分算法进行改进。Lorensen和Cline两人提出MarchingCubes算法是在三维空间规则数据场中构造等值面的最有代表性的方法,它根据用户给出的所求等值面的值,逐个处理数据场中的体元,找出等值面经过的体元的位置,求出该体元等值面并计算出相关参数。本文对该方法提出了改进,将三维表面的重建和简化过程融为一体,在等值面的生成过程中就自适应的完成了面片合并,从而在损失精度很小的情况下获得了更适合交互显示的简化模型;多轮廓的拼接非常困难而且容易出错,本文提出了一种把轮廓线之间的形体重构问题转化成体数据中等值面构造问题的方法,解决了多轮廓线连接的困难。

程序的框架结构对于一个较复杂的软件而言十分重要,既关系到开发软件的成功与否,又关系到开发过程的工作量,以与程序运行质量和可重用性,因此在软件开发的过程中,我们强调了设计模式在系统中的应用。本文将讨论几个使用实例。

对上述的工作容,本文将按照如下方式进行组织:

本文第二章讨论医学断层图像三维重建算法。为了保证完整性,本文顺序讨论等值面抽取算法和直接体绘制算法。在等值面抽取算法中探讨了MarchingCubes(MC)算法、DiscretizedMarchingCubes算法、MarchingTetrahedra算法、剖分立方体算法和轮廓拼接方法。其中DiscretizedMarchingCubes算法是对MC算法的改进。多轮廓线拼接困难的解决方法则在轮廓拼接这一节中描述。第三章探讨三维重建软件的实现。将依次讨论:用DICOM网关来得到统一的数据来源;平面图形图像相关的设计;三维模型的显示方法。第四章用独立的章节讨论几个设计模式的使用实例。最后一章是工作总结和未来工作展望。

医学断层图像三维重建算法

﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡

等值面抽取算法:

MarchingCubes(MC)算法与其改进

MarchingTetrahedra算法和剖分立方体算法

轮廓拼接

直接体绘制算法

光线投射算法

﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡

对于分布在三维空间的体数据来说,有两类不同的可视化算法:

第一类算法称为等值面抽取算法,它首先由三维空间数据场构造出中间几何图元(如曲、平面)等,然后由传统的计算机图形学技术实现画面绘制。最常见的的中间几何图元是平面片,当我们需要从三维空间数据场抽取出等值面的时候就属于这种情况。可以抽取一个等值面,也可以抽取多个等值面。这种方法只是将原始数据的部分属性映射成平面或者曲面,因而它构造出的可视化图形不能反应整个原始数据场的全貌和细节。但是它可以产生比较清晰的等值面图像,而且可以利用现有的图形硬件实现绘制功能,是图像生成和变换的速度加快。因此,这是一类常用的可视化方法。

第二类算法并不构造中间几何图元,而是直接由三维数据场产生屏幕上的二维图像,称为体绘制(Volumerendering)算法或者直接体绘制算法(DirectVolumeRendering)算法。这种方法直接对待重建数据进行处理,可以产生三维数据场的整体图像,包括每一个细节,并具有图像质量高,便于并行处理等优点。它存在的主要问题是:计算量太大,难于利用传统的图像硬件加速绘制,因而计算时间较长,不适合交互显示。

等值面抽取算法

等值面抽取算法构造出来的可视化图形虽然不能反映整个原始数据场的全貌和细节,但是可以对感兴趣的等值面产生清晰的图像,而且可以利用现有的图形硬件实现绘制功能,速度较快,适合实时交互,因而得到了广泛的应用。

在三维空间规则数据场种构造等值面的方法很多,大概可以分为两类:

一类是轮廓拼接。它先将三维数据场从Z方向分解成若干层二维数据,然后从二维数据里面提取出轮廓线,最后把一系列的二维轮廓线拼接成三维模型。

另一类方法直接从三维数据场抽取出等值面,其中最有代表性的是MarchingCubes(MC)算法,是由W.E.Lorenson和H.E.Cline在1987年提出来的。这一方法原理简单,易于实现,目前已经得到了广泛的应用。属于这一类方法的还有离散MarchingCubes算法,MarchingTetrahedra算法和剖分立方体算法[9]。

MarchingCubes(MC)算法

MarchingCubes算法是一种应用很广泛的由体密度数据重构三维等值面的方法,于1987年由Lorensen和Cline两人提出。处理的对象一般是CT,或是MRI图像。数据点都位于网格点上,一般适用于灰度图,这样可以明确给出阈值。它的目的是从这样的体数据中抽取出三维结构的边界面,但它不是像二维中追踪等值线一样需要邻接关系,而是孤立的看待每一个体元,由体元八个顶点的数据值来得到在该立方体的边界面,以三角面片的形式来表示。

基本原理

图2.1数据场中的一个体元

离散的三维空间规则数据场的一个体元可以用图2.1表示。8个数据点位于该体元的8个定点上。对于一个体元(立方体)来说,给定等值面的阈值后,立方体的每个顶点要么在等值面外,要么在等值面。我们规定:

1)如立方体顶点的数据值≥等值面的值,则定义该顶点位于等值面之外,记为“0”;

2)如立方体顶点的数据值<等值面的值,则定义该顶点位于等值之,记为“1”。

顶点状态有2的8次方256种可能的情况。然而从拓扑的角度来看,经过反转和旋转变换之后只有15种不同的情况(如图2.2)。图中还显示了在该种拓扑状态下立方体的等值面的定性情况(以三角面片表示)。

确定体元状态之后,使用线性插值求出等值面和体元边界的交点,之后将这些交点连接成三角形,作为等值面的一部分。

为了利用图形硬件显示等值面图像,必须给出组成等值面的三角形面片的法向。MC算法采用中心差分求体元各角点处的梯度,然后在体元边界上再次采用线性插值求交点的梯度,也就是各三角形顶点的法向。为了消除三角面片之间明暗度不连续变化,三角面片采用Gourand模型绘制。

总之,MC算法的流程如下:

将三维离散规则数据场分层读入存;

扫描两层数据,逐个构造体元,每个体元8个顶点来自相邻的两层;

将体元每个交点的函数值和给定的等值面做比较,根据比较结果,构造该体元的状态表;

根据状态表,得出与等值面由交点的体元边界;

通过线性插值方法,计算出体元边界和等值面的交点;

利用中心差分方法,求出体元各个顶点处的法向,通过线性插值方法,求出三角形各个顶点处的法向;

根据三角形面片和各个顶点的坐标值和法向量绘制等值面图像。

存在问题:二义性

在MC算法中,在体元的一个面上,如果值为1的顶点和值为0的顶点分别位于对角线的两端,就会含有两种可能的连接方式,因而存在着二义性[10],如图2.3所示。这样的面称为二义性面,包含二义性面的体元称为具有二义性的体元。一个体元可能包含多个二义性面。

3.消除二义性:

MC方法的二义性问题如果不解决,将造成等值面连接上的错误。人们也提出了几种不同的判别和消除二义性的方法,其中以渐近线法最为常用。

一般情况下,等值面和体元边界所在平面的交线是双曲线。该双曲线的两支与其渐近线与体元的一个边界面的相互位置可以用图2.4来表示。在该图所列的四种状态中,当双曲线的两支均与某边界面相交时,就产生了连接方式的二义性。这时,双曲线的两支将边界面划分成3个区域。

双曲线的两条渐近线的交点坐标是:

当出现二义性时,需要计算f(X,Y,Zo)的值,如果f(X,Y,Zo)>Co,则渐近线的交点应该与函数值大于Co的对角点落在同一区域。如果f(X,Y,Zo)<Co,则渐近线的交点应该与函数值小于Co的对角点落在同一区域。这就是当出现二义性的时候,交点之间的连接规则。如图2.5所示。

在图2.2所列的全部15种情况中,第0,1,2,4,5,8,9,11,14这9种情况不存在二义性。第3,6两种情况各存在一个二义性面,因此各有两种连接方式。第10,12两种情况,各存在两个二义性面,因此各有四种谅解方式。第7种有3个二义性面,因而有8种连接方式。第13种情况有6个二义性面,因而有64种连接方式。以上各种情况加在一起,共有93种不同的连接方式。

DiscretizedMarchingCubes算法

离散MarchingCubes算法(简记为DiscMC)是C.Montani,R.Scateni和R.Scopigno在1994年提出的一种新型的MarchingCubes的改进算法[11],它将三维表面的重构和简化过程融为一体,在等值面的生成过程中就自适应的完成了面片合并。与其它简化算法相比,DiscMC具有算法效率高、简化比例高,损失精度小等优点。同时,DiscMC还采用了非常简捷的办法解决了经典MarchingCubes算法中的二义性问题。

经典MarchingCubes算法直接根据体元顶点的外状态构造出三角面片,这些三角面片的顶点是根据所在边的两个顶点的密度值通过插值计算得出。

DiscMC则把整个过程分成三步:

(1)扫描(Marching):首先,所有与等值面相交的体元被逐一扫描,根据其八个顶点的外状态按照规定好的方式生成三角面片。在这一步中,所有生成的三角面片只是用它所在体元的位置和其形态的编号进行记录,并不计算实际的顶点坐标值。也就是先假设所有的三角形面片的顶点只可能落在立方体体元边界的中点和体元中心点这13个地方,因而生成的三角形面片的形状是个数有限的。

(2)合并(Merging):三角面片生成后,将凡是位于同一平面并且相邻的三角面片合并,形成大的多边形,随后,大的多边形又被重新划分为三角形。

(3)插值(Interpolating):DiscMC的最后一个步骤是通过线性插值计算出最后所得的三角面片的顶点坐标,这一步和经典的MC算法是一样的。

离散MarchingCubes算法中“离散”的思想就是延后插值计算,之前生成的三角面片全部用离散值来表示,也就是说,三角面片所处平面的位置、方向,在所处体元中的位置、形态全部都是离散量,仅有有限数目的可能取值。

步骤一、扫描

根据以上的思想,在第一个步骤——扫描的过程中,所生成的三角面片的顶点在一个体元中只有13个可能位置(每条边的中点12个,外加体元中心点)。三角面片的可能平面方向也只有图2.6中列出的13种。当然,如果考虑平面的法向方向,则一共是26种。DiscMC也同时规定了在扫描这一步中所有可能产生的三角面片都是图2.6中的某一个。

在扫描过程中,三角面片生成后就马上根据其所处的平面方向和位置存储在一个两层的链表结构中。第一个层次存储26个不同的平面方向,每个元素指向另一个链表,该链表存储了这个方向上的一系列平行的平面。第二个层次上每一个元素均是一个链表,存储该平面上的已生成的三角面片,这样存储的三角面片只需用它在该平面上的位置信息记录即可,这样也便于后面合并过程的进行。

步骤二、合并

DiscMC的核心是三角面片合并这一步,合并的目的是将所有邻接且位于同一平面的三角面片合并成大的多边形,再将得到的多边形划分为尽可能大的凸多边形,最后再将得到的凸多边形划分成三角形。这样,合并过程又可以分为三个子步骤:(1)合并、(2)分割、(3)三角形划分。下面将以z=c平面为例描述这一过程。

(1)合并是将扫描步骤中产生的在同一平面又相邻的小三角面片合并,形成大的多边形,如图2.7所示。

在合并过程中,每一个在扫描过程中形成的统一平面上的三角面片被重新以“异或”模式写入一个二维数组,这样,这些三角面片就自然而然的“合并”了,数组中仅剩下合并后多边形的边界。另外,所有三角面片的水平边也不需要记录,只要记录垂直边和斜边就足可以表示多边形的边界了。

(2)分割是将合并得到的多边形分割为一个个小的凸多边形,以便进行下一步的三角形分割。如图2.8所示。

为了方便起见,凸多边形的分割是按水平方向进行的自上而下进行的。分割完成后,每个凸多边形的信息便从二维数组中提取出来,按照逆时针的顺序将其顶点存储在一个链表中。

(3)三角形划分是将分割得到的各个凸多边形最后化分为三角形,形成三角面片网格模型。如图2.9

步骤三:插值

节点的坐标值最终通过线性插值计算出来,这一步同经典的MarchingCubes算法是一样的。

从上述的算法描述中可以看出,DiscMC具有以下特点:

(1)由于DiscMC算法的主要部分是基于离散值的,耗时的插值计算量被降至了最低,故而算法效率很高,这在后面的实验结果中也得到了验证。

(2)简化比例高,由于凡是位于同一平面且相邻的三角面片都进行合并,所以如果初始三维表面比较平坦,可以达到很高的简化比,并保持有限的精度损失。

(3)可以保持细微结构,只要某细微结构在第一次的扫描中能够体现出来,则它就不会被DiscMC的简化过程所破坏,这也是DiscMC优于其他简化算法的地方。

MarchingTetrahedra算法和剖分立方体算法

MarchingTetrahedra(MT)方法是从MC方法的基础上发展起来的。该方法首先剖分立方体体元为四面体,然后在其中构造等值面。这种方法的优点有:

首先,由于四面体是最简单的多面体,其它类型的多面体都能剖分成四面体,因而具有广泛的应用背景。

其次,将立方体剖分成四面体后,在四面体中构造的等值面的精度显然比在立方体中构造的等值面要高。

剖分立方体算法和MC算法一样,对数据场中的体元逐层、逐行、逐列的进行处理。当某一个体元8个顶点的函数值均大于(或者均小于)给定的等值面的数值时,就表明等值面不通过该体元,因而不予处理。当某一个体元8个顶点的函数值中有的大于等值面的值,有的小于等值面的值,而此体元在屏幕上的投影又大于象素时,则将此体元沿x,y,z三个方向进行剖分直至其投影小于等于象素后,在对所有剖分后的小体元的8个顶点进行检测。当部分顶点的函数值大于等值面的值,部分顶点的函数值小于等值面的值时,将此小体元投影到屏幕上,形成所需要的等值面图像。

轮廓拼接

由一个序列的二维轮廓线重构三维形体有着广泛的应用。在我们的三维重建软件中,如果CT或者MRI图像两层之间的切片距离远远大于图像的分辨率,也就是Z方向的采样十分稀疏,或者,由于目前的图像分割技术不能完全准确的分割出共存于二维图像中的不同物质,往往需要人工干预,由医学专家勾划出感兴趣的区域,这种时候就需要从一个序列的二维轮廓重构出三维形体。

单、凸轮廓线之间的三维形体重构

假设两相邻平面上各有一轮廓线(如图2.10所示)。上轮廓线上的点列为P(0),P(1),P(2)…P(m-1);下轮廓线上的点列为Q(0),Q(1),Q(2)…Q(n-1)。点列均按照逆时针方向排列。如果将上述点列分别依次用直线连接起来,则得到这条轮廓线的多边形近似表示。连接上轮廓线上一点和下轮廓线上一点的线段称为跨距。很显然,一条轮廓线线段和它两端端点与相邻轮廓线上的一点相连的两段跨距构成了一个三角面片,称为基本三角面片。

如何确定上轮廓和下轮廓的连接办法?J.Fuchs等用优化办法来确定可接受表面,并假定优化的目标是两平行平面的轮廓线之间连接生成的表面面积最小[12]。同样有人提出了别的优化目标,比如使得两平行平面的轮廓线之间连接生成表面所包围的体积最大[13]。但是无论哪一种目标函数都需要全局搜索策略来求解,尽管已经提出了不少算法,但是效率不高。

基于局部计算和决策的启发式方法和上述方法不同,它不要求全局最优,而是基于局部计算来决定当前的选择。它得到的似近似最优解,计算量小,速度快,实例效果尚可。比如:

最短对角线法[14]

如图2.10所示,假如当前已经确定P(i)Q(i)为跨距,在选择P(i)Q(i+1)还是P(i+1)Q(i)作为下一个跨距的时候,只需要选择其中距离小的就可以。这种方法简单,容易实现,当上下两条轮廓线的大小和兴致相近,对中情况较好是,效果不错。

为了使得该算法能够适应更加复杂的情况,可以将上下两条轮廓线都变换到以统一原点为中心的单位正方形里面,从而较好的保证了大小和形状相似,并使得对中情况较好。在变换后的轮廓线之间连接好三角面片之后,需要进行反变换,将各轮廓线变换到原来的位置。

最大体积法

这种方法和上面的最短对角线法的思路和步骤一致,只是在选择下一个跨距的时候,把选择标准改成选择所围体积较大者

相邻轮廓线同步前进法[15]

这个方法和上述两种方法也很相似,只是在选择下一个跨距的时候,把选择标准改成:尽量使得上下两轮廓线中已经连接过三角面片的轮廓线线段长度占该轮廓线所有线段长度的比例保持一致。

非凸单轮廓线之间的三维形体重构

当相邻两轮廓线之间其中之一为非凸轮廓线的时候,构造两轮廓线之间的可接受表面要复杂一些,上述三种方法都很容易出现错误的结果。

实现非凸轮廓线之间的三角面片重构比较好的方法是首先将非凸轮廓线变换为凸轮廓线,在凸轮廓线之间构造好三角面片之后,再将其反变化为非凸轮廓线[16]。

变换的过程首先是递归求出封闭轮廓线的所有非凸轮廓线点集。如图2.11所示,首先求得轮廓线P的凸包E={1,2,4,8,9},P和E之间的差为两个凹区{2,3,4}和{4,5,6,7,8},对这两个凹区继续进行分解,直到所有分解出来的点集都是凸的为止。

接着,非凸轮廓线的变换从树形结构的叶子开始,自底向上,逐级消除非凸轮廓线的基本凹区,最后形成一条凸轮廓线。针对上面例子,对凹区{2,3,4}处理的步骤把3映射到2和4为端点的线段上;对凹区{4,5,6,7,8}处理的步骤是:先把点6映射到5和7组成的线段上,然后把5,6,7同时映射到4和9组成的线段上。

非凸轮廓线变换称为凸轮廓线后,使用前面所述的启发性算法进行构造三维表面,构造之后进行反变换,将各轮廓线变换到原来的位置

多轮廓线之间的三维形体重构

如果在相邻的两层上,或者在其中的一层上,有多条轮廓线,则需要解决多轮廓线之间的三维形体重构问题,这要比单轮廓线之间的形体重构复杂的多。

首先要解决的是轮廓线之间的对应问题,也就是两层之间的多个轮廓线之间的连接关系。由于应用领域的不同,轮廓线之间的连接关系变换繁多,非常复杂。利用两轮廓线之间的覆盖程度来决定其连接关系,只能适用于采样密度高,相邻层之间的间距小等简单情况。对于稍微复杂一些的情况,解决问题是非常困难的,往往需要人机交互来实现。对于我们的三维重建软件来说,要求用户去学习重建知识是不合适的。

为了使得算法既能适应复杂情况,又不需要人机交互,我们提出了把轮廓线之间的形体重构问题转化成体数据中等值面构造问题的方法,该方法要求被处理的轮廓线是封闭的(这个在进行二维轮廓线编辑的过程中我们已经保证),它无需预先判断轮廓线之间的对应关系和分支关系,也适用于非凸轮廓线。

该算法由体数据的构造和表面生成两部分组成。因为构造体数据后的表面生成只需使用前面提到的MC算法即可,所以在这里我们只讨论如何构造体数据。对于轮廓线所在平面上的每一个点(x,y),如果点在轮廓线外,我们定义它的值为-1;如果点在轮廓线上,我们定义它的值为0;如果点在轮廓线,那么定义它的值为1。经过这样的变换,定义于一系列平面上的多条轮廓线就转换为体数据,其中每个体元具有8个顶点,顶点的数值为-1,0或者1。

如何判断点处在轮廓线部还是外部?我们使用扫描线算法作为多边形填充算法。扫描线算法的基本步骤如下:

(1)对每个多边形求取其顶点中所含的Y的最小值Ymin和最大值Ymax,按Ymin进行排序,建立活性多边形表,活性多边形表中包含与当前扫描线相交的多边形。

(2)从上到下依次对每一条扫描线进行消隐处理,对每条扫描线上的点置初值,Z值Z(x)取为最大,x点的填充值I(x)取为-1。

(3)对每条扫描线Y,按活化多边形表找出所有与当前扫描线相交的多边形。对每个活性多边形,求出扫描线在此多边形的部分,对这些部分中每个象素x计算多边形在此处的Z值,若Z小于Z(x),则置Z(x)为Z,I(x)为1

(4)当扫描线对活化多边形表中的所有多边形都处理完毕后,所得的I(x)即为1,可进行显示并换下一条扫描线进行处理,即扫描线的y=y+1。此时应更新活性多边形表,将已完全处于扫描线上方的多边形,即Ymax<Y的多边形移出活性多边形表,将不在当前活性多边形表中的与新一条扫描线相交的多边形,即Ymin=Y的多边形加入活性多边形表。

按以上步骤处理完屏幕上所有的扫描线,物体的显示和消隐就完成了。在第(3)步扫描线与多边形求交时,可对多边形建立活性边表,以提高效率,当然在每次处理新的扫描线时也要更新活性边表。在计算Z值时可以和在Z-buffer算法中一样,利用多边形点与点间的水平和垂直相关性。

直接体绘制算法

体绘制是三维数据可视化的一种重要手段,它是一种将三维体数据投影到二维图像平面上的方法,这其中包含了大量计算。体绘制由于直接研究光线通过体数据场与体素的相互关系,无需构造中间面,体素的许多细节信息得以保留,结果的保真性大为提高。虽然从交互性能和算法效率上讲,面绘制还是要优于体绘制的,但是从结果图像的质量上讲,体绘制要优于面绘制。

直接体绘制算法的分类

根据不同的绘制次序,体绘制方法主要分为三类:以图象空间为序的体绘制方法,以物体空间为序的体绘制方法和基于频域空间的体绘制算法。

(1)以图象空间为序的体绘制方法是从屏幕上每一象素点出发,根据视点方向,发射出一条射线,这条射线穿过三维数据场,沿射线进行等距采样,求出采样点处物体的不透明度和颜色值。可以按由前到后或由后到前的两种顺序,将一条光线上的采样点的颜色和不透明度进行合成,从而计算出屏幕上该象素点的颜色值。这种方法是从反方向模拟光线穿过物体的过程。

(2)以物体空间为序的体绘制方法首先根据每个数据点的函数值计算该点的颜色与不透明度,然后根据给定的视平面和观察方向,将每个数据点投影到图象平面上,并按数据点在空间中的先后遮挡顺序,合成计算不透明度和颜色,最后得到图象。

(3)基于频域空间的体绘制算法[18]于1993年被提出,它大大减少了上述两种方法的计算量。我们可以将通过体绘制得到图像的过程,看穿是三维数据场沿着视线方向的数值积累,也就是数据场到图像平面的投影。我们可以运用傅立叶-截面定理,在三维数据场对应的频域场中,按照给定的视线方向经过原点抽取一个截面,再将这个截面作逆傅立叶变换,就可在空域的图像平面里面得到所需要的投影。

光线投射算法

光线投射算法是一种基于图像空间扫描来实现体绘制的离散方法。光线投射方法从图象平面的每个象素向数据场投射光线,在光线上采样或沿线段积分计算光亮度和不透明度,按采样顺序进行图象合成,得到结果图象。它从反方向模拟光线穿过物体的全过程,并最终计算这条光线穿过数据场后的颜色。

光线投射算法主要有如下的过程(绘制流程见图2.12):

(1)数据预处理:包括采样网格的调整,数据对比增强等;

(2)数据分类和光照效应计算:分别建立数据值到颜色值和不透明度之间的映射,并采用中心差分方法计算法向量,进行光照效应的计算;

(3)光线投射:从屏幕上的每个象素沿着观察方向投射光线,穿过数据场,在每一根光线上采样,插值计算出颜色值和不透明度;

(4)合成与绘制:在每一根光线上,将每一个采样点的颜色值按前后顺序合成,得到象素的颜色值,显示象素。

体绘制加速算法

为了加速体绘制,许多加速算法被提了出来。这些加速算法,有的是对基于图像空间的方法进行改进,有的是对基于对象空间的方法进行改进,有的则对这两类方法都适用。

基于图像空间的方法以LevoyM.于1988年提出的光线投射法(RayCasting)为代表。空间跨跃是加速光线投射式体绘制方法的一种常用手段,它的核心是跨过空的体素。基于这个思想的加速算法有:由Cohen和Shefer提出的ProximityClouds[19];由Zuiderveld提出的通过距离编码的光线加速法[20];还有Sramek提出的跳过大围空区域的方法[21]等。所有上述算法都是通过避免不必要的、费时的空体素采样实现加速的。

基于对象空间的方法是以WestoverL.1990年提出的溅射(Splatting)算法[22]为代表。基于对象空间的体绘制算法的加速技术主要围绕着数据压缩和分层的数据结构,通过访问尽可能少的体素来提高速度而不明显降低图像质量。

错切-变形(Shear-Warp)算法[23]是LacrouteP.于1994年提出的既可用于加速光线投射又可用于加速Spaltting的体绘制算法。它的主要优点是将三维的视觉变换转换成物体的错切和两维的变形,错切后的物体首先投射到中间图像平面上,然后再经变形生成最后的结果图像。物体投影的方向并不是任意的,而是沿着最主要轴(±X,±Y,±Z坐标轴)的方向,这就大大简化了光线投射和Splatting方法的过程。此外,并行与分布式[24][25]计算也是提高体绘制速度的方法之一。

综观上述算法可以看出这些加速算法都是依赖于某种连贯性的,如时间、物体空间、图像空间、立体图和光线采样空间的连贯性等。

小结

本章介绍了两类三维重建算法:等值面抽取算法和直接体绘制算法。

等值面抽取算法首先由三维空间数据场构造出中间几何图元(如曲、平面)等,然后由传统的计算机图形学技术实现画面绘制。它又可以分为两类:一类从三维体数据直接抽取出等值面,还有一类先从二维数据得到轮廓线,然后把多层的轮廓线拼接成三维模型。对前者,本章介绍了MarchingCubes算法、MarchingTetrahedra算法和剖分立方体算法,并对MarchingCubes算法的改进进行了讨论。对于轮廓拼接,本章介绍了单轮廓线的连接方法,同时指出要把单轮廓线的方法扩展到多轮廓线的困难,并提出了一种新的把轮廓线之间的形体重构问题转化成体数据中等值面构造问题的方法。

直接体绘制算法并不构造中间几何图元,而是直接由三维数据场产生屏幕上的二维图像。本章简单介绍了体绘制方法的分类,讨论了其中最常用的光线投射算法,并对体绘制算法的加速算法做一个简单的概括。

三维重建软件My3d的实现

﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡

My3d和PACS的关系

DICOM网关

二维图像的显示和处理

三维模型渲染方法

程序类图的设计

﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡﹡

My3d和PACS的关系

运行于广医二院的PACS系统,主要由图像管理子系统、医师工作站子系统和数据库管理子系统(如图3.1)。

其中医师工作站的结构图如3.2所示,包括书写查阅报告模块、图像处理模块、统计报表模块以与三维重建模块。图像处理模块包含了数据来源处理(DICOM网关)。三维重建软件(以后称为My3d)是医生工作站的重要组成部分,为了在显示三维模型的时候可以查看二维图像进行对照,所以提供了二维图像显示和二维图像简单处理的功能,因此三维重建软件部分依赖于图像处理模块。

DICOM网关

在目前大量使用的医学图像设备中,有的是支持DICOM格式的,但是还有相当多的设备是不具备DICOM接口的,有些还处于非数字化状态,甚至有些还不是可由电子屏幕显示的视频信息,而仅仅是以肉眼观察的光学仪器。这就必须通过一定的手段来采集和转换,使之成为计算机能接受和处理的数字图像信息。借助摄像头和采集卡是一种常用的图像采集手段。根据不同图像对分辨率、黑白或彩色、静态或动态等的不同要求,选择适合的摄像头和采集卡便可实现图像采集。处理已有的X射线照片(或CT扫描断层胶片)可用高分辨率多灰度的单色扫描仪来输入。解剖样品卡片也可用彩色扫描仪来输入。也有一些医学图像设备,例如,某些型号的电子窥镜或彩色多谱勒超声波扫描仪等装置,虽不能直接提供数字图像信息输出,但可提供视频信号,也可通过采集卡输入到计算机中。

通过图像采集得到的数字图像信息,由于来源的不同,表现为各种不同的数据形式,DICOM网关(图3.3)用于转换各种格式的数据为DICOM格式,使它们以统一的方式存放在数据库中。这种方式既最大可能的保存了各种医疗信息,又为客户端工作站的开发提供了统一的数据格式。

二维图像相关的软件设计

高分辨率图像的显示方法

许多医学成象设备提供的灰度图象具有比显示器高的分辨率。以常见的CT图像为例:一幅灰度图象有3个重要参数BitsAllocated、BitsStored和HighBit,如图3.4所示,BitsAllocated表示一个象素占多少Bit,BitsStored表示一个象素实际用了多少Bit存储数据,HighBit表示象素实际存储的开始最高位。以一份具体的CT灰度图象为例,如下图所示,BitsAllocated为16,表示一个象素占2个byte,BitsStored为12,表示一个象素实际使用了16个bit中的12个用于存储数据,HighBit为11,表示12位有效数据存储在0—11位。

图3.4CT灰度图象存储示意图

由于一个象素有12bit存储数据,所以它的灰度围为0—4096(2^12),而普通的显示卡只能显示256级灰度的图象,也就是说不可能一次完全显示患者图象的所有细节。

为解决这个问题,我们引入了窗宽窗位的概念。通过设置不同的窗宽窗位,我们可以选择图象的某一个灰度级围进行显示,如图3.5所示。显示的方法就是把在窗宽窗位围的灰度按256级拉伸或压缩,而把小于窗宽的灰度按0处理,把大于窗位的灰度按255处理。

图3.5调整窗宽窗位显示灰度图象

图3.6是患者的一幅CT图象在不同窗宽窗位下显示的结果,正上方的图象是CT机默认的窗宽窗位下显示的患者图象,可以看出是一个患者的头部剖面图;左下角是把窗宽窗位调低显示的图象,可以很清楚的看见患者的头发;右下角是把窗宽窗位调高显示的图象,在此图中只可以看到头部骨架部分。

图3.6不同窗宽窗位下的灰度图象

对窗宽窗位显示方法进行扩展,我们可以使用一种叫做双窗宽窗位的显示方法,它的原理与窗宽窗位显示一样,不同的是可以设置两段灰度围同时显示,如图3.7所示。这种方法可以显示一幅图象不同灰度部分,有利于帮助医生作出正确的诊断。

图3.7双窗宽窗位显示灰度图象

综上所述,我们可以很容易的显示高灰度级的灰度图象。

简单图像处理

图象处理一般泛指对图象进行各种加工以改善图象的视觉效果,即通过一系列特定的操作来改变图象的象素,以达到特定的目标,比如使图象更清晰,或从图象中提取某些特定的信息等。

图像增强

图象增强又称为图象锐化,是一大类基本的图象处理技术。目的是对图象进行加工,增强图象的边缘、高频(灰度跳变)部分的效果,便于对目标的识别和处理。

梯度法是一种常用的图象锐化方法。它的原理是对图象中任一点(x,y),计算这点的梯度值g(x,y),并用计算后的梯度值g(x,y)替换原象素的灰度值,即得到锐化处理后的图象。

如图3.7(a)所示,象素分别

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论