APP下载

基于VTK的足部骨骼三维可视化研究

2014-02-14戴虹

上海第二工业大学学报 2014年3期
关键词:等值立方体骨骼

戴虹

(上海第二工业大学电子与电气工程学院,上海201209)

基于VTK的足部骨骼三维可视化研究

戴虹

(上海第二工业大学电子与电气工程学院,上海201209)

基于CT图像序列利用VTK(Visualization Toolkit,可视化工具箱)实现了人体足部骨骼的三维表面重建。采用最大熵阈值算法进行足部骨骼图像分割,将该阈值作为骨骼等值面抽取值;在VC++中利用VTK编程实现了基于移动立方体法的足部骨骼表面重建,并对所得三维表面进行了优化;将所得结果存为三维模型常用的STL文件格式。实验结果表明,此方法获得了理想的可视化效果,可在足部疾病诊断和治疗、手术仿真等方面发挥重要作用。

VTK;足部骨骼;三维可视化;面绘制;最大熵阈值算法

0 引言

图像的三维可视化技术是指利用图像的二维投影恢复物体的三维信息,目前广泛应用于医学和工程领域。在临床医学上利用可视化技术,将一系列二维断层图像,如CT与MRI(磁共振)图像序列重建成三维模型,医生根据模型准确地获得病变组织的位置、大小和体积等信息,并进行手术仿真,可提高手术的成功率[1]。目前常用VC++软件进行医学图像编程工作,但其复杂度较高,开发周期长且三维显示速度较慢。在使用通用三维图形接口OpenGL (Open Graphics Library,开放的图形接口)后,三维绘制的速度和质量有了较大提高,但编程困难问题并没有根本解决。美国Kitware公司于1998年推出的VTK(Visualization Toolkit,可视化工具箱),是一种基于OpenGL的用于三维图形学、图像处理及三维可视化的开发包[2],可用简单代码实现图像的三维重建。

本文首先基于最大熵阈值法求得足部CT图像中骨骼的分割阈值,将其作为等值面抽取值,再利用VTK编程实现足部骨骼的三维表面重建。实验结果表明,本文提出的方法获得了较为理想的重建结果。

1 基于最大熵阈值法的足部CT图像骨骼分割

在对足部骨骼进行三维表面绘制之前须求得骨骼等值面抽取值,也就是足部骨骼图像的分割阈值,大于该阈值的图像像素被认定为骨骼。由于凭经验手动设置阈值准确率不高且效率低下,所以采用一种自动的最大熵阈值分割算法:由信息论的定义,熵是平均信息量的表征,根据最大熵原则,用灰度的一维熵求取阈值即选取一个阈值T,把图像分成背景和目标两类区域,使图像用这个阈值分割出的两部分的一维熵最大,可实现背景和目标的最佳分类[3]。

该算法的步骤如下:设一幅足部图像f的灰度级为0~255,灰度级为i的像素个数为ni,总像素个数为N,则各灰度级出现的概率(即归一化直方图)为设分割骨骼与其他组织的阈值为T,则获得目标A和背景B两类,它们的概率分布分别为则A和 B的熵分别为:

令总的信息熵为:S(T)=SA+SB,则最佳阈值Tk是使S(T)为最大值时的阈值T,即:

2 VTK实现足部骨骼的三维可视化

2.1 基于移动立方体法的足部骨骼三维表面重建

表面重建也称为“面绘制”,其基本思想是:确定物体表面在每个体素内的小面片,然后将这些面片(通常为三角片)连接起来构成物体表面。移动立方体(Marching Cubes)法是经典的表面重建方法之一,它根据物体表面特征信息抽取每个体素的等值面,从而构成物体的三维表面[4]。与直接由三维数据场产生屏幕上二维图像“体绘制”方法相比,移动立方体面绘制法的优点是:①绘制时可以用硬件加速;②占有内存少;③改变视角,光线等只需要重新绘制即可,不需要再次重建;④可以压缩存储和传输;⑤以图元对象顺序绘制,看不到的就不用绘制;⑥空间位置明确,绘制效率高。等值面抽取步骤如下:

(1)数据处理顺序。将足部CT图像序列(共145幅)按顺序叠加成一个三维体数据集,每次读出2张切片图像,形成一层,则共144层。2张切片上下相对应的4个点构成一个立方体,根据从左至右,从前到后的顺序处理读取并处理第1层中的立方体(即抽取每个立方体中的等值面),然后从上到下处理其余的143层。“等值面”实际上是指空间中的一张曲面f(x,y,z),在该曲面上f等于某一给定值。即

式中,Tk为等值面抽取值,即分割骨骼时的阈值。

(2)每个立方体的等值面抽取。每个立方体8个顶点的灰度值可直接从输入数据中得到。如果一个顶点的灰度值大于域值,则将它标记为黑色,小于域值的顶点不标记。显然,在标记的顶点和不标记的顶点之间必然存在等于域值的点,即等值点。取这两个顶点的中点为等值点,即

式中:Q为等值点坐标;Q1和Q2分别为标记的顶点和不标记的顶点的坐标。再将这些等值点连接起来即构成等值面,形状是三角片。

2.2 VTK足部骨骼绘制过程与程序代码

VTK采用的是管道模型(Pipeline)机制,根据图像数据类型及所要得到的显示结果选择算法并构建可视化流程,在医学图像与三维重建方面正发挥着重要的作用[5]。本文基于Marching Cubes面绘制算法,在VC++6.0环境下采用VTK类库实现足部骨骼的三维重建。其管道模型如图1所示。

图1 基于Marching Cube算法的足部骨骼面绘制管道模型Fig.1 The surface rendering pipeline model of the foot bones based on Marching Cube Algorithm

根据上述管道模型,基于VTK编程实现足部骨骼的三维可视化。步骤与程序代码(省略了应包含的头文件)如下:

(1)建立一个vtkDICOMImageReader[6]对象,读取存储在D盘“zubu”目录下的dicom格式(一种通用的医学图像文件格式)足部CT序列图像,共145幅。

void main()

{vtkDICOMImageReader*v16=

vtkDICOMImageReader::New();

v16->SetDataByteOrderToLittleEndian();//设置为小端字节序

v16->SetDirectoryName(“D://zubu”);//设置图像目录

v16->SetDataSpacing(1,1,1);//设置图像间隔

(2)采用vtkImageShrink3D对图像数据按比例削减,以减少数据量,提高绘制速度。

vtkImageShrink3D*v17=vtkImageShrink3D:: New();

v17->SetInput((vtkDataObject*)v16->GetOutput());

v17->SetShrinkFactors(2,2,1);//对图像数据按2:2:1比例削减

(3)建立一个MarchingCubes对象,并设定足部骨骼等值面抽取值。

vtkMarchingCubes*skinExtractor=

vtkMarchingCubes::New();

skinExtractor->SetInputConnection(v17->

GetOutputPort());

skinExtractor->SetValue(0,123.5);//等值面抽取值Tk=123.5

(4)利用vtkPolyDataNormals产生等值面上的法线,以使绘制过程中的表面光滑着色。

vtkPolyDataNormals*skinNormals=

vtkPolyDataNormals::New();

skinNormals->SetInputConnection(skinExtractor ->GetOutputPort());

skinNormals->SetFeatureAngle(60.0);

(5)利用vtkSmoothPolyDataFilter实现重建数据的平滑处理[7];利用vtkSTLWriter将骨骼表面模型存为STL格式文件。

vtkSmoothPolyDataFilter*smoother=

vtkSmoothPolyDataFilter::New();

smoother->SetInputConnection(skinExtractor->GetOutputPort());

smoother->SetNumberOfIterations(50);

vtkSTLWriter*writer=vtkSTLWriter::New(); writer->SetInputConnection(smoother->

GetOutputPort());

writer->SetFileName(“zubu.stl”);

writer->Write();//设STL文件名称为“zubu.stl”

(6)由vtkPolyDataMapper类将图像数据映射为可被计算机绘制的图元;由vtkActor类创建一个代表足部骨骼的“角色”,设置其颜色,并与一个映射器关联。

vtkPolyDataMapper*skinMapper=

vtkPolyDataMapper::New();

skinMapper->SetInputConnection(smoother->GetOutputPort());

skinMapper->ScalarVisibilityOff();

vtkActor*skin=vtkActor::New();

skin->SetMapper(skinMapper);skin->

GetProperty()->SetColor(0,1,0);

(7)利用vtkRenderer创建一个绘制器,添加被绘制的“角色”,并用vtkRenderWindow在绘制窗口中显示,最后通过vtkRenderWindowInteractor实现绘制结果与用户的交互。

vtkRenderer*aRenderer=vtkRenderer::New();

aRenderer->AddActor(skin);

aRenderer->SetBackground(1,1,1);//设置背景颜色为白色

vtkRenderWindow*renWin=vtkRenderWindow:: New();

renWin->AddRenderer(aRenderer);

renWin->SetSize(640,480);//设置绘制窗口大小为640*480

vtkRenderWindowInteractor*iren=

vtkRenderWindowInteractor::New();

iren->SetRenderWindow(renWin);}

3 实验结果分析

实验数据是一位女性右足的CT序列图像,图像尺寸为512像素×512像素,共145幅,为dicom格式。首先利用Matlab软件编程,实现最大熵阈值法足部骨骼分割,以第43幅图像为例(图2(a)),分割步骤:①计算总熵S(T);②令T=1,2,···,255,每次循环算出此时的S(T),找出使S(T)最大时的Tk值。本例Tk=123.5,分割结果如图2(b)所示,可见该算法正确地提取了足部骨骼。

图2 基于最大熵阈值法的足部骨骼分割图像Fig.2 The segmented image of foot bones based on Maximum Entropy Threshold Algorithm

将Tk=123.5作为足部骨骼等值面抽取值,在VC++中利用VTK进行足部骨骼表面重建,结果如图3所示。可见基于Marching Cubes的面绘制算法具有较好的重建效果;拖动鼠标左键还可将该三维模型进行旋转,实现了用户交互。在编程过程中包含了以下优化:①对原始图像数据按比例削减,使足部骨骼表面的三角片个数从868 230片降为313 140片,绘制时间从25.80 s降低至4.84 s,提高了程序运行速度;②对重建表面进行了平滑处理,从而使结果更为逼真。此外,将结果存为可被SolidWorks、UG等常用三维建模软件读取的STL文件,实现了绘制结果的跨平台使用。

图3 基于VTK的足部骨骼三维可视化结果Fig.3 Three dimensional visualization of foot bones base on VTK

4 结论

提出一种基于VTK的足部骨骼三维可视化方法:①采用最大熵阈值法获得足部骨骼等值面抽取值;②采用移动立方体法,基于VTK编程实现足部骨骼的三维表面重建。实验结果表明,该方法取得了较为理想的重建结果,编程简单且运行速度很快,适用于任何医学CT图像序列的三维重建,普遍性较强。该算法可用于足部疾病诊断和治疗以及手术仿真,也可推广至对人体所有器官组织进行的三维可视化工作。

[1]戴虹,杨云峰.基于Matlab距骨快速图像分割与动画生成的算法[J].中国组织工程研究与临床康复.2010, 26(4):4764-4769.

[2]周振环,伍云智,赵明.医学图像编程技术[M].北京:电子工业出版社,2010.

[3]姜兴乾,李星野,贾淑华.基于最大熵与小波变换的图像边缘检测算法[J].微电子学与计算机,2009,26(3): 189-191.

[4]田捷,包尚联,周明全.医学影像处理与分析[M].北京:电子工业出版社,2003.

[5]顾耀林,袁江琛.空间相关MC算法的VTK实现[J].计算机工程与设计.2007,28(13):3160-3162.

[6]VITAMIN.用vtkDicomReader读取图像序列[EB/OL].(2011-03-04)[2014-02-15].http://swyxgc.blog. 163.com/blog/static/4567575320112442644904/.

[7]刘志远,郑永果.基于VTK的医学图像三维重建[J].信息技术与信息化,2009(1):59-61.

Three Dimensional Visualization of Foot Bones Based on Visualization Toolkit

DAI Hong
(School of Electronic and Electric Engineering,Shanghai Second Polytechnic University, Shanghai 201209,P.R.China)

The three dimensional reconstruction of foot bones based on CT image sequences using VTK(Visualization Toolkit)is proposed.(1)ThefootbonesimagesaresegmentedbyMaximumEntropyThresholdAlgorithmandthethresholdisusedasanisosurface extraction value of bones.(2)The surface rendering of foot bones based on Marching Cubes Algorithm is realized by VTK programmed with VC++,and the three dimensional surfaces of bones are optimized and stored in STL,and a general 3D model fle format.The result of experiment shows that this method obtained desired effect of visualization,and it can play an important role in the diagnosis and treatment for foot diseases and the operation simulation of foot.

VTK;foot bones;three dimensional visualization;surface rendering;Maximum Entropy Threshold Algorithm

TP391.4

A

1001-4543(2014)03-0211-04

2014-03-02

戴虹(1977–),女,上海人,副教授,博士,主要研究方向为信号与信息处理、医学图像处理。电子邮箱daihong@sspu.edu.cn。

上海第二工业大学校级重点学科(通信与信息系统)第四期建设项目(No.XXKZD1302)资助

猜你喜欢

等值立方体骨骼
做家务的女性骨骼更强壮
三减三健全民行动——健康骨骼
异步电动机等值负载研究
内克尔立方体里的瓢虫
骨骼和肌肉
图形前线
立方体星交会对接和空间飞行演示
折纸
电网单点等值下等效谐波参数计算
基于戴维南等值模型的静稳极限在线监视