虚拟手术训练系统框架搭建及数据模型可视化

虚拟手术训练系统框架搭建及数据模型可视化


2024年3月5日发(作者:)

Classified Index:

CODE:10075

U.D.C:

NO: 20091283

A Dissertation for the Degree of M. Engineering

Construstion of Virtual Surgery

Training System Framework and

Visualization of Data Model

Candidate:Wang Dongyu

Supervisor:Prof. Wang Hongrui

Deputy Prof. Liu Xiuling

Academic Degree Applied for:Master of Engineering

Specialty :Control Theory and Control Engineering

University:Hebei University

Date of Oral Examination:June, 2012

摘 要

摘 要

虚拟手术训练系统是伴随着虚拟现实技术的发展,在现代医学领域的崭新应用。该系统通过计算机仿真出在手术过程中的真实场景,主要用来完成帮助医学工作者的手术培训以及在手术实施之前对手术方案进行预演的作用。可以在很大程度上降低手术成本和保证手术实施的安全性。

目前,国内外已经有很多机构在从事虚拟手术领域的研究,而本文则主要研究了虚拟手术训练系统的构建以及虚拟手术训练系统中的模型可视化过程。

本文所研究的虚拟手术训练系统平台是在Atamai软件框架基础上研发的。通过采用模块化的思想,将虚拟手术训练系统划分为各个独立的功能模块,利用Atamai框架和VTK可视化结构相融合的方法将功能模块嵌入到系统当中,搭建起整个虚拟手术训练系统的框架平台。通过白板模式解决了系统功能模块的扩展与删除,使整个系统不仅结构清晰而且具有较高的灵活性。

模型可视化作为虚拟手术训练系统中的关键技术,是所有其他功能实现的基础,本文利用Delaunay三角剖分算法,通过VTK的Pipeline结构实现了虚拟场景中的模型可视化,并利用三角网格的削减算法对可视化模型进行了优化,提高了系统的实时性。

关键词 虚拟手术 Atamai框架 模型可视化 三角剖分 网格削减

I

Abstract

Abstract

With the development of the virtual reality technology,virtual surgery training system has

been used in the modern medical simulate a realistic scene during the operation by the

is used to train the doctor to do the operation and is also used to practice the

approach before it can mostly reduce the operation cost and ensure the security

of the operation.

At present, there has been much institutions engaged in researching the virtual operation.

This paper mainly studies the construction of virtual surgery training system and model

visualization in the virtual surgery training system.

The virtual surgery training system platform this paper studies is based on the Atamai

software framework. By the use of the modular thought, virtual surgery training system is

divided into various independent function module. We embed the function modules into the

system through the joint framework of Atamai and VTK,then we set up the entire virtual

surgery training system platform. By the use of the white board model,we solve the problem

of module expansion and a result, the training system has clear structure and high

flexibility.

Model visualization is a key technology in the virtual operation training is the

foundation of all other functions. We meet the model visualization function by Delaunay

triangulations algorithm and VTK’s pipeline. We optimize the visualization model by

triangular mesh cuts algorithm and improve the real-time performance of the system.

Keywords Virtual Surgery Atamai Framework Model Visualization Triangulate

Grid Cut

II

目 录

目 录

第1章 绪论 ························································································································ 1

1.1 虚拟现实 ··················································································································· 1

1.1.1 虚拟现实的发展 ································································································ 1

1.1.2 虚拟现实的应用 ································································································ 2

1.2 虚拟手术训练系统 ··································································································· 2

1.2.1 虚拟手术训练系统的发展················································································· 31.2.2 虚拟手术的应用 ································································································ 4

1.3 本文研究的背景、目的 ··························································································· 5

1.4 本文的研究内容和结构 ··························································································· 5

第2章 基于Atamai平台的虚拟手术系统框架搭建 ······················································· 6

2.1 虚拟手术系统平台的概述 ······················································································· 6

2.2 虚拟手术系统平台的软硬件构成············································································ 62.2.1 虚拟手术系统平台的硬件构成········································································· 72.2.2 虚拟手术系统平台的软件构成········································································· 82.3 虚拟手术系统平台的Atamai框架 ·········································································· 8

2.3.1 VTK与 Atamai框架的结合·············································································· 92.3.2 Atamai核心模块的分析和设计 ······································································· 10

2.4 白板模式 ················································································································· 13

2.4.1 白板模式原理 ·································································································· 13

2.4.2 白板模式的实现 ······························································································ 15

第3章 基于VTK框架的医学模型数据三维可视化 ····················································· 17

3.1 概述························································································································· 17

3.2 VTK框架················································································································· 17

3.2.1 VTK的Pipeline管线流结构 ··········································································· 18

3.3 基于VTK框架的医学模型数据可视化································································ 18

3.3.1 数据源 ·············································································································· 19

III

目 录

3.3.2 滤波器 ·············································································································· 19

3.3.3 映射器 ·············································································································· 22

3.3.4 图形模型的建立 ······························································································ 23

3.4 模型拓扑结构的实现 ····························································································· 25

3.4.1 三角剖分的概念 ······························································································ 25

3.4.2 Delaunay三角剖分的概念及准则 ··································································· 25

3.4.3 Delaunay三角剖分算法实现 ··········································································· 27

3.5 手术刀模型可视化实现 ························································································· 29

3.5.1 实验运行环境 ·································································································· 29

3.5.2 模型可视化 ······································································································ 30

第4章 可视化模型的网格削减优化··············································································· 31

4.1 概述························································································································· 31

4.2 削减算法的原理 ····································································································· 31

4.2.1 结构描述 ·········································································································· 31

4.2.2 削减条件 ·········································································································· 32

4.2.3 三角化 ·············································································································· 33

4.3 手术刀模型的网格削减实现 ················································································· 33

第5章 虚拟手术系统平台的开发 ·················································································· 36

5.1 开发环境简介 ········································································································· 36

5.2 虚拟手术训练系统的实现 ····················································································· 37

5.2.1 系统概述 ·········································································································· 37

5.2.2 系统模块实现 ·································································································· 38

5.3 基于VTK的算法实现分析 ··················································································· 41

第6章 总结和展望 ·········································································································· 43

参考文献···························································································································· 45

致 谢···························································································································· 48

攻读硕士学位期间发表论文情况 ···················································································· 49

IV

第1章 绪论

1章 绪论

1.1 虚拟现实

虚拟现实(Virtual Reality,简称VR,又译作灵境、幻真),是近年来出现的高新技术,也称灵境技术或人工环境。虚拟现实技术是涉及了计算机图形学、人机交互技术、传感技术、人工智能等多个领域的新兴交叉学科。它以计算机技术为基础,主要运用了三维计算机图形学技术、采用多种功能传感器的交互式接口技术、高清晰度显示技术,制造出逼真的视觉、听觉、触觉等三维一体的感受,再通过外部设备使操作者与虚拟的场景的进行体验与交互,使人产生身临其境的感觉[1]。

1.1.1 虚拟现实的发展

虚拟现实具有四个基本特征:多感知性(Multi-Sensory)、浸没感(Immersion)、交互性(Interactivity)、构想性(Imagination)[2]。多感知性是指虚拟现实系统具有视觉、听觉、嗅觉、触觉甚至味觉等全方位的感知功能;浸没感就是指虚拟现实系统的真实感,用户置身于计算机模拟出的三维虚拟环境中,就如同身临其境,环境中得一切事物都如同真实存在一般;交互性是指用户对于虚拟环境中物体的可操作性以及虚拟物体对于用户的反馈性;构想性则是指虚拟现实技术可以应用到广阔的领域,不仅可以对于现实存在的环境进行虚拟也可以应用到现实中不存在的臆想出来的环境当中。

1962年,Morton Heilig研制出虚拟现实技术从诞生到成熟大体上经历了三个阶段[3]。“全传感仿真器”,通过该摩托车仿真器,骑乘者不但可以漫游整个纽约市,欣赏沿途秀丽的风景,而且还可以感受道路的颠簸,聆听市区嘈杂的声音。1968年,land研制出了第一个计算机图形驱动的头盔式显示器HMD及头部位置跟踪系统,成为了虚拟现实发展史上的一个里程碑,此阶段为虚拟现实发展的探索阶段。80年代,虚拟现实(Virtual Reality)的概念正式提出。1985年,Michael Mc Greevy研制出了具有头盔跟踪器及数据手套的VIEW虚拟现实系统,成为了虚拟现实第二阶段的重要标志,预示着虚拟现实由实验进入了实用阶段。90年代为虚拟现实发展的第三个阶段,虚拟现实技术进入了市场化阶段,创造了丰厚的经济价值,对人类社会的生产和生活产生了巨大的影响[4]。

1

河北大学工学硕士学位论文

1.1.2 虚拟现实的应用

随着第二次工业革命和第三次科技革命的爆发,社会生产力迅速发展,虚拟现实技术被广泛的应用到科技、商业、医疗、娱乐、教育、工业等社会的各个领域[5]。例如,在科技开发上克莱斯勒公司曾在1998年使用虚拟现实技术进行新型车辆的设计,并将设计模型直接应用在生产线上,不但节约了生产过程中的成本和时间,并且大幅度降了在模型设计中得人工错误发生率。在车辆碰撞的试验中,虚拟现实技术更是可以真实的模拟出车辆在不同情况下的冲撞过程以及各个部位在受到碰撞之后的反应,从而使企业生产出来的车辆更加美观,更加安全;在商业应用当中,建筑的构建—街道、绿地、树木、楼宇、广场的规划;室内房屋的装修--门窗的风格、墙体的颜色、房间的布局,都可以为潜在的消费者提供身临其境的感觉,为企业提供近乎完美的销售方式;在医疗领域,手术的培训教学—为手术医生提供了大量的精细训练,使手术医生感觉就像在真实的人体上手术一样,而不会造成对病人的危害;手术预演和导航—可以使医生就借助虚拟医疗系统进行手术预演;临床诊断—可以使医生利用虚拟内窥镜系统,诊断病人的体内病灶[6]。因此,虚拟现实在医疗领域的应用,不但可以节省大量的时间和金钱,也可以更快捷、更安全的挽救生命;而教育领域,虚拟现实技术在科技研究、虚拟实训、虚拟仿真校园也发挥了重要作用,推动了教育技术的革新。北京航天航空大学、浙江大学、清华大学、哈尔滨工业大学分别建立了虚拟现实实验室,为学生提供栩栩如生的学习环境和实验演示。虚拟实训的应用让学生能够扮演环境中相应的角色,参加各种训练。而虚拟校园的建设,不仅能够让每名准大学生进入大学之前就能够在异地体验校园的环境、文化、设施,选择自己心仪的学校之外,更能够宣扬出学校的特色,让世人所了解,通过互联网让我们的学校走出国门,走向世界,让我们国家的教育事业蓬勃发展。

虚拟现实的应用,已经取得了显著的经济价值。上面所提到的内容只是虚拟现实技术在日常生活中几个重要领域的应用,然而,随着虚拟现实技术的不断完善和发展也将使它具有更广阔的应用和发展空间,也将使它在社会发展当中扮演更重要的角色。

1.2 虚拟手术训练系统

随着科学技术的不断向前发展,医学与越来越多的学科产生了交叉和渗透,而虚拟现实技术与现代医学的相融合,已经开始对医学领域产生重大影响。在传统的医学手术当中,医生只是通过经验在术前进行手术方案的确定和模拟,整个手术质量的高低完全

2

第1章 绪论

取决于医生的经验值与熟练程度,具有一定的不可预知性。而虚拟手术作为虚拟现实方向发展起来的,集医学、计算机图形学、生物力学、材料学等多学科为一体的新兴交叉学科,能够为外科医生在计算机中建立一个模拟的手术环境,该虚拟的手术环境可以为医生提供手术训练、手术模拟、手术导航等一系列的解决方案。虚拟手术系统不仅可以在计算机屏幕上展现三维立体的医学可视化图像,而且还具备力反馈机制,使操作者获得如同真实的手术一般的各种作用力,完全仿真出手术过程的真实感和临场感[7]。从而使得医生的手术水平迅速上升,手术培训成本大幅度下降。

1.2.1 虚拟手术训练系统的发展

随着国家对于卫生医疗事业的投资比例不断加大,虚拟手术系统也逐步得到重视,并迎来了前所未有的发展机会。整体来讲,虚拟手术系统的发展可以分为三代,此概念是Satava于1996年第四届医学虚拟现实会议上提出[8]。

第一代虚拟手术系统主要是将医学临床的真实数据与虚拟现实技术当中的漫游与交互技术相结合,模拟仿真人体的几何特征和提供简单的交互模式,让医生可以在视觉和触觉上得到训练;第二代虚拟手术系统主要是在组织几何建模基础上添加物理建模,将不同软组织的物理特性在系统中体现出来,医生在对不同的软组织施加作用力时,软组织会产生不同的反馈效果,使整个系统更加逼真;第三代虚拟手术系统则主要是在第一代、第二代几何建模和物理建模的基础上,添加软组织的生理自适应模型,例如,血液在流动过程中的快慢,软组织的生长发育过程、神经系统的控制过程等。目前,虚拟手术系统所能实现的功能主要是处于第二代的初期物理仿真阶段,距离最为贴近人体生理结构和生理功能的第三代虚拟手术仿真系统还有很长远的道路需要迈进。因此,虚拟手术系统还有更加深远和广阔的发展前景和动力。

Delp和Rosen在80年代研发了第一个用于观察关节移植手术的虚拟手术仿真系统。Satava在1991年,研发出了第一个腹部手术仿真系统并且具备了交互功能,虽然在操作性上还不具备足够的真实感,但是却为虚拟手术的发展奠定了整体的概念。接下来,在1993年,Merril利用CT、MRI、X-Ray、PET等医疗设备获得了虚拟手术所必须的真实人体数据,虽然这些数据的精度还不能满足虚拟手术的要求,但是为接下来的虚拟人计划打下了基础[9]。1994年,虚拟人[10](Visible Human )计划确立,全方位的建立人体信息资料数据库,为虚拟手术的建模及发展提供了科学的理论依据。1995年,Levy

3

河北大学工学硕士学位论文

第一次将力反馈设备应用到了虚拟手术系统当中,成为了医生第一次真正意义的虚拟手术[11]。

目前,国内外有许多机构在对虚拟手术平台进行开发,因此,虚拟手术系统的框架结构各不相同。法国INRIA研究所对于虚拟手术的研究一直处在领先地位,而其研发的SOFA虚拟手术训练系统[12-14]采用了高模块化、软组织器官的多模型表示以及场景图的结构框架,成功的实现了医疗仿真的效果,为虚拟手术领域的研究奠定了坚实的基础[15]。

1.2.2 虚拟手术的应用

虚拟手术系统作为现代医学的新兴发展方向,涵盖了医学图像三维可视化、手术导航、手术训练、远程干预外科手术等多个模块,是一套完成的综合系统。因此,也具备了广泛的应用平台。目前,虚拟手术系统的主要用途有:

医学图像三维可视化[16],它是虚拟手术系统的基础,它融合了图像分割、图像配准、图像融合、图像的三维重建等多方面的技术,传统的二维断层图像只能提供病灶的平面信息,医生们只能凭借经验就想象这些部位的剖面信息,而医学图像的三维可视化技术,能够给出病变体的三维模型并进行三维显示,能给医务人员更直观的立体感,提高诊断的准确性。

手术导航[17],就是利用CT、MRI、X光等医学影像设备对人体进行扫描,获得人体影像数据,然后利用图像处理技术重构出二维与三维的图像模型,再结合空间定位技术,实现在手术前对于手术线路的规划,在手术中对于手术器械位置的精确校准与定位,并实时的在计算机屏幕上显示出来,帮助医生顺利的完成手术。手术导航就相当于军事领域的雷达,使手术更加准确、可靠,已经被广大医生所接受和使用。

手术训练,是虚拟手术系统的主要用途所在,可以为医生提供一个真实可靠的训练环境,力反馈效果则会使医生更加具有沉浸感。通过虚拟手术系统对医生进行手术前的大量培训,而不需要成本高昂的实验动物,可以大大提高手术的成功率和准确率。同时,也可以大幅度降低医生的培训成本和病人的看病开销。

远程干预外科手术,也是虚拟手术系统的一个重要应用,医生只需要对虚拟的手术模型进行手术,并通过互联网将医生的行为传递给另一端的手术机器人,由机器人对病人进行手术。斯坦福国际研究院(SRI)已经研制出这样一套远程手术实验系统[18]。此外,日本东京大学和冈山大学也研发出了远程控制的血管缝合机器人[19]。远程干预外科

4

第1章 绪论

手术,使医疗设施在更广阔的范围和空间,为更多的病人所共享,意义非同凡响。

1.3 本文研究的背景、目的

本课题来源于国家外国专家局教科文卫引智项目《分布式智能化活体细胞层虚拟内窥镜手术平台》(批准号:W2011123) 的资助与支持,并且与上海交通大学合作,在虚拟现实技术的基础之上,通过查阅大量相关领域的论文资料,对目前存在的比较成型的虚拟手术训练系统平台进行研究,完成了虚拟手术训练系统框架结构分析与平台的搭建以及虚拟场景需要的数据模型可视化等几方面的研究工作。我们将虚拟手术训练系统平台划分为硬件部分和软件部分,对平台的硬件组成、软件功能模块、软件的运行机制、虚拟手术中的典型算法以及整个软件工程的构建等内容加以论述,使虚拟手术训练系统的层次结构清晰可见,为以后虚拟手术训练系统平台的结构改进、算法的优化等方面的研究,做好了基础性的工作。

1.4 本文的研究内容和结构

本论文主要包括三方面的内容,一是关于虚拟现实、虚拟手术的发展和相关技术的介绍;二是虚拟手术训练平台各个模块的研究以及虚拟手术训练平台的构建;三是利用VTK可视化技术,通过德洛内三角剖分算法对虚拟手术训练系统中的模型进行三维重构,并利用网格削减算法精减模型中的网格数量,达到模型优化,提高实时性的效果。

第一章是绪论,主要介绍了虚拟现实技术、虚拟手术训练系统的发展和应用,以及课题的研究背景、目的和研究的内容、结构。

第二章主要介绍了我们所采用的虚拟手术训练平台的软硬件组成结构及工作原理,并详细论述了基于Atamai框架的虚拟手训练平台中所涉及到的核心模块、白板模式

第三章主要介绍了VTK框架的相关内容,详细论述了VTK框架中所使用的数据格式、Pipeline结构,以及在模型可视化过程中所采用的德洛内三角剖分算法原理和实现。

第四章主要介绍了在模型可视化的基础上,通过三角网格的削减算法对虚拟的手术刀模型进行网格的精减、优化,详细论述了削减算法的原理和实现。

第五章主要介绍了基于Atamai框架的虚拟手术训练系统的实现,详细论述了整个系统的开发环境、软件实现流程、功能模块以及在VTK中对于整个系统中的底层算法的实现。

第六章主要是对本论文进行了总结和对未来工作的展望。

5

河北大学工学硕士学位论文

第2章 基于Atamai平台的虚拟手术系统框架搭建

2.1 虚拟手术系统平台的概述

虚拟手术系统平台是一个承载了人体软组织器官物理建模和几何建模,并通过外部力反馈设备与场景中的虚拟手术器械进行交互,对软组织器官进行仿真手术操作,给操作者反馈视觉与触觉效果的综合工程[20]。因此,要想获得一个功能强大、结构稳定、实时性高并且具有扩展能力的虚拟手术训练系统,就需要一个优秀的医疗仿真引擎。我们选用了。它是一个包含了VTK[21]医疗引擎和GUI窗口操作的功能强大的软件工程框架,支持算法的添加以及功能模块的扩展。通过该框架我们将虚拟手术中的医疗仿真算法、外部交互设备、窗口显示集合于一体,形成了一个完备的软件工程。

在手术训练前期,我们通过CT、核磁等外部医疗设备获取真实的人体软组织数据,将其导入到虚拟手术训练平台当中,通过可视化模块将这些数据转换为三角网格数据,然后利用平台当中的建模算法,对人体的软组织器官进行物理建模和几何建模[22],最后通过与这些模型的交互,我们便可以实现虚拟手术训练当中对于人体软组织的碰撞检测、切割、缝合等操作[23]。

2.2 虚拟手术系统平台的软硬件构成

虚拟手术训练系统平台作为一个整体的架构,我们主要将其划分为硬件部分和软件部分两大块分别进行了独立的研究[24],而硬件部分和软件部分又分别由独立的设备和模块来完成不同的任务功能,如图2-1所示,为虚拟手术系统平台结构图。

6

第2章 基于Atamai平台的虚拟手术系统框架搭建

虚拟手术训练系统平台硬件部分软件部分交互设备力反馈设备图形工作站显示设备预处理模块建模模块碰撞检测切割缝合力反馈模块系统模块几何建模物理建模人机交互界面事件驱动系统控制

图2-1 虚拟手术系统平台结构图

2.2.1 虚拟手术系统平台的硬件构成

虚拟手术系统平台的硬件部分主要功能是为了实现与虚拟场景中模型的交互、对于整个虚拟手术场景的渲染显示以及对整个软件工程的载体作用。因此,其硬件组成部分主要包括外部交互设备、力反馈设备、显示设备、图形工作站等,而目前部分交互设备与力反馈设备是结合在一起的[25]。

1. 交互设备

交互设备作为操作者与虚拟手术系统场景中模型的互动装置,通过这些设备,操作者可以控制场景中的虚拟手术器械,对模型进行切割、缝合等操作。

2. 力反馈设备

当虚拟手术场景中,手术器械与软组织器官模型发生碰撞时,会产生力的相互作用,力反馈设备就是捕获这些力的作用,施加在操作者身上,产生触觉感受,当碰撞到不同的软组织材质是会产生不同效果的惩罚力,让整个系统更加真实。目前,力反馈设备主要生产商为美国Sensable公司生产的Phantom系列的力反馈器[26]。

3. 图形工作站

7

河北大学工学硕士学位论文

图形工作站主要为系统的核心计算机,负责承载整个虚拟手术系统,并提供虚拟手术系统平台当中的模型构建、模型形变、碰撞检测、切割、缝合、图形渲染等各种算法的计算和执行。就相当于计算机当中的CPU一样,控制着整个虚拟手术训练系统的进程。

4. 显示设备

显示设备主要是对于虚拟场景当中的对象进行可视化,给操作者一个直观的视觉效果。通过显示设备,操作者可以观察到场景中的软组织器官的形态位置以及虚拟手术器械的位置,从而可以对软组织器官进行操作。目前,虚拟手术系统中常用的主要是显示器、3D显示器、投影仪等显示设备。

2.2.2 虚拟手术系统平台的软件构成

虚拟手术系统平台的软件部分是整个系统的核心,其实时性与真实性完全取决于软件部分的优化结构。在我们的虚拟手术系统平台当中主要包含了医学数据的预处理模块、软组织器官建模模块、碰撞检测模块、切割缝合模块、力反馈模块、系统模块等几部分。虚拟手术系统平台将各个模块整合在一起,并通过可视化技术与用户进行交互,便组成了完整的软件结构。其整个虚拟手术系统平台的结构设计图。本文的主要对虚拟手术平台的运行机制、系统模块、模型的可视化、碰撞检测算法几个方面进行了详细深入的研究。

2.3 虚拟手术系统平台的Atamai框架

Atamai是一个专门应用于医学仿真领域的软件工具开发包,是一个成熟的、应用广泛的框架基础。Atamai以VTK、ITK可视化软件开发包为基础,并封装了wxPython这样编程简单、功能强大的GUI图形用户界面工具箱,使人们可以很容易的定义自己的窗口功能,轻松的扩展自己需要的功能。除此之外,Atamai还具有开源、跨平台的优点,支持C、C++、Python等多种开发语言,以事件流为主体驱动,具有白板功能,包含了计算机图形学[27]、医学数据处理等多种功能,被广泛的应用于医学仿真领域。如图2-2为Atamai框架的层次结构。

8

第2章 基于Atamai平台的虚拟手术系统框架搭建

虚拟手术训练平台AtamaiVTKITKwxPython其它算法

图2-2 Atamai层次结构

虚拟手术训练系统平台是一个综合的软件工程,涉及了多个方面的功能与应用,因此,虚拟手术系统平台的开发都是在一定的基础框架上完成的。目前,国内外有许多机构在对虚拟手术系统平台进行开发,所使用的框架结构也各不相同。本文的虚拟手术系统平台则采用了以Eclipse为开发环境,Atamai作为基础的框架结构。包含了数据处理、模型可视化、创建软件用户界面、交互控制等多方面的功能,而每个功能的具体实现则又由其封装的子框架来完成。因此,整个虚拟手术训练系统的运行是通过多个子系统、子模块之间相互协调、相互配合来完成的。

2.3.1 VTK与 Atamai框架的结合

在虚拟手术训练平台的可视化功能方面,Atamai主要是采用了目前最为广泛使用的VTK仿真开发包来完成。在VTK的可视化框架中,每一条单一的Pipeline流水线结构只能完成对一个独立模型的可视化显示,而在虚拟手术训练系统的场景中,则需要在同一画面中显示多个模型。因此,通过Atamai框架的改进,实现了上述同一场景中的多模型显示功能。如图2-3所示,为VTK的流水线结构与Atamai模块的对应关系。

9

河北大学工学硕士学位论文

VTKvtkSourcevtkFilterAtamaiActorFactoryvtkMapperRenderPanevtkActorvtkRenderervtkRenderWindowPaneFramevtkRenderWindowInteractor

图2-3 VTK与Atamai模块的对应关系

我们将VTK管线中每个模型的可视化过程全部集中到Atamai框架中的ActorFactory模块当中,从而实现将所有需要显示的模型对象汇聚在一起,然后再通过RenderPane模块将其显示出来,实现同一场景下的多模型显示功能。

2.3.2 Atamai核心模块的分析和设计

Atamai作为一个软件框架,以事件为驱动机制,包括了几个核心模块:EventHandle、wxPaneFrame、ActorFactory。因此,在我们的虚拟手术系统平台当中,则主要是通过这几个核心模块的协调工作来实现平台的顺利运行。在我们的系统当中,EventHandle模块主要负责系统框架中的关于事件处理的任务;wxPaneFrame模块负责系统最外层的窗口GUI框架;ActorFactory模块主要负责对于虚拟场景中各个模型的创建、管理。下文将详细介绍各个模块的功能,其模块关系如图2-4所示。

10

第2章 基于Atamai平台的虚拟手术系统框架搭建

图2-4 模块关系

1. EventHandle模块

EventHandle模块通过其中包含的Event类和EventModifier/EventType类对事件及相关常量进行定义;通过BindEvent()类将事件与事件响应函数绑定,形成键值对,在__EventDict 中保存;利用HandleEvent()事件响应类,将发生的事件,翻译成

Type-Modifier-Keysym,然后从__EventDict中找到其对应的响应函数。EventHandler模块控制整个系统的事件及事件响应是整个系统的框架,将ActorFactory模块与wxPaneFrame模块联系在一起,形成模块间的信息通路。

2. ActorFactory模块

在以VTK为框架的虚拟手术训练系统当中,场景中的所有模型相当于一个舞台上的演员,扮演着不同的角色,完成不同的任务。ActorFactory模块顾名思义就是演员的工厂,就相当于“演员的储藏区”,我们从外部获得数据,然后加工成不同功能的“演员”然后将其放入ActorFactory中。当我们在训练过程中需要哪位“演员”去完成相应的任务时,就将其添加到RenderPane当中渲染出来。ActorFactory与vtkActor之间存在着一对多的关系。

11

河北大学工学硕士学位论文

3. RenderPane模块

RenderPane模块主要将Actor添加到其中,用于场景中的三维重建可视化,与vtkRenderer模块对应,其中包含了RenderPane2D类、VolumePlaneFactory 类和

OrthoPlaneFactory 类,RenderPane2D类主要应用于构建二维面板形成三维重建可视化效果;VolumePlaneFactory类和OrthoPlaneFactory 类都是用于计算的核心类。VolumePlaneFactory类主要用于数据可视化过程中的计算任务,并将计算结果交付RenderPane2D和RenderPane进行渲染、绘制;OrthoPlaneFactory 类则是用于对象剖面计算,形成不同角度的可视化效果,能够看到物体内部的构造,同样OrthoPlaneFactory

类的计算结果也需要传递于RendrPane类进行渲染、绘制。如图2-5为Actor添加入RenderPane的流程图。

图2-5 Actor添加流程图

4. wxPaneFrame模块

wxPaneFrame是系统的窗口框架模块,其中的PaneFrame类是整个模块的核心,包含了tkPaneFrame、wxPaneFrame、qtPaneFrame等面板类,其功能对应着VTK框架中的vtkRenderWindow模块和vtkRenderWindowInteractor模块,获取GUI事件与VTK事件,并将其翻译成相应的事件类传递给RenderPane模块,控制显示与交互。如图2-6为PaneFrame与RenderPane的关系。

图2-6 RenderPane与PaneFrame关系

12

第2章 基于Atamai平台的虚拟手术系统框架搭建

2.4 白板模式

随着时间的推移和科学技术水平的提升,在医学的发展道路上将会出现更加先进的医疗技术和医疗方式。因此,我们的虚拟手术训练平台也应该能够跟随其发展的添加或者减少相应的功能。而在我们的虚拟手术训练平台中,则是通过白板模式来实现系统功能模块的添加和删除的。

2.4.1 白板模式原理

白板模式是一种用于数据处理的架构模式,与黑板模式相似。黑板模式就是不同的数据信息相互共享和影响完成数据处理。就相当于黑板是一个公共的平台,每个对象都可以在上面添加信息,并共享“黑板”上已有的信息,完成任务。例如,当数据库作为黑板时,不同的应用就可以共享数据库中的信息,并可以更新数据库中的数据。而白板模式同样具有黑板模式共享信息和具有众多的观察者并触发相应事件的特点,允许具有多个数据源和多个GUI窗口,当某进程对某些事件产生关注时,该进程就把时间公告放在黑板中,供其他进程共享。而二者的不同之处在于,在对事件的触发过程中,黑板模式没有顺序,而白板模式具有特定的顺序。例如,在碰撞检测过程中,只有当检测到碰撞发生后,才会调用响应函数,产生形变、力反馈。

当我们的系统需要扩展或者删除某个模块的时候,我只需要通过白板模式的架构就可以轻松实现,使系统具有了高度的灵活性和易于维护的特点。而白板模块的添加则需要以下几个步骤:

1.创建系统所要新增的功能类,实现核心功能,如:碰撞检测,碰撞响应,phantom控制等算法。

2.通过whiteboardObserver 的形式,向外部系统提供接口,如图2-7所示,为白板结构模式框图。

13

河北大学工学硕士学位论文

图2-7 白板结构模式图

3.新功能的 whiteboardObserver的实现

(1) 通过C++的继承方法,生成whiteboardObserver的新的观察者XXXObserver。

(2)定义出对外的接口函数 ,aplyXXX,并在接口中调用实现好的核心功能函数。

(3)确定whiteboard 里事件响应顺序,即在该核心功能调用后需要执行的功能,如图2-8所示,为whiteboardObserver的实现函数。

图2-8 whiteboardObserver实现函数

通过上文的研究,我们已经可以将白板功能的新算法封装在底层的动态链接库中,因此,我们需要实现白板功能时,只要通过python语言调用其提供的接口函数即可。在白板模式的实现过程中,我们首先要确定各个对象所要完成的操作,如对象需要进行碰撞检测、需要被phantom控制、需要形变等,将其在空间中的动作抽象成需要完成的功能点;其次,建立起对象的数学模式和物理模型。物理模型就是记录了对象的位置、颜色、透明度等信息的模型;数学模型则是组成物体的点之间具有数学联系的模型,并且模型能与用户进行交互;最后,当模型功能划分完毕之后,加入相应的白

14

第2章 基于Atamai平台的虚拟手术系统框架搭建

板即可。

2.4.2 白板模式的实现

通过上文,我们介绍了白板模式的原理,而在我们的系统当中,碰撞检测功能模块则是白板模式的具体实现。

例如在虚拟场景当中,当我们通过Phantom力反馈控制灰色的圆球模型去碰撞红色的方块模型时,其实现步骤主要包括以下几步,如图2-9所示,为白板模式实现场景图。

图2-9 白板模式实现场景

第一步,明确场景中,每个模型所要实现的功能

灰色球主要完成Phantom控制和碰撞检测两个功能,红色方块则主要完成碰撞检测和发生形变两个功能。

第二步,为模型添加白板仿真

在场景中,红色方块是被碰撞的模型,只有当发生碰撞之后,才能够发生形变,因此,需要对红色方块模型添加仿真白板。整个功能实现的伪代码设计如下:

a. 创建场景中的物体

entity = example_( ) 红色方块

15

河北大学工学硕士学位论文

flop = example_( ) 灰色圆球

flip = example_( ) 灰色平板

b. 为场景中的模型添加仿真白板

wb_entity = vktSimulationWhiteboard( ) 红色方块添加白板

wb_ut(put())

wb_flop = vktSimulationWhiteboard( ) 灰色球添加白板

wb_ut(put())

c. 设置碰撞检测

collisionLocator = vtkCollisionComponent( )

teboard(wb_entity) 红色方块设置碰撞检测

teboard(wb_flop) 灰色球设置碰撞检测

d. 设置碰撞响应

collisionResponder = vtkCollisionResponder ( )

collisionResponder. AddWhiteboard(wb_entity) 红色方块设置碰撞响应

f. 设置形变

rdm = vtkRDM( )

teboard(wb_entity) 红色方块设置形变

g. 设置Phantom

fa = vtkActorFollower( )

teboard(wb_flop) 灰色球Phantom控制

通过上述设置,我们便可以实现虚拟场景中的模型在碰撞检测过程中,先检测到碰撞再发生形变的白板功能了。

16

第3章 基于VTK框架的医学模型数据三维可视化

第3章 基于VTK框架的医学模型数据三维可视化

3.1 概述

数据模型的可视化就是通过计算机将原始的医疗数据或者通过3D MAX、Auto

CAD等建模软件获得模型文件,经过各种算法的计算将其显示出来的技术,它主要涉及了图像处理、图像的三维重建、图像融合、图像分割等多个领域,包括了计算机图形学、虚拟现实技术等多个学科[28]。在虚拟手术训练系统平台当中,模型的可视化是整个系统所涉及的最为关键的问题之一,可视化技术的好坏直接影响着操作者与平台的交互环节,是虚拟手术训练系统能否具有真实性的基础。目前,在虚拟手术系统当中,虚拟场景中的模型绝大部分是通过建模软件一个一个绘制出来的,工作量重复、效率低下,不能够及时根据实际的外界条件获得所需要的模型,而随着计算机科学技术快速迅猛发展,逆向工程技术以及计算机辅助设计(Computer Aided Design,CAD)技术中的曲面造型技术和图像处理技术在工业设计、军事航空、人机工程等方面己经比较成熟[29]。我们希望借助这些工业领域的先进技术引入到虚拟手术训练系统中的模型构建领域,提高虚拟手术系统中的模型仿真水平。在此基础上,本文通过对三维数据采集系统所获得的医学模型的点云数据,利用VTK框架经过Delaunay三角剖分算法加工对其进行了三维的可视化显示[30-32]。

3.2 VTK框架

VTK(Visualization Toolkit)是专门用于医学仿真的开发包,由Will Schroeder、Ken

Martin和Bill Lorensen三人在1993年开发完成,封装了图像分割、图像可视化、图形处理等医学图像领域的多种算法,构建在面向对象的技术之上,支持C++、Tcl、Java、Python等语言,并且具有开源、跨平台、支持并行计算等特点。VTK能够对点阵、图像、体数据等多种格式的数据进行处理,并且可以将不同的数据格式进行转换。除此以外,VTK将大量的图形底层算法封装在一起,但在结构上将图形的处理算法与图形的绘制算法单独分开,能够让使用者很轻松的添加和删除渲染引擎。目前,VTK已经在医学可视化平台领域得到广泛应用,在默认的状态下,VTK支持工业标准的三维图形图像绘制库OpenGL,使VTK可以运行于各种支持OpenGL标准的硬件加速显卡上,提

17

河北大学工学硕士学位论文

高图形图像的绘制速度,非常易于学习和掌握,能大大提高编程者的效率。

3.2.1 VTK的Pipeline管线流结构

VTK作为一个基于面向对象的三维可视化的软件包,它的一个最主要的设计特征是基于Pipeline的管线流设计模式[33],在VTK的Pipeline渲染管线当中,主要就是数据的导入、数据的输出、对象的显示等三部分功能,而这三部分功能又是通过两种模型来完成的,第一部分是可视化模型,第二部分则是图形模型[34]。可视化模型的作用主要是将得到的不同类型的数据信息转化为规则的图形数据,建立好对象的几何结构,为后面的图形管线提供标准数据。图形模型的作用则主要是将可视化管线当中获得的图形数据渲染出来。在Pipeline管线工作的过程中,我们通常把数据看做是流动的水流,数据从搭建的管道中流过,在流过的不同的管道模块中会有相应的算法,对数据进行运算处理,当数据流到Pipeline的末端时,便能够得到我们所希望的可视化结果,如图3-1所示为VTK的Pipeline结构图。

SourceFilter数据源滤波器可视化模型Mapper数据映射图元ActorRenderer图形模型RenderWindow演员绘制实体GUI窗口RenderWindowInteractor与GUI交互

图3-1 VTK的Pipeline结构

3.3 基于VTK框架的医学模型数据可视化

在VTK中,可视化模型的作用就是将外部的医疗数据、模型数据等转化为VTK管线自身所能处理的数据结构,然后再将这些转化后的数据映射为图元数据,提供给后面

18

第3章 基于VTK框架的医学模型数据三维可视化

的图形模型所使用。VTK的可视化模型主要包括了数据源、滤波器、映射器等三部分[35]。

3.3.1 数据源

顾名思义数据的来源,为整个Pipeline管线结构提供数据,是整个数据流流动的动力。它可以是来自于CT、核磁、PET等医疗设备的输出数据或者是3D MAX、Auto CAD等三维建模软件所生成的数据文件,亦或是通过数学算法生成的离散数据。

在我们的可视化系统当中,则采用了三维数据采集系统所获得的医学模型的点云数据,作为数据源。通常我们把三维空间中的点集称为“点云”,点云数据记录了物体表面的各种物理量。在VTK的框架中,我们通过vtkPoints类和FILE类,将外部的点云数据文件,引入得到它的Pipeline流水线中,作为Source数据源,其程序伪码设计如下:

a.创建存储点云的内存空间 vtkPoints *points = vtkPoints::New();

b.通过文件操作类读取数据文件

FILE *fp;

fp = fopen(文件地址);

c.将点云数据插入到points内存空间中 points->InsertNextPoint;

3.3.2 滤波器

3.3.2.1 滤波器与其数据形式

滤波器就是封装了不同的数据格式转换算法的类,它接受数据源中的数据,将其转换为新的数据格式输出,过滤器包含了多种算法,如图形处理、碰撞检测、数学变换等,并且每个滤波器由于其功能的不同所能接受数据形式也各不相同。

在VTK框架中,数据形式主要由组织结构和数据属性两部分组成,组织结构描述的是数据之间的拓扑关系;数据属性描述的是几何数据或单元数据的相关属性信息,如空间位置等属性。因此,根据其几何数据和单元划分,VTK的数据形式主要定义了结构化网格数据集、非结构化网格数据集、多边形数据集、结构化点集、线性网格数据集、非结构化点集等六类[36]。

结构化网格数据集由四边形或者六面体组成,具有规则的拓扑结构和不规则的几何

19

河北大学工学硕士学位论文

结构,单元之间不存在交叉重叠,结构化网格通常用于有限差分析。如图3-2所示,为结构化网格数据集。

图3-2 结构化网格数据集

非结构化网格数据集由0维到3维的单元组成,具有非结构化的拓扑结构和几何结构,单元之间可以随便搭配,VTK中所有的数据类型均可由非结构化网格数据集表示,通常被用于有限元分析、计算几何、图形表示等领域。如图3-3所示,为非结构化网格数据集。

图3-3 非结构化网格数据集

多边形数据集由顶点、多顶点、线、多线、多边形、三角带组成,多边形数据是非结构化的,并且多边形数据集的单元在拓扑维度上有多种变化,顶点、线和多边形构成了用来表达0、1和2维几何图形的基本要素的最小集合,同时用多顶点、多线和三角形带单元来提高效率和性能,特别是三角形带用一个三角形带表达N个三角形只需要用N+2个点,但是用传统的表达方法需要用3N个点。如图3-4所示,为多边形数据集。

20

第3章 基于VTK框架的医学模型数据三维可视化

图3-4 多边形数据集

结构化点集数据是按规则排列的点的集合,点的排列和坐标轴平行,形成方形的点阵。如图3-5所示,为结构化点集数据集。

图3-5 结构化点集数据集

线性网格数据集是排列在矩形方格中的点和单元的集合,线性网格的拓扑结构是规则的,但其几何结构只有一部分是规则的,它的点是沿着坐标轴排列的,但是两点间的间隔可能不同,线性网格由象素和三维象素组成,通过指定网格的维数来隐式地表达拓扑结构,几何结构通过x,y,z坐标来表达。如图3-6所示,为线性网格数据集。

图3-6 线性网格数据集

非结构化点集是空间中分布的不规则散乱点,具有不规则的几何结构,不存在拓扑结构,通常,这类数据没有固定的结构,是由一些可视化程序识别和创建的,非结构化点集适合表现非结构化数据,为了实现数据的可视化,可将这种数据形式转换成其它一

21

河北大学工学硕士学位论文

些结构化的数据形式。如图3-7所示,为非结构化点集。

图3-7 非结构化点集

3.3.2.2 滤波器设计

在我们的VTK可视化管线当中,所采用的滤波器为vtkDelaunay3D,因此,我们需要将点云数据转化为VTK中的非结构化点集数据格式,再对其进行德洛内三角剖分,其程序伪码设计如下:

a.创建非结构化点集存储空间 vtkPolyData *polydata = vtkPolyData::New();

b.建立点云间的拓扑关系

vtkPolyVertex * polyvertex = vtkPolyVertex::New();

polyvertex->GetPointIds()->SetNumberOfIds(n);

c.将点云数据转化为非结构化点集格式 polydata->SetPoints();

d.对数据进行德洛内三角剖分算法处理 vtkDelaunay3D

3.3.3 映射器

映射器就是将滤波器输出的数据映射为标准图形库中的图元数据,然后提供给图形模型,使其将图形最终渲染出来。VTK中的映射器主要包括vtkDataSetMapper,vtkMultiGroupPolyDataMapper,vtkPolyDataMapper等三种类型,而在我们的可视化流水线中则选择了根据点、线、面构造图形的vtkPolyDataMapper映射器。当点云数据通过映射器之后,便会形成三角形面片图元。在VTK的可视化模型中,滤波器对数据源的处理,可以是单输入也可以是多输入,并且当一个滤波器的处理不能够满足要求时,我们可以组合多种滤波器在一起,共同对数据进行处理,再将结果传递映射器。如图3-3

22

第3章 基于VTK框架的医学模型数据三维可视化

为数据源、滤波器、映射器之间的一一对应关系。在此原理的基础上,我们将vtkDelaunay3D得到数据,再经过vtkSmoothPolyDataFilter滤波器,vtkDecimatePro滤波器使最终形成的网格更加平滑,达到对网格进行优化的效果。如图3-8所示,为数据源、滤波器、映射器对应关系。

图3-8 数据源、滤波器、映射器对应关系

3.3.4 图形模型的建立

当数据经过第一部分可视化模型的处理之后,图元信息传递给第二部分的图形模型,由它来完成渲染场景的搭建、对象的显示以及用户与对象的交互功能。 而这些功能则主要是由vktActor、vtkLight、vtkCamera、vtkProterty、vtkMapper、vtkTransform、vtkLookupTable、vtkRenderer、vtkRenderWindow、vtkRenderWindowInteractor等核心类构成。

vtkActor:当数据经过滤波器、映射器转换为图元信息以后,通过vtkActor类将生成一个模型的actor对象,该对象就相当于一个在舞台上扮演着不同角色的演员,为“场外的观众”展现它的功能。在vtkActor中封装了不同的算法,可以对模型进行位置,方向,渲染特性(property),引用(reference),纹理等特质的设置,并且通过一个4*4的数学矩阵实现对模型的旋转、变换以及缩小放大等操作。

vtkLight:场景中的灯光控制类,通过该类我们可以设置场景中灯光的开关状态、灯光角度、灯光强度、灯光颜色、光源的照射方式(点光源或者平行光源)等功能,当设置好各项参数后直接添加到渲染器中即可使用,但是光源的使用只能在三维图形当中,二维图形不可使用。

vtkCamera:主要功能是将三维的图形在二维的视角下展现出来,可以定义观众的位

23

河北大学工学硕士学位论文

置、焦点、方向、透视效果、立体效果等属性。同样,也可以实现对场景中实体的旋转,平移,滚动等操作。

vtkProperty:主要功能是通过参数控制虚拟场景中对象的表现形式及真实感。在真实的世界当中物体都是三维的,并且具有泛光,漫反射,镜面反射,边缘颜色、灰度、反射强度、绘制样式(点,线框,表面),着色模式等各种不同的物理属性,每个参数都影响着对象在虚拟世界中实体的真实感。因此,vtkProperty类是虚拟场景真实感最关键的控制类。

vtkLookupTable:就是将映射器提供的数据映射为的颜色等信息。

vtkTransform:则是一个4*4矩阵的堆栈存储空间,控制平移、旋转、放大、缩小的操作。

vtkRenderer:场景中的渲染器,用来提供世界坐标系、观察坐标系、显示坐标系之间的转换,并管理光照、摄像机、绘制实体的位置等相关信息。当设置好渲染器后将其放置在渲染窗口(vtkRenderWindow)当中,便能够将场景显示出来。

vtkRenderWindow:管理显示窗口的属性及渲染器,设置窗口的大小及显示效果。这个基于图形引擎的图像处理窗口,是视窗系统中的图形用户交互界面,并且在一个显示窗口当中可以包含多个渲染器。

vtkRenderWindowInteractor:场景当中的数据交互控制类,通过该类我们可以完成鼠标、力反馈器等外部设备对场景中对象的旋转、放大、缩小等交互功能。

通过上述功能模块,本文进行了可视化渲染场景的搭建,并实现了虚拟场景中模型的可视化,其程序伪码如下:

a.创建Actor存储空间 vtkActor *triangulation = vtkActor::New();

b.将可视化模型中的图元信息封装成显示对象 triangulation->SetMapper(map);

c.设置可视化模型的各种物理属性 triangulation->GetProperty()

d.创建渲染器 vtkRenderer *ren1 = vtkRenderer::New();

e设置场景中的摄像机等元素 ren1->GetActiveCamera()->SetPosition();

f.创建渲染窗口 vtkRenderWindow *renWin = vtkRenderWindow::New();

g.为渲染窗口添加渲染器 renWin->AddRenderer(ren1);

h.设置交互模块

vtkRenderWindowInteractor *iren = vtkRenderWindowInteractor::New();

24

第3章 基于VTK框架的医学模型数据三维可视化

iren->SetRenderWindow(renWin);

ren1->AddActor(triangulation);

ren1->SetBackground();

renWin->SetSize();

i.启动渲染器,将模型可视化 renWin->Render();

3.4 模型拓扑结构的实现

3.4.1 三角剖分的概念

如上文所述,VTK具有多种数据格式。在医学领域,通常采用逆向工程等方式采集物体表面和内部的信息,并用非结构化点集(即散乱点集)描述物体的几何结构、拓扑结构、表面信息,形成三角网格[37],再通过PolyData数据结构将其可视化。因此,如何将非结构化点集剖分成三角网格,是可视化过程的关键算法。

三角剖分就是:假设P为空间中实数域上的有限散乱点集,利用这些散乱点构成封闭线段k的端点,K为k的集合,则该有限散乱点集P的三角剖分T=(P,K)剖分出来的图形符合以下三个要求[38]:

1.剖分出来的线段k,只包含端点而不含有点集中的其他散乱点。

2.剖分出来的线段互不相交。

3.所有线段构成的图形全部是三角形面片,并且所有的三角形面片是散乱点集P的凸包。如图3-9所示,为三角剖分图。

图3-9 三角剖分图

3.4.2 Delaunay三角剖分的概念及准则

上面介绍了三角剖分的概念,而在三角剖分领域应用最为广泛和最成熟的则是Delaunay三角剖分,它是三角剖分的一种形式,被广泛的应用在计算机图形领域,并利用Delaunay三角形创建物体的2D表面网格和3D的四面体网格。Delaunay三角剖分就

25

河北大学工学硕士学位论文

是散乱点集P中剖分出来的三角面片的边全部由Delaunay边组成,则该三角剖分就成为Delaunay三角剖分[39]。Delaunay边就是假设K中的一条边k,a、b为k的两个端点,如果满足经过a、b两个端点存在一个圆,且该圆内不包含散乱点集中的其他点,则称该边为Delaunay边。

Delaunay三角剖分必须满足空圆特性、最大化最小角特性两个准则[40]。

空圆特性:Delaunay三角网格中任意四点不可共圆,任何三角网格的外接圆内不包含散乱点集中的其他点,如图3-10所示为Delaunay空圆特性图。而如果在三维空间进行剖分,那么应满足剖分出来的空间四面体的外接球内,没有其他散乱点。

图3-10 Delaunay空圆特性

最大化最小角特性:经过散乱点集剖分出来的Delaunay三角面片中应该使三角形的最小角的角度值达到最大度数。这个意义上讲,Delaunay三角网是“最接近于规则化的“的三角网。具体的说是指在两个相邻的三角形构成凸四边形的对角线,在相互交换后,六个内角的最小角不再增大。如图3-6所示为最大化最小角特性图。

图3-11 最大化最小角特性

Delaunay三角剖分的优异特性:

1.最接近性:构成三角形的三条边各不相交,且三个顶点的距离最为接近

26

第3章 基于VTK框架的医学模型数据三维可视化

2.唯一性:不管从哪里开始进行剖分,最后形成的三角网格一致

3.最规则性:如果将三角网中的每个三角形的最小角进行升序排列,则Delaunay三角网的排列得到的数值最大

4.最优性:在两个相邻的三角形构成凸四边形的对角线,在相互交换后,六个内角的最小角不再增大

5.区域性:当组成三角形的一个顶点发生变化时,只与其关联的三角形发生变化

6.具有凸多边形的外壳性:三角网最外层的边界形成一个凸多边形的外壳

3.4.3 Delaunay三角剖分算法实现

在三角网格生成的算法当中,目前主要包括边扩展法、点插入法、递归分割法,当三角网格生成之后,再通过局部优化的方法,使网格更加均匀。Delaunay三角剖分算法也主要是应用了上述的算法原理,分三步实现网格的剖分[41]。

第一步,生成凸包

1.寻找数据集合中坐标排列最小的点,假定为I点。以I点为起点,任意连接点云数据中的任意顶点,设为J,形成矢量线段。

2.判断该线段的右侧是否存在其他顶点。若存在,则把距离该矢量线段最远的点K的值赋给J。直至矢量线段右侧不存在顶点为止,记录下该线段和对应的顶点。

3.将J的值赋给I,J取其他后续顶点。重复上述过程。直至形成一个闭合的多边形,组成点云的外围边界。

如图3-7所示的凸包生成图,P0就是一开始寻找的I点,P0和P1的连线是保留下来的第一条边。按照上述步骤依次找到线段P0P1、P1P2、P2P3、P3P4、P4P0,这样,通过第一步建立一个包含所有数据点的多边形,使得该多边形内任意两个点的连线都位于其内部,这个多边形就相当于点云的外围边界。

图3-12 凸包生成

27

河北大学工学硕士学位论文

第二步,形成初始网格

在得到数据外围边界的基础上,在该多边形中插入一个在多边形中心附近的顶点(假设该点为P5),通过该点与多边形各个顶点的连接线,我们可以得到一个初始的三角网面,如图3-13所示,为初始网格生成图。

图3-13 初始网格生成

第三步,形成最终网格

利用外接圆,将边界内的所有点,连接起来,形成冗余,不相互重叠的三角形面片,连接成最终的网格。

1.计算每个三角面片的外接圆

做三角形三个边的垂直平分线,三条垂直平分线的交点就是外接圆的圆心,以圆心到任意一点的距离为半径作圆,即为该三角面片的外接圆。

2.完成包含所有顶点的三角网格

插入一个新数据点P,寻找在已有的三角形中哪些三角形的外接圆包含了这个新加入的点,之后删除这个三角形中距离最近的一条边,连接周围的顶点,形成新的三角网格。如图3-14所示,为最终网格生成的四个步骤。

P3PP5P2P4P0

P1

(1)插入新点P (2)判断哪些外接圆包含该点

28

第3章 基于VTK框架的医学模型数据三维可视化

(3)删除边P4P5 (4)将P点与周围顶点连接

图3-14 最终网格生成

3.对网格进行局部优化处理

通过对两个共用一条边的三角形所组成的四边形进行判断,如果其中某一个三角形的外接圆包含该四边形的第四个顶点,那么要这个四边形进行对角线交换。这样就保证了Delaunay三角网格具备最大空外接圆和最小角最大化特性,保证了构建的三角网格是唯一的、最好的[42]。如图3-15所示,为局部网格优化过程。

图3-15 局部网格优化

3.5 手术刀模型可视化实现

在基于上述VTK框架平台的原理和Delaunay三角剖分算法的基础上,我们利用真实的三维手术刀的点云数据模型,实现了虚拟手术场景中手术刀模型的可视化。

3.5.1 实验运行环境

该VTK可视化平台采用了Windows XP Professional (SP3)的操作环境,而硬件系统,由于虚拟手术训练系统需要进行大量的图形运算和处理,因此,采用了显卡较高的普通PC机,其硬件配置如表3-1所示。

29

河北大学工学硕士学位论文

表3-1 硬件配置

硬件名称 型号

中央处理器 Inel(R) Pentium(R) Dual CPU E2180 2.0GHz

内存 2.00 GB

显卡 NVIDIA GeForce 8600 GT

硬盘 160 GB

3.5.2 模型可视化

1.通过vtkPoints类,我们将手术刀模型的散乱点数据转化为vtk可视化模型所需要的三维网格数据vtkPolyData,如图3-16所示为虚拟场景中的手术刀散乱点云数据,共7012个数据点。

图3-16 手术刀散乱点

2.利用德洛内三角剖分算法,将散乱点数据进行三角剖分,形成手术刀的三角网格模型,然后,利用vtkSmoothPolyDataFilter滤波器,对网格进行局部平滑处理,使网格看起来更加圆滑,美观。如图3-17所示,为三角剖分后的手术刀网格模型。

图3-17 Delaunay 三角剖分手术刀网格模型

30

第4章 可视化模型的网格削减优化

第4章 可视化模型的网格削减优化

4.1 概述

多边形是计算机图形学应用当中最为流行的图元,而在模型当中则是通过数以万计的多边形网格来描述其结构,而由于网格的数量巨大,对于网格的渲染和存储则不能够满足实际的要求。因此,通常都会对于网格模型进行特殊的处理,来削减网格的数量。而本文所采用的网格削减算法的目的就是为了在减少三角网格的整体数量的同时,并保持模型的原始拓扑结构和几何结构,减少模型的渲染时间,保证系统的实时性。

4.2 削减算法的原理

本文所使用的网格削减算法,就是通过设定好的削减条件,去筛选组成模型网格的所有顶点,如果满足削减条件,则删除该顶点及使用该顶点的所有三角形,反之,则不删除;当删除顶点后,模型网格上面会形成局部空洞,再利用三角化技术将空洞补好[43]。总体来讲,本文所介绍的网格削减算法分为三步:

1.描述局部顶点的几何结构和拓扑结构;

2.根据削减条件对顶点进行评估,确定该顶点删除与否;

3.将顶点删除后的空洞三角化,形成新的网格

4.2.1 结构描述

在算法运行中,首先,我们需要对网格顶点的拓扑结构和几何结构进行描述,然后将这些顶点分类,选择用何种削减条件进行评估。通常情况下,将组成网格的顶点分为简单型、复杂型、边界型、内棱型、内角型五种。如图4-1所示,为网格顶点拓扑结构。

简单型 复杂型 边界型 内棱型 内角型

图4-1 网格顶点拓扑结构

31

河北大学工学硕士学位论文

简单型就是顶点被三角形围成一个完整的圈,并且使用该顶点的边只能被两个三角形所使用;而如果边不是被两个三角形所使用或者顶点不是被所组成的圈中得三角形所使用则为复杂型;如果顶点在网格的边界上,并且是由半圈三角形组成,则为边界型;简单型顶点可以被划分为内棱型和内角型,如果相邻的两个三角形的二面角大于指定的角度,则说明存在特征边,如果顶点被两条特征边使用,则为内棱型;如果顶点被一条、三条或者更多特征边使用,则为内角型。

网格中的顶点被划分为这五种类型,只有复杂型的顶点不被删除,其余类型顶点则作为候选删除顶点,再通过第二步的削减条件对这些顶点评估,决定是否删除。

4.2.2 削减条件

通过算法的第一步结构描述,我们把模型的网格顶点分为五种类型,并确定出候选删除顶点。接下来的,则需要通过削减条件对候选删除顶点进行评估,确定出最终需要删除的顶点。在削减条件中,主要采用了测量顶点到平面的距离和测量顶点到边距离的评估方法。

如果顶点类型为简单型,采用中心顶点到平面距离的判定方法,中心顶点所到平面为平均平面,由外围顶点所确立,如图4-2所示,为简单型顶点削减原理。如果中心顶点到平均平面(average plane)的距离d小于指定距离值,则该顶点被删除,否则,被保留。

图4-2 简单型顶点削减原理

边界型和内棱型顶点使用顶点到边的距离作为判定准则,,其中心顶点所到边由创建边界或者特征边的两个顶点确立, 如图4-3所示,为边界型和内棱型顶点削减原理。如果中心顶点到该边的距离d小于指定值则被删除,否则,被保留。

32

第4章 可视化模型的网格削减优化

图4-3 边界型和内棱型顶点削减原理

4.2.3 三角化

在算法中删除顶点,形成局部空洞以后,我们则需要通过三角化对空洞进行弥补,来保持模型的拓扑结构和几何结构。而在三角化过程中,主要采用了递归循环分割的方法。首先,将形成空洞的顶点构建一个循环,然后将循环当中不相邻的两个顶点构造出一条分割线,沿着这条分割线再将循环中的顶点分割成两个新的循环。每一个新的循环按照上述方法继续被分割,直到循环当中只剩下三个顶点,通过这三个顶点便可以形成一个三角形,添加到空洞当中。

在具体的分割过程中,由于构成空洞的顶点是多维的,因此,算法通过构建一个分割平面来完成。 该分割平面经过分割线与平均平面正交,如图4-4所示,为分割原理图,形成两个不重叠的循环,再分别递归继续分割,直到循环当中再不能构建出分割线,则三角化结束。

图4-4 分割原理

4.3 手术刀模型的网格削减实现

由于手术刀模型的散乱点数据数量巨大,因此在可视化过程中,通过上述削减算法对其网格进行了削减和优化,减少组成模型三角网的网格数量,并且保证了其原有的拓扑结构和几何结构。

33

河北大学工学硕士学位论文

在上述削减算法中,我们可以通过设置算法的削减系数,从而实现控制削减的三角网格数量,达到在虚拟手术训练过程所需要满足的条件。当削减系数设置为0时,我们获得手术刀网格模型如图4-5所示,其削减前的网格数量为7012,而削减后的网格数据量为6608。

图4-5 削减系数为0的手术刀网格模型

当我们增大削减系数,将其设置为0.5,所获得手术刀网格模型如图4-6所示,此时的手术刀网格数量,由原来的6608减少到了3304,刚好是削减系数为0时网格数量的一半。

图4-6 削减系数为0.5的手术刀网格模型

34

第4章 可视化模型的网格削减优化

如图4-7所示,为削减系数设置为0.8时,所获得的图形,其网格数量为1320,从图中可以看出,该网格模型已经非常粗略,但是依然保持着完好的手术刀拓扑结构。因此,在我们实际应用过程中,可以根据具体的需求来设置恰当的削减系数。

图4-7削减系数为0.8的手术刀网格模型

35

河北大学工学硕士学位论文

第5章 虚拟手术系统平台的开发

为了使虚拟手术训练平台的软件实现能够具有开发效率高、跨平台、编程简单、结构灵活等特点,本文选用了著名的自由集成开发环境Eclipse以及Python语言作为整个软件的实现平台和编程语言。

5.1 开发环境简介

Eclipse是一个开源的可扩展平台。Eclipse本身只是一个框架,但是通过各种插件的组合,可以使得Eclipse根据自己所开发的项目自由添加,具有其它软件集成开发环境所不具有的灵活性。Eclipse在系统平台运行的过程中,除了内核,所有的模块都可以认为是插件。Eclipse平台的体系结构主要包括平台运行库、工作区、工作台、团队支持和帮助等几部分。如图5-1所示,为Eclipse的框架结构。

图5-1 Eclipse的框架结构

Eclipse起初只能够支持Java语言,但是目前通过安装插件的方式,Eclipse也能够支持C、C++和Python等计算机语言。在我们的虚拟手术训练系统平台中,则采用了Python作为主要的编程语言。Python是一种面向对象、直译式计算机程序设计语言,它的语法简单、功能类库强大,能够非常便捷地将C/C++等语言开发出来的功能模块连接在一起,是目前最为流行的编程语言之一。如图5-2所示,为基于Python语言的Eclipse开发界面。

36

第5章 虚拟手术系统平台的开发

图5-2 Eclipse开发界面

5.2 虚拟手术训练系统的实现

5.2.1 系统概述

结合上文所述的各项功能和运行机制,本文主要针对一个腹腔镜虚拟手术训练系统进行了模块的设计和调整。在该虚拟手术训练系统中,通过可视化处理对外部的医学数据进行建模操作,然后再通过各种算法的添加,使操作者可以通过外部的力反馈器控制虚拟场景内部的手术器械,模拟腹腔内部的手术行为。其整体实现框图如图5-3所示。

37

河北大学工学硕士学位论文

图5-3 虚拟手术训练系统实现框图

5.2.2 系统模块实现

在该虚拟手术系统当中,我们利用C++语言开发出平台中所需的各种算法模块,通过动态链接库技术,将这些算法模块添加到平台当中,通过wxpython模块创建整个系统的GUI交互界面,最后利用具有“胶水语言”之称的Python语言,将平台中的算法模块、GUI模块、交互模块等功能协调在一起,形成一个完成的工程,使得系统层次分明,编程简单,并拥有高度的灵活性和可靠的实时性。软件的流程图,如图5-4所示。

38

第5章 虚拟手术系统平台的开发

图5-4 软件流程图

下面对虚拟手术训练平台中各个模块进行简要的介绍

Classes模块:主要用来创建实际的类,定义了虚拟手术系统Atamai框架中所能提供的功能类的实现函数。整个虚拟手术训练系统的核心模块。

Data模块:主要用来存储虚拟手术训练系统中,模型等数据文件。

GUI模块:主要用来构建与用户交互的程序主窗口、虚拟场景中的左侧渲染、右侧渲染窗口以及各个窗口中所使用到的控件,并与GUIAdapter模块协调工作,获得窗口中所使用的控件。

GUIAdapter模块:构建实际中所使用的工具栏、滚动条、列表框等控件,并且将控件与对应的事件处理函数绑定在一起,与GUIController模块对应,来实现具体的控件功能。

GUIController模块:控件中所需要实现的具体功能的函数,根据GUIAdapter模块的需要与其他模块协调,调用其他模块的资源,完成控件功能。

GlobalVariation模块:主要用来保存系统的全局参数、向量等变量,方便其他模块调用和更改全局变量。

39

河北大学工学硕士学位论文

Model模块:主要用来存储手术刀、软组织模型、内窥镜等虚拟场景中所有的Actor对象,场景中所有Actor都由该模块进行管理。

Utility模块:主要用来向整个虚拟手术训练系统提供如坐标转换、向量计算、计时器等数学计算工具。

通过上述各个模块间协调工作,我们搭建起来的虚拟手术训练平台正常运行后的场景如图5-5和图5-6所示。图5-5为我们所构建的虚拟手术训练系统的全局场景,通过该视图我们可以观察到整个虚拟场景中所有模型的位置、状态,并且可以根据要求,调整场景中的视角以及对模型进行旋转、放大等功能。该视图能够让操作者对虚拟手术训练系统的空间感,有一个整体把握。

图5-5 虚拟手术训练系统全局场景

如图5-6则为虚拟手术训练系统的局部场景,通过该视图操作者可以观察到虚拟手术训练系统的内窥镜场景,通过内窥镜观察到场景中的模型位置和状态,真正感受到在真实手术状态下所产生的视野感觉,起到对操作者实施训练的目的。

40

第5章 虚拟手术系统平台的开发

图5-6 虚拟手术训练系统的局部场景

5.3 基于VTK的算法实现分析

通过模块交互协作,我们可以将整个虚拟手术训练系统搭建起来,而各个模块所要实现的功能则都是通过最底层的算法来实现。因此,我们通过在VTK中编写各个功能类,并打包到Python中调用,来最终实现虚拟手术训练系统中的所有功能。

第一步,编写类的实现功能文件

图5-7 类的源文件

41

河北大学工学硕士学位论文

图5-8 类的头文件

第二步,由于我们的整个工程都是通过Cmake配置完成的,所以将类的文件名添加到“”的文本文件中

图5-9 CmakeList

第三步,将类的头文件与源文件添加到所指定的目录中

第四步,用Cmake对整个VTK源文件进行编译即可,成功后我们自己编写的功能类便被编译进了指定的VTK的动态链接库中

42


发布者:admin,转转请注明出处:http://www.yc00.com/web/1709643209a1642494.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信