基于MITK的医学图像处理系统的主要任务是通过对一系列的二维图像进行边界识别等分割处理,重新还原出被检物体的三维模型,并以表面的方式显示出来,从而为用户提供具有较强真实感的三维医学图像。
二维图像分割
三维图像输出
二维图像序列
表面重建
三维数据分析及处理
三维数据提取
本系统是在MITK以及VTK这些医学影像的算法平台上,利用其提供的软件包,以VC++作为设计平台,设计一个能进行三维表面重建的程序并能在设计的显示环境中进行动态的显示。
图2-1 系统设计思路
本系统需要实现的功能如下:
1、根据医学图像处理的需要,要求能打开至少五种格式的图片。
在VC环境里面找到[资源视图]点击[menu]然后点击[IDR_MAINFRAME],在后边有了菜单栏,在[文件]菜单下的打开里面添加上[打开IM0文件],点击右键选择[属性]在[ID]一栏里面写上ID_FILE_OPEN_IM0,然后在点击右键选择[添加事件处理函数]在里面选择消息类型为:COMMAND,类表选择CMITKMyDoc,最后点击[编辑代码],这样就添加了第一个打开文件菜单项。注意,这里[打开]的属性里面的[Pop-up]应该选为ture。按照以后步骤依次添加
ID_FILE_OPEN_DICOM,Dicom
ID_FILE_OPEN_BMP,Bmp
ID_FILE_OPEN_JPEG,Jpeg
ID_FILE_OPEN_TIFF,Tiff
ID_FILE_OPEN_RAW,Raw
2、显示输入数据MitkVolume以及输出数据 MitkMesh的基本信息。
MitkVolume是一个Data,它是代表一个数据对象的。它是整个MITK中最重要的数据对象,代表一个三维断层图像数据,所有要处理的断层数据都必须先表达成MitkVolume的形式才能得到后续的处理。
在MITK中,图像的显示环境由View提供,而图像对象的具体绘制是由Model负责,View可以拥有多个Model,通过AddModel()和RemoveModel()进行添加或者移除显示场景中的Model,并且遍历它所有Model,**调用它的Render()函数来绘制Model。具体到在本设计中对二维图像的显示是由mitkView派生而来的mitkImageView负责的,而mitkImageView类只负责提供显示环境,具体将对象绘制出来是由mitkImageModel负责。
mitkImageModel是专门用来显示Volume中断层图像的Model。它可以显示X-Y,Y-Z,Z-X三个平面的断层图像。
3、具有浏览各张切片图像的功能。
4、要求有对图像进行平移、缩放和窗宽/窗位调整的功能。
mitkImageView所带的缺省Manipulator实现了常用的鼠标操作,所以本系统直接拥有了对图像进行平移、缩放和窗宽/窗位调整的功能,其中,按住鼠标左键拖动鼠标可以平移图像;按住鼠标右键拖动鼠标可以对图像进行缩放;按住鼠标中键拖动鼠标是调整图像的窗宽/窗位,水平移动调整的是窗宽,垂直移动调整的是窗位。
5、要求有对输入的Volume数据进行表面重建的功能。
此方法基本原理首先给出等值面的值,找出该等值面经过的体元的位置,然后求出该体元内的等值面并计算出相关参数,最后绘制等值面。主要步骤如下:
(1)由三维数据场相邻8个数据点构造每个体元,然后将每个体元的8个角点值与给定等值面值比较,由比较结果构造体元状态表;
(2)根据状态表得出与等值面有交点的体元边界,再通过插值方法计算体元边界与等值面的交点;
(3)构造三角形等值面并计算三角面片的法向量,最后绘制图像。利用Marching Cubes方法实现多个等值面的重建,把多个等值面组合起来得到最终表面。本系统可以实时地调节各个等值面的阀值,从而得到较好的效果。
6、要求有对输出的Mesh数据有点显示、线框显示以及面显示的功能。