美章网 资料文库 MITK医学图像设计范文

MITK医学图像设计范文

本站小编为你精心准备了MITK医学图像设计参考范文,愿这些范文能点燃您思维的火花,激发您的写作灵感。欢迎深入阅读并收藏。

MITK医学图像设计

1三维面绘制设计

面绘制是通过一系列的二维图像进行边界识别等分割处理,重新还原出被检物体的三维模型,并以表面的方法显示出来,为用户提供具有较强真实感的三维医学图像,便于医生从多角度、多层次进行观察和分析[3]。在mitk中,表面重建算法被抽象成一个Volu-meToMeshFilter,其接收n张两维的切片生成数据,表示为一个mitkVolume输入,经过处理后的输出数据是一个以三角网络来表示的三维表面模型,表示为mitkMesh对象。MITK中跟面绘制相关的Model是SurfaceModel,它的主要任务是实现父类里规定的接口Render()来绘制表面重建算法生成的三角网格数据。SurfaceModel拥有3个类成员:Mesh提供对生成的三角面片数据的访问;SurfacePropery维护表面模型的材质属性,并且提供给用户修改属性参数的接口;SurfaceRenderer负责最终实际的绘制工作[4-6]。//提供取得指向mitkVolume指针的接口mitkVolume*GetVolume(){returnm_Volume;}//提供取得指向mitkMesh指针的接口mitkMesh*GetMesh(){returnm_Mesh;}…//生成一个mitkMarchingCubes对象mitkMarchingCubes*mc=newmitkMarchingCubes;//将从圣诞框中得到的阈值设置给MarchingCubes算法[7-8]mc->SetThreshold(dlg.m_LowValue,dlg.m_HighValue);//设置输入数据mc->SetInput(m_Volume);//从mitkMarchingCubes算法得到输出结果m_Mesh=mc->GetOutput();m_Mesh->AddReference();…//产生mitkView对象m_SceneView=newmitkView;//显示mitkViewm_SceneView->Show();//生成一个mitkSurfaceModelm_SurfaceModel=newmitkSurfaceModel;//将Model加入到View中m_SceneView->AddModel(m_SurfaceModel);实验数据为一组头颅CT断层图像,数据规模为256×256×99,执行MC算法面绘制重建后可以得到质量较好的三维图像,并基本可以达到实时操作的效果。

2体绘制设计

在MITK体绘制算法框架中,VolumeModel来实现父类里面规定的接口Render函数。mitkVolumeModel对应一个以体绘制方式显示在场景中的实体,通过SetData函数得到mitkVolume数据。用mitkVol-umeProperty来管理mitkVolumeModel的属性结构,如光源参数、插值类型、传递函数等;用mitkVolumeRen-derer这个抽象的绘制类来负责实际的绘制工作[9]。在该系统中,用RayCasting[10-11](光束投射法)来实现图像的体绘制。在VC6.0中用建立好基本框架后,新增一个DrawParam来定义图像的着色参数,在CMITKTestView添加函数将着色参数应用于传递函数。通过调用mitkVolumeRendererRayCasting来实现光束投射算法,其部分代码如下://创建VolumeModelm_VolModel=newmitkVolumeModel;//取得模型属性mitkVolumeProperty*prop=m_VolModel->GetProperty();…//将VolumeModel加入Viewm_View->AddModel(m_VolModel);…//将volume指定给modelm_VolModel->SetData(volume);…//将一个mitkVolumeRendererRayCastingLoD的实例指定给m_VolModelmitkVolumeRendererRayCastingLoD*ren=newmitkVol-umeRendererRayCastingLoD;CopyPlanes(m_VolModel->GetRenderer(),ren);m_VolModel->SetRenderer(ren);执行上述算法后,把前面256×256×99规模的断层图像输入后,得到的体绘制图像(阻光度=0.001)。

3基于MITK的图像分割

图像分割的目的是为了将图像中某一感兴趣的区域划分出来,分割结果是图像定量分析后续处理的基础。MITK中提供了一些主流的分割算法,如阈值分割[12-[13]、区域生长等[14],本文以区域生长算法来设计分割的实现。该算法假设当前处理的区域中的点灰度值为gc,其相邻点灰度值为gn,用户选定的种子点灰度值为gs,则当相邻点灰度值满足条件|gn-gc|<dv和|gn-gs|>cv时认为该相邻点也属于分割区域而将其合并到区域中。在系统中,分割功能通过一个继承自mitkVolu-meToVolumeFilter的mitkRegionGrowImageFilter的类来实现。设计好一个区域生长对话框(如图4所示)后,在对话框中添加两个mitkImageView,分别用来显示源图像和分割结果。用m_DifferentValue和m_ChangeValue来表示用户设定的灰度值,从mitkIm-ageModel派生一个类mitkRegionGrowImageModel,来实现对标记图像的显示。用SetLabelImage函数将外部输入的标记数据合并到m_LabelImage中,再通过重载mitkImageModel的Render函数,在其中使用OpenGL的绘制函数加入对标记图像的绘制。图4区域生长对话框拖动滑块,可以选择切片,在左侧的“源图像”窗口中用鼠标选取种子点,然后修改DifferentValue和ChangeValue值(即dv和cv),即可得到不同的分割结果,分割区域用红色标记。在输入一组切片后进行分割,得到分割成像效果如图5所示。图5分割成像效果图dv=6,cv=20

4结束语

MITK作为一个专门用于医学图像处理和可视化的工具包,在实现三维可视化功能方面,能取得较好的成像速度和绘制结果,同时可以添加自己的图像处理算法,增强了MITK的灵活性。本文基于MITK的绘制模型和分割技术,设计了三维重建和分割系统,满足部分使用的要求,具有一定的实用价值。同时也是作为以后研究的一个基础,添加新的图像处理算法,扩展功能。