ITK及其在医学图像分割中的应用.doc_第1页
ITK及其在医学图像分割中的应用.doc_第2页
ITK及其在医学图像分割中的应用.doc_第3页
ITK及其在医学图像分割中的应用.doc_第4页
免费预览已结束,剩余1页可下载查看

下载本文档

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

文档简介

ITK及其在医学图像分割中的应用 摘要:ITK (The Insight Toolkit) 是一个开放的、面向对象的类库。它提供了强大的二维医学图像处理功能,主要用于医学图像的预处理、分割及配准。本文主要介绍图像分割的算法以及ITK在图像分割中的应用,并简要介绍一个基于ITK的医学图像处理的实现。关键字:面向对象程序设计;ITK;图像分割; ITK and its application of medical image segmentation Abstract: ITK(The Insight Toolkit) is an open-source, object-oriented insight class libraries. It provides a powerful two-dimensional medical image processing functions, mainly for the purposes of medical image preprocessing, segmentation and registration. This paper introduces the algorithm of image segmentation and application of ITK in medical image segmentation, also briefed on a medical image processing is achieved.Key word: object-oriented programming; ITK; image segmentation; 1 引言 随着现代信息技术的进步,医学图像处理与分析系统得到迅速的发展,它能够有效地辅助医生对医学图像进行定性或定量的分析,提高诊断的准确性和科学性,因此在手术模拟、医学教学以及医学研究中发挥着重要的作用。图像分割是对图像进行进一步分析和处理的基础,是图像处理中的关键技术,所以医学图像分割是医学领域中的一个重要的领域,对医学图像进行分割是病变区域提取、特定组织测量以及实现三维重建的基础。图像分割是指将图像中具有特殊涵义的不同区域区分开来,这些区域应当是互不相交的,每一个区域都满足特定区域的一致性。 但是随着医学影像技术在许多领域的广泛应用,也暴露出一些亟待解决的问题,因为对于许多并不是专业从事医学影像研究的科研人员来说,虽然他们对于医学影像也有很强烈的需求,但是由于对医学影像处理程序的开发并不熟悉,因此会遇到许多的困难。如果能有一个专门的医学影像软件平台,尤其是底层的算法研发平台,能够简化医学影像程序的开发,将会极大的提高工作效率。本文介绍的ITK是一个用于医学图像分割与配准的开放源码的软件开发包。它提供了一些主流算法,如区域增长、阈值分割、基于分水岭的分割、Fast Marching算法、Level Set(水平集)等多种分割方法,并将这些用于医学图像处理的算法和程序的开发过程屏蔽起来。以类库的形式给我们的开发工作以直接的支持,大大的简化了开发工作,并且提高了开发效率。2 ITK简介ITK是一个开放的、面向对象的类库,它主要提供了医学图像分割和配准的算法平台,大量使用了1998年以后ANSI C+标准里面的新特性,尤其是模块,它是基于范式编程这种思想来设计和实现的。ITK也支持跨平台开发支持Windows、Unix、Linux等多种平台,它将程序开发过程中会经常遇到的细节屏蔽起来,并将一些常用的算法封装起来。ITK采用Pipeline机制,它可以处理任何类型的数据,可以用相应的类对任何类型的数据进行转换和处理,根据所要处理的原始数据类型的不同和所使用的算法以及所要达到的结果我们可以设计和建立起自己的流程,并由此选择不同的数据处理和转换的类,用数据通道将这些类连接起来,将原始数据类型转换为所采用的算法模块可以直接进行处理的数据类型,最终得到我们所需要的结果,而且所有的类和算法模块都是可扩充的,用户可以将自己开发的类或模块转换成系统可以接受的形式,并可替换或扩充原有的类。由于一些历史的原因,ITK没有实现可视化的功能,在VTK中可以实现可视化,所以医学影像系统中,在用ITK进行分割的基础上,结合VTK对图像进行可视化处理。3 医学图像分割算法在医学图像处理系统中,断层扫描仪产生有关人体内部结构的数字图像数据,在这些图像中,包含了某些物体,如某种人体器官。为了分析这些物体的形状、形态和其功能,或对其进行可视化处理,有必要先将其从其它的生物组织或背景中提取出来。这一提取过程即为医学图像分割。医学图像分割算法包括区域增长、阈值分割、基于分水岭的分割、Fast Marching算法、Level Set(水平集)等多种分割方法。 区域生长法的基本思想是将具有相似性质的像素集合起来构成区域。首先,对每个要分割的区域找一个种子点,然后将种子像素周围领域中与种子像素有相同或相似性质的像素合并到种子像素所在的区域中。将这些新像素点当作新的种子点继续上面的过程,直到没有满足条件的像素点为止停止生长。其中相似性准则可以是灰度级、彩色、组织、梯度或其他特性。相似性的测度可以由所确定的阈值来决定。区域生长方法的实现有三个关键点:种子点的选取:选取的种子点可以是单个像素,也可以是包含若干个像素的子区域,原则上是取提取区域的具有代表性的点。生长准则的确定:原则上评价与种子点相似程度的相似性度量。生长准则大多采用的是与种子点的距离度量。种子点可以随着区域的生长而变化,也可以设定为一个固定的数值。区域生长停止的条件:对于渐变区域进行生长时的停止判断非常重要。一般是结合生长准则来进行合理的设定。判定生长停止的阈值可以是确定的值,也可以是随生长而变化的值。 阈值分割:所谓阈值方法就是确定某个阈值,根据图像中每个像素的灰度值大于或小于该阈值,来进行图像分割。阈值方法的数学模型如下: 设原图像为,经过分割处理后的图像为, 为二值图像,则有 根据上式可知,阈值方法的核心就是阈值的确定方法。阈值方法的缺陷在于它仅仅考虑了图像的灰度信息,而忽略了图像中的空间信息,对于不存在明显的灰度差异或各物体的灰度值范围有较大重叠的图像分割问题往往难以得到准确的结果。 基于分水岭的分割方法分水岭分割是一种数学形态学的图像分割方法,广泛应用于医学图像处理、视频处理等领域。分水岭分割能够准确定位边缘,具有运算简单、易于并行化处理等优点,但同时也存在一些缺点:1)对图像中的噪声极为敏感,由于输入图像往往是图像梯度,原始图像中的噪声能直接恶化图像的梯度,易于造成分割的轮廓偏移;2)易于产生过分割,由于受噪声和平坦区域内部细密纹理的影响,算法检测的局部极值过多,在后续分割中出现大量的细小区域;3)对低对比度图像易丢失重要轮廓,在这种情况下,区域边界像素的梯度值也较低,目标的重要轮廓容易丢失。 Fast Marching分割算法Fast Marching算法是一种基于几何形变模型的医学图像分割方法。几何形变模型的基本思想是将曲线的形状变化用曲线演化理论来描述,即用曲率或法向量等几何度量表示曲线或曲面演化的速度函数,并将速度函数与图像数据关联起来,从而使曲线在对象边缘处停止演化,由于曲线的演化与参数无关,几何形变模型能被自动处理对象拓扑的变化,演化过程中的曲线和曲面只能被隐含表示为一个更高维函数的一个水平集,因此曲线演化过程采用了水平集方法加以实现。另一种跟踪运动的曲线或曲面的方法是固定曲线或曲面的演化方法,也就是说,曲线或者曲面只能收缩或者扩张,这就是Fast Marching方法。 Level Set分割方法Level Set方法主要是从界面传播等研究领域中逐步发展起来的,它是处理封闭运动界面随时间演化过程中几何拓扑变化的有效计算工具。Level Set方法提出以来,已在图像处理和计算机视觉等领域得到了广泛的应用。Level Set方法的基本思想是将平面闭合曲线隐含地表达为二维曲面函数的水平集,即具有相同函数值的点集。将对二维平面里界面运动的研究转化为三维空间中二维曲面运动的讨论。通过Level Set函数曲面的进化隐含地求解曲线的运动,尽管这种转化使得问题在表面上变得复杂,但是维数的拓展却同时带来了求解上的很多的优势,其优越性主要体现在曲线的拓扑变化能够得到很自然地处理,而且获得了唯一的满足熵条件的弱解。在ITK中的Level Set分割方法中,包含阈值水平集分割、高斯水平集分割、拉普拉斯水平集分割、Canny边缘检测等等一系列分割方法。4 利用ITK类库进行医学图像分割的实例使用ITK对医学图像进行分割非常方便,程序的结构也很简单。在此我们将以一个区域增长和阈值分割相结合的分割方法为例,简单剖析一下如何利用ITK实现医学图像分割。4.1 图像文件的读入首先,读取CT切片的数据,然后转化成ITK所支持的数据表达形式。因为要处理的数据的拓扑和几何都是ITK中隐含知道的,所以只需要知道它的维数和CT数据的一些参数就可以了。读取的代码如下所示:typedef float InternalPixelType; /定义读取对象的类型const unsigned int Dimension = 2; /定义数据的维数ReaderType:Pointer reader = ReaderType:New(); /建立一个读取对象reader-SetFileName( .BrainProtonDensitySlice.png); /设置所要读取数据文件的路径4.2 设置图像的参数进行分割处理下面我们就用ITK中的Connected Threshold分割算法对图像进行分割。由于图像中的噪音可能降低滤波的效果,所以我们要使用滤波器对它进行预处理。我们例子中使用的是itk:CurvatureFlowImageFilter,所以我们要包含下面的头文件: #include “itkCurvatureFlowImageFilter.h”对CT图像进行处理:CurvatureFlowImageFilterType:Pointer smoothing = CurvatureFlowImageFilterType:New(); /建立一个CurvatureFlowImageFilterType类型的指针ConnectedFilterType:Pointer connectedThreshold = ConnectedFilterType:New(); /建立一个ConnectedFilterType类型的指针 smoothing-SetInput( reader-GetOutput() ); /获得所读取的CT图像 connectedThreshold-SetInput( smoothing-GetOutput() ); caster-SetInput( connectedThreshold-GetOutput() ); writer-SetInput( caster-GetOutput() ); smoothing-SetNumberOfIterations( 5 ); smoothing-SetTimeStep( 0.125 ); const InternalPixelType lowerThreshold = 50; /设置分割的低阈值为50 const InternalPixelType upperThreshold = 255; /设置分割的高阈值为255 connectedThreshold-SetLower( lowerThreshold ); connectedThreshold-SetUpper( upperThreshold ); connectedThreshold-SetReplaceValue( 255 ); InternalImageType:IndexType index; /定义种子点 /种子点设为(127,127) index0 = 127; index1 = 127; connectedThreshold-SetSeed( index ); 在例子中,由于本身的封装性,只要把阈值和种子点取得适当就可以,其他的在程序内部已经做了恰当的设置。利用同样的方法我们可以运行ITK中的其他分割的例子。4.3 显示结果 通过前面的工作,我们基本上完成了数据的读取、处理等步骤,下面就要对数据进行显示。简单的程序代码如下:WriterType:Pointer writer = WriterType:New(); /建立一个输出对象writer -SetFileName( .BrainProtonDensitySlice.png1); /设置所要显示数据文件的路径输入不同的阈值和种子点的分割结果如下所示: 图1 图2 图3图1为原始的CT切片,图2为阈值为(50, 255),种子点为(127,127)时分割的结果,图3为阈值为(60, 116),种子点为(150,180)时分割的结果。5 结论ITK是采用C+语言设计的一个面向对象的类库,具有十分强大的功能,与MFC强大的图形界面功能相结合可以方便快捷的开发出高性能的程序,对于一般的用户它屏蔽了一些常见算法和复杂的数据处理过程,使不具备程序开发经验的用户也可以方便快捷地编制程序,同时对于具有程序开发经验的用户ITK也提供了相应的方法,使用户可以对其进行改进,尤其是对于从事医学图像分割的用户,提供了工作效率,具有十分

温馨提示

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

评论

0/150

提交评论