基于CT数据的三维重构.docx
- 文档编号:6598323
- 上传时间:2023-01-08
- 格式:DOCX
- 页数:25
- 大小:1.16MB
基于CT数据的三维重构.docx
《基于CT数据的三维重构.docx》由会员分享,可在线阅读,更多相关《基于CT数据的三维重构.docx(25页珍藏版)》请在冰豆网上搜索。
基于CT数据的三维重构
基于CT数据的三维重构
摘要
医学CT数据的可视化在临床上已经成为辅助诊断与治疗的重要手段之一,可视化是由一系列CT扫描后的二维图象数据重构出三维模型的技术手段,最后在计算机上显示出来。
医生能够通过观察三维图像来获取患者病变的组织信息,这极大方便了医生的诊断,提高了医学诊断结果的正确性和治疗的质量。
因此,可视化技术也成为近年来研究和应用的热点方向。
在此基础上,提出采用VTK库进行医学数据的可视化。
论文中重点研究了表面绘制和体绘制两种绘制方法。
表面绘制采用移动立方体算法(MarchingCubes)实现,体绘制则用光线投射算法(Ray-casting)实现,并且通过比较两种算法的结果讨论了他们的特点。
从重构模型中可以看出,VTK作为一种流行的图像处理和三维可视化工具,其功能是非常强大的。
关键词:
CT;三维重构;体绘制
3DReconstructionbasedonCTData
ABSTRACT
VisualizationformedicalCTdatahasbeenoneoftheimportantmethodstoaideddiagnosis,andtreatintheclinical.Thistechnicalcanreconstructthe3Dmodelsfromaseriesof2Dimages,thenthedataisbeingdisplayedbythecomputer.Thisgreatlyconvenientdiagnosisofthedoctor's.Andimprovedtheaccuracyofmedicaldiagnosistreatandthetreatmentquality.So,visualizationtechnologytobecomethehotspotofapplicationandresearchinrecentyears.
OnthisbasisitisproposedthatVTKlibraryisusedforvisualizationformedicaldata.Twotypesofrenderingmethod,surfacerenderingandvolumerenderingarestudiedinthepaper.Themarchingcubesalgorithmisusedforsurfacerendering,bothray-castingmethodsareusedforvolumerendering.Inadditional,bycomparingtwoalgorithmsandtheresultsobtainedtheircharacteristics.Thereconstructedresultsshowedthatasavisualizationtools,VTKhaspowerfulfunctionanditisveryeasytobeusedformedicalimagesprocessing.
Keywords:
CT;3Dreconstruction;Mompositedvolumerendering
目录
1绪论1
1.1课题的研究背景1
1.2国内外研究现况1
1.3论文的结构2
2可视化工具VTK3
2.1VTK的特点3
2.2VTK的安装3
2.2.1工具包的安装3
2.2.2Cmake的配置4
2.3VTK的结构和运行机制5
2.3.1VTK的结构5
2.3.2VTK的运行机制7
2.3.3利用VTK对数据进行可视化8
2.4小结9
3CT图像的三维重构9
3.1CT图像的获取与预处理9
3.2三维重构流程10
3.3三维重构的主要方法11
3.3.1面绘制法11
3.3.2体绘制方法14
3.4两种重构法的对比17
3.5小结18
4展望与总结19
参考文献20
致谢21
1绪论
1.1课题的研究背景
计算机断层投影技术(CT)是通过采集三维空间中某一个断层上的图像,利用一组断层图像以一定的间距叠放在一起就可以还原物体的三维信息。
计算机断层投影技术的应用带给了医学诊断革命性的变革,为医生提供了丰富的病人组织器官信息,帮助医生更加快速准确的判断患者的病变组织。
可是,医务人员所观察到的仍是二维图像,所得到的诊断结果仍然带有医生的主观判断,结论的准确性得不到保证,很大程度上取决于临床经验。
近年来,面向医学的三维可视化技术得到了快速发展。
通过三维重构医生可以对图像进行旋转、移动、剖面显示,使医生更为直观的了解人体内部复杂的结构。
所以它能够提供具有真实感的医学图像,便于医生从多角度、多层次进行观察和分析,该技术在辅助诊断、手术仿真、引导治疗方面都发挥着极为重要的作用。
1.2国内外研究现况
三维医学图像重构综合了计算机图像处理与分析、计算机图形学、生物医学工程技术。
近十多年来,在美国、德国、日本的著名高校中三维重构研究工作十分广泛。
(1)可视化人体工程
1988年到1994年间,美国国家医学图书馆开展了一项名为“可视化人体”的工程。
其目的是建立一个应用于临床医学和生物医学研究的数据库,它的数据采集与躯体断面的数字化照片图像、计算机断层图像和磁共振图像,都通过少量付费获得使用。
这极大方便了教学和科学研究。
VHP数据集的出现,标志计算机三维重构图像和虚拟现实技术进入了医学领域,从而大大促进了医学领域的发展。
(2)狗心脏CT数据显示
美国国家超级计算机应用中心(NCSA),它利用远程计算机并行资源,用体绘制技术实现CT扫描三维数据场动态显示。
其具体内容是显示一个狗的心脏跳动周期的动态图像。
(3)三维重构系统的发展
目前在国外有很多比较成熟的三维医学图像重建系统,其中包括美国宾州大学开发的3DVIEWNIX系统和德国汉堡大学开发的Voxel-Man系统等,但都是运行在UNIX环境下。
以色列埃尔新特公司,美国通用电器公司生产的螺旋CT扫描设备,均附有基于图形工作站的医学图像可视化系统,但它需要计算速度高,存储容量很大的计算机系统,很多系统还必须配有专用的硬件加速工具[1]。
在国内,清华大学,浙江大学,西北大学,中科院自动化所均作了大量研究工作,开发了一些实验系统。
从断层扫描数字图像精确重建人体解剖组织涉及到一系列图像采集和处理的科学和技术问题,如图像的分割、分类、配准、重建和显示等都是当前医学图像研究的重点。
1.3论文的结构
论文共分为四部分展开研究讨论。
第一部分为绪论,主要提到了题研究的背景与在医学中的应用,以及三维重构技术在国内外的发展情况。
第二部分主要介绍了可视化工具VTK。
从VTK的重构原理、特点、安装几个方面展开。
其中重点讨论了VTK的运行结构和运行机制。
第三部分研究的是三维重构的方法。
作为本文的重点,提到了两种重要的重构方法:
即面绘制法和体绘制法,最后对比两种方法的优缺点,使得研究结果更为直观。
第四部分为论文的展望与总结。
总结了论文的优势与不足之处。
2可视化工具VTK
VTK是美国Kitware公司开发的一套C++类库,是一个开放源代码、免费使用的软件包。
它最初设计的目的是作用于医疗领域,但是现在已经广泛应用于计算机图形学、图像处理和可视化等领域。
VTK利用面向对象的建模技术,设计和实现开放的三维可视化工具箱,它被设计成一个工具包而不是一个系统,这使它能嵌入任何一种开发工具中。
VTK包括了众多优秀的图像处理和图形生成算法,目前已经成为最流行图像应用软件开发平台。
2.1VTK的特点
VTK是一个面向对象的可视化类库,具有强大的可视化功能和图像处理功能。
它以用户使用的方便性和灵活性为主要原则,具有如下的特点[2]:
具有强大的三维图形功能。
VTK既支持体绘制,又保留了传统的面绘制,在极大的改善可视化效果的同时又可以充分利用现有的图形库和图形硬件。
VTK的体系结构使其具有非常好的流(streaming)和高速缓存(caching)的能力,在处理大量的数据时不必考虑内存资源的限制。
VTK能够更好的支持基于网络的工具,比如Java和VRML。
随着Web与Internet技术的发展,VTK有着很好的发展前景。
能够支持多种着色,如OpenGL等。
VTK具有设备无关性,使其代码具有良好的可移植性。
VTK中定义了许多宏,这些宏极大的简化了编程工作并且加强了一致的对象行为。
VTK具有更丰富的数据类型,支持对多种数据类型进行处理。
既可以工作于Windows操作系统,又可以工作于Unix操作系统,极大的方便了用户的使用。
2.2VTK的安装
2.2.1工具包的安装
VTK需要在VisualStudio2008环境下运行,所以计算机需提前安装好该软件,接下来就是下载VTK相关的工具包:
cmake-2.8.2-win32-x86.exe;vtk-5.6.0-win32.exe;vtk-5.6.0.zip;vtkdata-5.6.0.zip。
双击vtk-5.6.0-win32.exe运行程序,选择安装路径为C:
\vtk,安装后会产生vtk文件夹,文件夹里还包括bin子文件夹。
将vtk-5.6.0.zip解压到C:
\vtk文件夹下。
双击vtkdata-5.6.0.zip运行程序,将其解压到C:
\vtk\vtkdata下。
双击cmake-2.8.2-win32-x86.exe运行程序,选择安装路径为C:
\CMake。
设置变量,使VTK数据文件和程序能够匹配。
在XP系统下,控制面板->系统->高级->环境变量->新建,添加variable=VTK_DATA_ROOT,value=C:
\vtk\vtkdata。
2.2.2Cmake的配置
设置soursecode目录为C:
\vtk\vtk,build目录为C:
\vtk\bin\。
接下来单击configure按钮,选择使用的编译器,然后cmake会描所需要的文件,之后就可以修改cmake选项了。
需要修改的有以下几个参数:
BUILD_EXAMPLES:
选择ON
BUILD_SHARED_LIBS:
选择ON
VTK_USE_GUISUPPORT:
选择ON
参数改完之后,继续点击Configure。
继续修改参数:
VTK_USE_MFC选择ON
至此,Cmake配置完成,配置图如2-1:
图2-1Cmake配置图
经过上述步骤后,在C:
\vtk\bin文件夹下会生成vtk.dsw文件,用已安装好的VisualStudio打开,点击工程,生成解决方案。
此操作用来来生成可执行程序以及软件运行时所需要的控件。
当出现AllBuild时,解决方案完成。
这里需要提到一点,CMake是开源的跨平台自动化构建系统,可以产生多种构建文件,如:
C++环境下的projects/workspaces。
它使得开发者可使用各种平台上的原生构建系统,这是CMake的重要优势。
CMake并不直接构建出最终的软件,而是产生标准的构建档,然后再依据各自平台的构建方式使用。
这使得熟悉某个平台集成开发环境的开发者可以用熟悉的方式构建软件。
图2-2VisualStudio2008下生成解决方案
2.3VTK的结构和运行机制
2.3.1VTK的结构
VTK有两种不同的对象模型:
图像模型和可视化模型。
(1)图像模型:
采用了3D图形系统简单易用的特点,同时也采用了图形用户接口的方法。
整个图形模型表现3D图形系统的本质特点,主要有9类基本对象:
渲染控制器,渲染器,灯光,渲染窗口,照相机,角色,特性,映映射,变换。
渲染控制器定义与设备无关的坐标计算方法,并创建渲染窗口。
渲染窗口管理显示设备上的窗口,一个或多个绘制方法可在渲染窗口上创建一个场景渲染窗口是用户图形界面,其中包括设置渲染窗口的大小,产生立体显示效果等方法。
渲染器管理光源照相机和绘制对象等位置和属性,提供了三类坐标系之间的转换。
灯光可在场景中照亮绘制对象,调用参数控制灯光的状态、照射角度与强度、颜色等。
照相机是定义观察者的位置,聚焦点和其他相关属性,参数可有调用者根据需要设置。
角色代表渲染场景中的绘制对象实体,通过参数调节设置角色的位置、方向和渲染特性。
属性说明几何物体的一些特性,对参数跟硬件解释说明,包括实现三维图形真实感。
映射指定了渲染数据和基本图元之间的关系,一个或多个角色可同时使用相同映射。
变换是一个放置4x4变换矩阵的堆栈,可以进行各种操作。
下面用面向对象技术的对象模型图表示VTK框架结构,如图2-3所示。
图2-3VTK的对象模型图
(2)可视化模型:
利用数据流程模型,由过程对象和数据对象组成。
过程对象包括可视化流程的模块及算法,数据对象包括数据处理及当数据在网络中流动时对数据进行的操作。
过程对象又分为:
源对象,过滤器,映射。
源对象是可视化流程的起点,源对象包括从文件中读入及程序内部产生的数据,过滤器接收从源对象来的输入数据,处理数据及输出数据,映射指定了基本图元与数据之间的接口,接收过滤输出的数据,并把数据映射为基本图元。
图2-4VTK的可视化模型图
2.3.2VTK的运行机制
VTK采用的是流水线(pipeline)的机制[3]。
根据所获得的原始数据的类型以及所要得到的显示结果,我们可以选择适当的算法并构建起自己的可视化流程。
在用可视化工具VTK对体数据进行可视化的过程中:
按照所要处理的原始数据类型不同选择不同的类,vtkObject是VTK类库的基类,它为整个可视化流程提供基本的法,vtkSource是vtkObject的派生类和vtkFilter的父类,它为整个可视化流程的开始比如读取数据等定义具体的行为和接口。
过滤器接收数据源中的数据,进行各种不同的过滤操作。
vtkFilter是vtkSource的派生类,它对数据进行各种处理,将原始数据经过各种过滤器的处理后,转换为可以直接用某种算法模块对其进行处理的形式。
映射将处理过的适当数据形式映射为几何数据,vtkMapper是vtkObject的派生类,它经过各种filter处理后的应用数据映射为几何数据,为原始数据与图像数据间定义了口。
角色将可视化的数据在窗口中表现出来,在VisualizationToolkit中任何可视化的数据都是通过角色在窗口中表现出来的。
vtkActor类用来表达绘制场景中的一个实体,它通过SetMapper方法将几何数据的属性告诉角色。
最后通vtkRender类将结果在窗口中显示出来。
这样,依据要处理的数据的类型和想要实现的功能,多种类型的Sources,Filters和Mappers就连接了起来。
图2-5可视化运行机制
2.3.3利用VTK对数据进行可视化
Tcl/Tk工具指令语言与工具箱是一个命令描述与图形界面描述工具。
Tcl包由该语言描述解释器构成,解释器用于嵌入应用程序中。
Tk是一个图形工具集,是Tcl的图形扩展。
Tcl/Tk是以解释方式执行的,只需提供各种平台上的解释器,Tcl/Tk程序描述的图形界面就可以统一表达,因此在开发多平台图形用户界面时,使用Tcl/Tk非常方便。
VTK可以借助Tcl实现了一个可视化应用程序[4]。
packagerequirevtk//加载vtk和vtkinteraction包
packagerequirevtkinteraction
vtkConeSourcecone//生成一个数据源并设置它的属性
coneSetHeight3.0
coneSetRadius1.0
coneSetResolution10
vtkPolyDataMapperconeMapper//生成一个映射,并接收数据源产生的数据
coneMapperSetInput[coneGetOutput]
vtkActorconeActor//生成一个角色,并用来绘制图形
coneActorSetMapperconeMapper
vtkRendererren1//生成渲染器和渲染窗口
ren1AddActorconeActor
ren1SetBackground0.10.20.4
vtkRenderWindowrenWin
renWinAddRendererren1
renWinSetSize300300
vtkRenderWindowInteractoriren//在渲染窗口检测出现的VTK事件
irenSetRenderWindowrenWin
vtkInteractorStyleTrackballCamerastyle//设置交互样式
irenSetInteractorStylestyle
irenAddObserverUserEvent{wmdeiconify.vtkInteract}//初始化交互窗口
irenInitialize
图2-6VTK重构锥形效果图
2.4小结
本章对VTK的安装进行了展示,对安装过程中重要的CMake配置环节进行了详细介绍。
并且对VTK框架结构与运行机制进行了分析,研究了各个部分的功能,展示了框图。
对VTK有所了解后,接下来需要介绍的就是本文的重点三维重构的流程。
3CT图像的三维重构
3.1CT图像的获取与预处理
目前比较先进的扫描设备是螺旋式CT扫描,如图3-1所示。
它由三部分构成:
X光断层扫描装置、微型电子计算机和图像显示存储系统。
其原理是人体向前做匀速运动,而X光断层扫描装置围绕人体做圆周运动,人体每前进一个单位距离,X光断层扫描装置采集一个切片的厚度,切片的多少由扫描频率决定[5]。
CT图像的本质是利用X射线的衰减强度获得数据,从而为诊断提供依据的,表达式为3-1所示:
(3-1)
其中
表示扫描后的衰减强度,
,表示入射的X线强度,
为衰减系数,
为穿透人体的距离。
图3-1螺旋CT设备
CT医学图像与普通图像不同,除了图像格式上的区别,还在于CT图像具有模糊性和不均匀性。
因此为了达到更好的展示效果,需要对CT图像进行预处理工作。
常用的方法有滤波、插值、增强、恢复以及旋转、平移等几何变换技术。
滤波、插值、增强、恢复技术可以消除CT数据中的噪声,提高图像的质量,目的是突出感兴趣的组织结构,方便诊断观察。
而旋转、平移等几何技术可以从多角度观察医学图像。
3.2三维重构流程
利用VTK实现CT图像的三维重建,从算法和数据结构来看,就是一个读取数据和图形显示问题。
对于已获取的CT图像,因为它们符合DICOM3.0标准,读取它们相对容易。
编程时只要设定必须的参数,就可以实现对单张CT图像乃至CT图像序列的读取。
需要说明一下,该部分被封装为Reconstruction类的一个成员函数Set-DCMDirectory
(char*sdir),其中参数sdir为DICOM文件的文件夹路径。
另外,许多图像处理软件不支持DICOM格式,因此系统还实现了DICOM文件到BMP文件的转换,以便为其他图像处理软件提供医学影像资料[6]。
具体流程为:
①读取并显示DICOM图像文件。
因医学图像的存储和交流格式标准为DICOM,因此系统支持DICOM标准。
读取DICOM文件的代码如下:
vtkDICOMImageReader*mdcmreader;
m_dcmreader→SetDirectoryName(sdir);
m_dcmreader→Update();
②图像预处理是为了消除由于各种垫子期间的随机扰动及周围环境的印象给DICOM格式的图片带来的噪声与失真,包括二维图像滤波、图像的层间插值。
③图像分割就是把图像分成不同特性的小区域,并对感兴趣的目标进行提取的过程。
实际上就是把图像中具有某种特殊涵义的不同区域区分出来,这些区域是互不相交的,每个区域都满足特定区域的一致性。
④重建得到三维模型后,辅助功能模块主要完成对模型的三维视角变换操作,并根据交互式的区域选择,显示不同部分的组织,利用鼠标操作或键盘输入实现定量的物体分离功能。
三维重构系统的功能框图如3-2所示。
图3-2三维重构系统的功能框图
3.3三维重构的主要方法
医学图像的三维重建主要是指对CT和MRI数据进行处理,方法主要有面绘制和体绘制两大类。
面绘制技术首先由三维空间数据场构造出中间几何图元,然后由计算机图形学技术实现画面绘制。
最常见的几何图元是平面多边形,三维表面抽取的常用方法是从体数据中抽取三维表面,最有代表性的是MarchingCubes(MC)方法。
面绘制方法可以产生比较清晰的等值面图像,而且可以利用图形硬件实现绘制功能,加快图形的生成和变换的速度。
体绘制则并不构造中间几何图元,直接由三维数据场产生在屏幕上显示的二维数据。
它对每一个体元赋以不同的颜色、透明度属性,在观察平面上进行投影,生成图像。
3.3.1面绘制法
面绘制方法由三维数据场中构造出等值面找出经过该等值面的体元(Cubes),通过旋转和变换光照效果来生成高质量的三维图像。
其中最常用的是移动立方体算法(MarchingCubes)。
该算法是将数据体中位于两个相邻面上的8个相邻的体素构成一个立方体[7],然后逐个处理数据场中的立方体,分类出与等值面相交的立方体,采用插值计算出等值面与立方体边的交点,根据立方体每一顶点与等值面的相对位置将等值面与立方体的交点按一定方式连接成等值面,最后由计算机图形学技术实现画面的绘制。
图3-3面绘制法三维重建流图
移动立方体算法实现过程:
建立一个vtkDICOMImageReader读取对象,通过其SetDirectoryName方法设定DICOMCT断层文件的目录,调用Update方法将数据读入。
相关程序如下:
vtkVolume16Reader*v16=vtkVolume16Reader:
:
New();
v16->SetDataDimensions(64,64);
v16->SetDataByteOrderToLittleEndian();
v16->SetFilePrefix("G:
\\CT\\headsq\\quarter");
v16->SetImageRange(1,93);
v16->SetDataSpacing(3.2,3.2,1.5);
//读取ct数据
分别对骨骼和皮肤建立MarchingCubes算法对象vtkMarchingCubes。
利用其SetValue方法设定灰度阈值,进行表面抽取。
相关程序如下:
vtkImageCast*readerImageCast=vtkImageCast:
:
New();
readerImageCast->SetInputConne
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 CT 数据 三维