基于VTK的医学图像三维可视化的研究与实现
- 格式:pdf
- 大小:196.34 KB
- 文档页数:3
基于VTK的医学图像可视化三维重建
赵奇峰;郭宝龙;张磊
【期刊名称】《计算机技术与发展》
【年(卷),期】2009(019)006
【摘要】医学三维数据场可视化是当前科学计算可视化应用的重点,具有重要的学术意义和应用价值.体绘制是该技术的一个主要的方法.在VTK(Visualization Toolkit)类库提供可视化与显示功能的基础上,主要讨论了光线投射算法进行体数据的绘制的特点,同时采用了包围盒技术改善了光线投射算法的绘制速度.实验结果表明,图像的质量在没有受到影响的前提下,图像的绘制速度得到了大幅度的提高,同时证明了VTK是医学三维数据场可视化的有力工具.
【总页数】4页(P39-42)
【作者】赵奇峰;郭宝龙;张磊
【作者单位】西安电子科技大学,机电工程学院ICIE研究所,陕西,西安,710071;西安电子科技大学,机电工程学院ICIE研究所,陕西,西安,710071;西安电子科技大学,机电工程学院ICIE研究所,陕西,西安,710071
【正文语种】中文
【中图分类】TP391.41
【相关文献】
1.基于VTK的医学图像三维重建的研究与实现 [J], 贺锐钢;杜红
2.基于VTK的医学图像三维重建研究与实现 [J], 马骁;刘光明;周越;火克华
3.基于VTK的医学图像三维重建及其可视化 [J], 欧海峰
4.一种基于VTK的医学图像三维重建 [J], 胡亨伍;张俊兰;李敏
5.一种基于VTK的医学图像三维重建 [J], 胡亨伍; 张俊兰; 李敏
因版权原因,仅展示原文概要,查看原文内容请购买。
基于VTK的医学图像三维可视化实现郑小中;周振环;赵明【摘要】3D visualization of medical image on the platform of visual studio 2008 is realized by using visualization toolkit, focusing on how to use Marching Cubes algorithm and ray-casting algorithm for 3D reconstruction with all kinds of slices, such as DICOM slices and so. Interactive surface developed by MFC and summary of data preprocessing and optimization during the reconstruction are also discussed.%利用VTK可视化工具包在Visual Studio2008平台上实现了医学序列图像三维的可视化.在对三维数据的预处理和优化基础上,在MFC实现的可交互界面上,用Marching Cubes(立方体移动)算法和Ray—casting(光线投射)算法对DICOM等格式的切片进行三维重建.【期刊名称】《深圳职业技术学院学报》【年(卷),期】2011(010)005【总页数】9页(P17-25)【关键词】VTK;MFC;DICOM;立方体移动;光线投射【作者】郑小中;周振环;赵明【作者单位】五邑大学,广东江门529020;深圳职业技术学院,广东深圳518055;深圳职业技术学院,广东深圳518055;深圳职业技术学院,广东深圳518055【正文语种】中文【中图分类】TP317.4尽管计算机断层扫描(CT)及核磁共振(MR)已广泛应用于疾病诊断,但是这些医疗仪器只能提供人体内部的二维图像,医生只能凭经验由多幅二维图像对病灶的大小及形状进行估计,这给诊断带来了困难[1].此外,从宏观上来看,国内已经具备了医疗设备的生产能力,但许多医疗软件仍需高额从国外进口,致使大多数的医疗单位难以承受,对进口软件的维护成本较高,也增加了患者的负担.从微观上来看,用于图像处理的软件占据统治地位的仍旧是OpenGL和DirectX,而这 2种技术在使用上却存在着缺陷.例如OpenGL是开源的,但因其主要用于底层算法的实现,所以工作量及难度都比较大;而 DirectX又只限于Windows图像处理的开发,所以制约着图像处理开发的进步发展.本文以VTK(Visualization Toolkit)为基础,在Windows平台上,以Visual Studio 2008为开发平台,结合MFC(Microsoft Foundation Classes),对多种格式的二维切片、Marching Cubes算法和Ray-casting算法在VTK中的实现及优化进行研究,并实现了面绘制和体绘制.1 可视化工具包VTK1.1 VTK简介VTK(Visualization ToolKit)是一套用于计算机图形可视化及图像处理的开源的、面向对象的工具包,1993年由美国 GE公司研发部的 Will Schroeder和Ken Martin作为开源软件首次发布,并支持多平台(如Windows、Unix和Linux)的软件系统[2].VTK可以利用已成为工业标准的三维图形图像绘制库 OpenGL,使人们可以有效地利用各种支持OpenGL标准的显卡进行硬件加速处理,且实践证明 VTK在三维化的效果更好、速度更好.此外,VTK利用面向对象的编程模式大大简化了用OpenGL开发的代码复杂性,使编程更加简洁易读,代码的开源性也在不断地促使工具包的丰富和完善,用户可以根据自己的编程能力编写出适合自己的功能模块,其强大的功能已被医疗软件开发商和研究机构所认可.1.2 VTK的程序框架结构VTK主要由图形模型和可视化模型构成:1)图形模型主要包括的类有:vtkRenderWindow(绘制窗口)、vtkRenderer (绘制器)、vtkLight(光源)、vtkCamera(照相机)、vtkActor(角色)、vtkProperty(特征)和Transform(变换).2)可视化模型采用数据流(Dataflow)方法将各个对象连接成可视化网络结构,最终形成流水线管道(Pipeline),管道是贯穿于VTK的一个核心内容,其每个对象将负责相应的数据处理或用户输入等操作.可视化模型的最高层次是数据源,因为VTK并不善于绘制复杂的图形结构,所以其数据一般来自自带的简单数据集(Simple Source)或者外部的图像文件;将数据源传送给各种数据处理对象(如等值面的提取,表面法线的生成等滤波器或函数),对数据进行加工处理;最后以一个或多个映射器(Mapper)将数据集映射为图库中对应的图形几何,以此结束管道.映射器的输出主要用于可视化或写入等操作.数据流中各个对象的处理联系紧密,尤其是滤波器、读/写图像等操作,所以可以由该对象的 Update()方法实时触发执行,以便为下步操作提供准备.图1展示了VTK的框架结构及可视化流水线[3].1.3 VTK的图像读取器目前医学影像设备种类繁多,成像原理及图像格式不尽相同,给图像处理带来了困难.VTK不仅提供了DICOM图像文件读取的接口,还提供了其他类型图像的接口,并可以用vtkImageShiftScale将其他数据类型的图像转换为VTK可以识别的unsigned short类型或者unsigned char类型,极大地方便了图像显示和处理操作.图2展示了VTK提供的5种图像读取器的类关系图及其主要成员函数,其中vtkVolume16Reader读取的图像主要用于三维可视化操作,其他4种既可读取单个图像也可以读取多个切片图像.·SetFilePrefix()和 SetFilePattern()共同设置读取文件的目录及文件名前缀格式,vtkDICOMImageReader的 SetDirectoryName()只需指定切片的读取目录即可(如果切片文件名没有特殊的扩张格式),如果每个切片有规范的文件名格式,需要采用SetFilePattern()予以说明[2].例如:读取文件夹 BMPFiles下切片格式为BN1.BMP BN2.BMP...BN256.BMP的 BMP文件时,除了SetFilePrefix()设置为“.../BMPFiles/BN”外,还需将SetFilePattern()设置为“%s%d.BMP”.图1 VTK框架结构及可视化流程图2 读取器类结构·SetDataExtent()用于指定切片的大小(前4个参数)和读取切片的范围(后2个参数);·SetDataSpacing()用于设置X,Y,Z轴方向上像素的间距. ·SetDataImageRange()主要用于设置读取的文件范围,常用于vtkVolume16Reader.·SetDataOrigin()设置数据集的中心坐标.·SetFileNameSliceOffset()用于设置从某个切片开始读取,默认值为 1,即从第一切片读取切片序列.·SetFileNameSliceSpa cing()用于设置读取有规律的切片,如将其设置为 2时,将读取切片filename.1,filename3,filename5....默认值为 1即连续读取切片序列.·SetDataDimension()用于设置切片的尺寸.2 VTK与MFC的接口本文以 Visual Studio 2008为例,首先确保VTK同Visual Studio2008已正确配置;其次将程序中用到的类库添加到“项目→属性→配置属性→链接器→输入→附加依赖项”中(注意每个类库需要附带扩展名.lib,且类库之间以空格隔开).此外,VTK与MFC的常见接口有两种:第一种方式可以采用 vtkRenderWindow类中的 SetParentId()函数设置绘制窗口的父窗口句柄,一般为 MFC中某控件的句柄(如staticText、当前视图、对话框等),以此将VTK的绘制窗口定位并覆盖在MFC指定的控件上,如renWin→SetParentId(hwnd).但由于该操作主要实现在控制台程序中,所以不仅无法实现MFC的鼠标响应和消息的传递等交换功能,而且还限制了后续代码的扩展,所以并不提倡该方法[3].第二种方法采用MFC的数据处理(文档类实现)和显示(视图类实现)分离机制,充分利用面向对象的编程风格和MFC的消息机制及类库函数,可以实现友好的交互界面.该操作用到的头文件主要有 vtkWin32OpenGLRenderWindow.h,vtkWin32 RenderWindowInteractor.h,vtkMFCWindow.h,对应的类库为vtkMFC.lib.该功能的实现需要解决如下3个主要问题:1)绘制窗口:通过vtkMFCWindow *m_vtkMFC=new vtkMFCWindow(this)将VTK的绘制窗口指定到MFC的视图窗口(该操作在视类中进行设置,所以直接用this即可,其他窗口对象也可以),并通过代码m_vtkMFC→GetRenderWindow()→Add Renderer(m_Renderer)将绘制器添加到绘制窗口中现实对角色的绘制操作.2)交互:利用代码m_vtkMFC→GetInteractor()→SetInteractorStyle(style)设置利用鼠标交互的方式,可以实现放缩、移动、旋转等操作.3)重绘:在视图类 OnDraw()函数中添加代码m_vtkMFC→DrawDC(pD C),当对绘制窗口(视图窗口)进行交换时,实现对绘制窗口进行重绘操作[4].本程序主要是基于MFC的FormView框架结构,首先在视类头文件中声明4个函数,void readFile()、void initSlider()、void setSlider()、void Draw() 分别实现切片的读取、滑块的初始化、滑块值的设置、数据流的实现;然后在OnInitialUpdate()中对程序启动时进行初始化,即调用readFile()、initSlider()、Draw();最后在各个滑块的OnNMReleasedcapturesclar1op()消息中对Draw进行调用,实现交互绘制.参考代码如下:3 三维可视化的实现三维可视化主要包括面绘制与体绘制2种.3.1 面绘制面绘制是采用分割技术对一系列的二维图像进行轮廓识别、提取等操作的过程,最终还原出被检测物体的三维模型,并以表面的方式显示出来.图3展示了面绘制的数据流结构.图3 面绘数据流3.1.1 提取等值面(Marching Cubes)对图像进行进行提取等值面操作(分割操作),不仅需要选用合适的分割算法,还需要了解被分割对象的组织结构,如:皮肤和骨骼的密度是不同的,并且头盖骨同其他部位的骨头密度也显然不同,根据不同组织具有不同的密度(或者灰度值)进行等值面提取操作.经典的Marching Cubes算法的基本原理:首先,假定原始数据是离散的三维空间规则数据场,用于医学诊断的断层扫描仪(CT)及核磁共振仪(MRI)等产生的图像均属于这一类型;其次,为了在这一数据场中构造等值面,给出所求等值面的值;最后,找出等值面经过的体元位置,求出该体元内的等值面并计算出相关参数,以便由常用的图形软件包或图形硬件提供的面绘制功能绘制等值面.由于该方法是逐个体元依次处理的,因此被称为移动立方体法(Marching Cubes).用MC方法求等值面的步骤为:①将三维离散规则数据场分层读入内存;②扫描两层数据,逐个构造体元,每个体元中的8个角点取自相邻的两层;③将体元每个角点的函数值与给定的等值面做比较,根据比较结果,构造该体元的状态表;④根据状态表,得出将与等值面又交点的体元边界;⑤通过线性插值方法,计算出体元边界与等值面的交点;⑥利用中心差分方法,求出体元各角点处的法向,再通过线性插值方法,求出三角形各定点处的法向;⑦根据各三角面片个顶点的坐标值及法向量绘制等值面图像.VTK主要提供了两种提取等值面的类vtkContourFilter滤波器和封装了 MC (Marching Cubes)算法类vtkMarchingCubes,最终通过设置SetValue (arg1,arg2)实现对某轮廓组织的提取,其中arg1是提取的标号一般从0开始,arg2是提取等值面的值,所以可以同时实现多个等值面的提取操作,但由于不同组织的等值信息难以分类,所以我们在这里采用滑块(Slider Control)进行调节.3.1.2 数据处理根据需要可以对读取的图像进行各种预处理或者优化操作,例如在 VTK 中通过vtkPolyDataNormals在等值面上产生法向量;用vtkStripper在等值面上产生纹理或三角面片等.最终实现图4等值面的绘制操作.程序的核心代码如下:3.1.3 面绘制实验结果实验数据来源于某骨质医院和 VTK数据包.图4采用读取器vtkVolume16Reader 读取93张64*64大小的头部CT数据,将vtkContourFilter设置为皮肤灰度值为500的绘制效果;图5用vtkDICOMImageReaderd读取34张胸腔DICOM图像,图像大小为512*512,vtkMarchingCubes设置骨骼灰度值150的绘制效果;图6利用257张BMP格式的头颅图像,图像大小为256*256,用vtkBMPReader读取数据,vtkMarchingCubes设置等值为80的绘制效果;图7为利用1878张大小为 587*341的 JPG格式人体骨骼图像,用vtkJPEGReader读取标号 1001到 2878的图像,vtkContourFilter设置等值为100的绘制效果. 3.2 体绘制体绘制不同于面绘制,面绘制需要生成中间几何图元,而体绘制是直接绘制,所以内存的需求较面绘制小,但是由于每切换一个视角需要重新对所有的像素点进行颜色、透明度等计算,所以需要的时间又比面绘制的长.本系统利用光线投射算法进行体绘制,光线投射算法的基本原理如图8所示.图4 头部皮肤效果图5 胸腔骨骼效果图6 头骨效果图7 人体骨骼效果图8 光线投射算法基本原理流程图1)数据预处理:常见有2种操作,一种是类型的转换,通过vtkImageShiftScale 将不同类型的数据集转换为 VTK可以处理的数据;另一种是剔除冗余数据,例如通过vtkStripper防止无效的旧单元的存在,提高绘制速度.2)数据分类:三维数据场中的数据是三维空间中多种不同物质的测量结果或计算机数值计算的结果.例如,在人体或动物的CT扫描图像中,对应用骨骼、肌肉和皮肤等不同密度的物质,就有不同的CT值,在CT图像中表现为具有不同的灰度值.为了在最终的可视化图像中以不同颜色正确地表示出共存的多种物质的分布,就需要对数据进行分类,找出数据与不同物质之间的对应关系;为了在最终图像中以不同颜色表示单一物质的不同属性,如温度、密度等,也需要进行分类.所以分类是整个可视化算法非常重要的一步,但是分类又是非常困难的,又如,人的头部同一组织结构往往具有不同的灰度值,而同一灰度值的像素又有可能属于不同的组织结构.因此,尽管图像处理和模式识别技术对物质分类问题进行了多年研究,但仍然只能对简单的或特定的三维数据场进行自动分类.本范例,为了方便寻找坡度或不同组织,采用滑块Slider Control进行实现.3)给数据点赋颜色值:将分类后的组织信息分别予以不同的颜色,便于图像分析是非常必要的,VTK 采用 vtkColorTransferFunction 类的AddRGBPoint()函数将不同组织信息转换为不同的颜色.4)给数据点赋不透明度值:在体绘制中,需要显示三维数据场的内部结构,因而需要生成具有透明度的图像.因此对每个体元不仅要根据分类结果赋予不同的颜色值(R,G,B),而且还要赋予不透明度值α.α=1表示该体元完全不透明;α=0则表示完全透明.体元颜色值由实现, iP为第i种物质所占的百分比, ),,( iiiiii BaGaBaCi= 为第i中物质的颜色值.VTK采用分段函数vtkPiecewiseFunction类的AddPoint()函数实现不同组织透明度的设置.5)光照效应计算:VTK中采用光线函数 vtk-VolumeRayCastCompositeFunction进行投射,最终用vtkVolumeRayCastMapper进行光效应等的计算.6)图像合成:主要通过设置 vtkVolume的SetMapper()和 SetProperty()函数将上述类型进行合成.VTK中对应上述的核心代码如下:面绘制图像5和6,经滑块调节后体绘制效果见图9,10,得到较高的绘制效果. 图9 头部光线投射重建效果图10 胸腔光线投射重建效果参考文献:[1] 齐敏,位军,陈世浩.M Lehmpfuhl.基于 VTK的医学三维可视化分析系统[J].计算机仿真,2008,25(3):242-245.[2] 骆建珍,林财兴,孟令旗,等.DICOM医学图像三维可视化系统的研究[J].机电一体化,2007,13:45-48.[3] 罗火灵,许永忠,陈世仲.基于VTK和MFC的医学图像三维重建研究和实现[J].生物工程学进展,2010,31(1):23-28.。
第26卷第1期 长春工业大学学报(自然科学版) Vol126,No.1 2005年3月 Journal of Changchun University of Techonology(Natural Science Edition) Mar12005 文章编号:100622939(2005)0120042203基于VTK的医学图像三维重建系统的设计与实现牛刚, 林晓梅, 白昱,李琳娜(长春工业大学电气与电子工程学院,吉林长春 130012)摘 要:V T K(The Visualization Toolkits)是一个基于面向对象方法设计的、功能强大的可视化和图形图像处理的工具箱。
文中针对医学图形图像处理的需要和特点,利用V T K的图像处理和可视化及图形显示功能,用面向对象的方法设计和实现了一个医学图形图像处理系统Med3REC,为虚拟现实和医学图像归档及传输系统的开发奠定了基础。
关键词:虚拟现实;类;图像处理;可视化;DICOM3.0标准;面向对象;三角面片中图分类号:TP391141 文献标识码:A 医学图形图像处理系统离不开医学图像,它包括计算机断层扫描图像(Comp uted Tomo2 grap hy Image,CT)、超声波(Ult rasonograp hy, U S)、磁共振图像(Magnetic Resonance Image, MRI)和核医学图像(Nuclear Medicine Image, NM I)等。
虚拟外科手术(Virt ual Surgery Operation, VR)是计算机虚拟现实(Virt ual Reality)的一个崭新的应用领域。
虚拟现实是人机交互的、模仿现实环境并且能允许多用户实时操作的应用接口,它的一个最主要的应用就是医学领域的虚拟手术的完全模拟,提高了现实手术操作计划的安全性、实时性和高效性,其中医学图像的三维重建技术就是虚拟现实的核心技术。
基于VTK 的三维医学影像可视化系统设计与实现****基金项目:西藏自治区自然科学基金项目"基于大数据的西藏非物质文化遗产知识图谱研究"(XZ2018ZRG-66)**通讯作者孙浩雒伟群杯(西藏民族大学信息工程学院,陕西咸阳712082)摘要:随着社会科技的发展以及医疗行业智能化的普及,医学影像三维可视化在医学领域有着重要的应用。
文章将VTK.QT 以及Visual Studio 三者结合起来对医学DICOM 影像进行可视化分析,通过VTK 读取医学DIC0M 影像并 进行三维重建后显示,在冠状面、矢状面、横断面、三维立体图形界面显示数据图像;通过VTK 的交互部件,实现对二维图像与三维立体图像的距离测量和角度测量,给医师提供准确数据;通过布尔运算把种植体套筒与牙床板融合到 一起,模拟了口腔种植体的植入过程;并且通过QT 来设计出友好的用户交互界面。
关键词:VTK QT 三维可视化1研究背景随着生活水平的提高,人体牙体缺失的问题越来 越严峻,主要由于人口老龄化,许多老年人的牙齿都掉了,掉了之后就很容易形成空缺,对外观以及生活体验都大大减少。
这就出现了人工种植牙技术,来改 变这一现状。
传统种植手术完全依赖医生的经验,可 能会导致手术失误,随着数字化种植技术的发展,可以精确地模拟种植体种植的手术流程,大大降低了手术的风险。
同时随着医学影像的快速发展,医学数字 成像与通信(DICOM)格式的医学图像在当下使用最为广泛,研究出一款三维可视化的软件是非常有必要的,可以解决医生传统的读取CT 的效果不好以及二 维显示不够直观的缺点。
本项目致力于研发一种低成本、便于维护、面向中小型医院的医学图像的三维可视化软件,帮助医生 更好的诊断并且提供可靠的解决方案,帮助医院实现智能化的转变。
本项目所使用的原始数据由医学数据库中提供 的真实的371幅CT 人脑系列断层图像,图像格式为符合DICOM3.0标准的医学图像。
修改意见:1)第一部分“可视化工具包VTK”的介绍略显繁琐,不够精炼;第二部分“VTK 与MFC的接口”部分,内容不够充分,信息量不充足,编号中只有“2.1”不恰当;第三部分“三维可视化的实现”部分为本文重点,应结合3.1、3.3的框图进行较为详细的介绍;“结束语”部分过于简单,应增加应用领域、发展前景等内容。
2)在文字表达上还需润色,力求通顺、简单明了,杜绝错字漏字。
图表号码有误,全文有两个图2,请纠正。
文章在第一次出现英文缩略语时应首先以全称备注,图1、图2应有适当的中文说明。
3)补项目来源及作者简介:按学报规范4)以下是检索的结果,红字是对已有文献的重复,在文章中又没有标注,请修改:三维地震数据场可视化足迹法研究。
南京理工大学硕士论文李志永 5%2008-06-01三维超声实时可视化及GPU技术的应用上海交通大学硕士论文王磊 5%2008-01-01重复的部分:引言尽管计算机断层扫描(CT)及核磁共振(MR)已广泛应用于疾病诊断,但是这些医疗仪器只能提供人体内部的二维图像,医生只能凭经验有多幅二维图像对病灶的大小及形状进行估计,这给诊断带来了困难[1]。
此外,从宏观上来看,常见有两种操作,一种是类型的转换,通过vtkImageShiftScale 将不同类型的数据集转换为VTK可以处理的数据;另一种是剔除冗余数据,例如通过vtkS tripper防止无效的旧单元的存在,提高绘制速度。
(2)数据分类:三维数据场中的数据是三维空间中多种不同物质的测量结果或计算机数值计算的结果。
例如,在人体或动物的CT扫描图像中,对应用骨骼、肌肉和皮肤等不同密度的物质,就有不同的CT值,在CT图像中表现为具有不同的灰度值。
为了在最终的可视化图像中以不同颜色正确地表示出共存的多种物质的分布,就需要对数据进行分类,找出数据与不同物质之间的对应关系;为了在最终图像中以不同颜色表示单一物质的不同属性,如温度、密度等,也需要进行分类。
长春理工大学学报(自然科学版)Journal of Changchun University of Science and Technology (Natural Science Edition )基于VTK 的医学图像三维可视化的研究与实现摘要:根据当前PACS 系统的需要,利用VTK —基于面向对象方法设计,功能强大的可视化类库,实现医学影像数据三维可视化系统。
本文介绍了面绘制和体绘制两种常用的方法。
基于VTK 的体绘制重建速度快,效果逼真。
关键词:三维重建;VTK ;面绘制;体绘制;PACS 中图分类号:TP317.4文献标识码:A文章编号:1672-9870(2007)04-0120-02收稿日期:2007-08-12项目基金:吉林省科技厅项目(20030307)作者简介:苗语(1980-),女,硕士,主要从事医学图像处理的研究,E-mail :custmiao@ 。
苗语,师为礼,郭乃珠(长春理工大学计算机科学技术学院,长春130022)Development and Implement of 3-D VisualizationSystem for Medical Image Based on VTKMIAO Yu ,SHI Weili ,GUO Naizhu(School of Computer and Technology ,Changchun University of Science and Technology ,Changchun 130022)Abstract :According to the requirement of PACS ,we use VTK to realize a three dimensional visualization system.VTK is a powerful object-oriented designed class library for visualization with multiple rendering techniques.This paper introduces two techniques-surface rendering and volume rendering.Reconstruction effects prove that this method is easy to get satisfied results with good quality in short time.Key words:3-D reconstruction ;volume rendering ;surface rendering ;PACS随着计算机三维图形图像技术的迅猛发展,其最新成果已经应用到各个领域。