A New Algorithm for Direct Volume Rendering
of Medic Image Series
Wang Xu1Zhao Xinbo1Gui Yeying1Yang Pengji1Lin Tianyi2
1 (CAD/CAM Research Center, Northwestern Polytechnical University, Xi'an710072)
2 (Department of Biomedical Engineering,Zhejiang University, Hangzhou310027)
AbstractIn this paper, a new algorithm based on Voxel Model is proposed. This algorithm combines the advantages of surface rendering and direct volume rendering. In the process of 3D reconstruction, OpenGL graphic standard and hardware accelerator can be used. By doing so, better reconstruction, result and fast speed can be achieved. Also, it is simple to turn this algorithm into programs.
Key wordsVoxelOpenGL Graphic StandardData classification3D reconstruction
1前言
最近几年,由于计算机工业的飞速发展以及某些应用领域(如医学、气象学、地质石油勘探等)对计算机图形处理的日益需求,使得计算机图形学的一个重要分支——数据场及体绘制以及科学可视化(Volume Rendering & Visualization in Scientific Computing, VR&ViSC)迅速发展并日趋完善。
科学可视化最活跃的领域是体可视化。体可视化是这样一个过程:它把多维的数据集投影到二维的图像平面,其目的是为了得到对包含在体数据中的结构的理解。通常数据集定义在三维点阵上,在晶格上有一个或多个标量值,可能还有一个或多个矢量值。体可视化广泛应用于医学、地学、空间物理、化学、微生物学、机械工程、无损检测以及其它一些科学工程领域。
我们将要探讨的是医学图像序列——一种三维标量体数据集的体绘制方法,文中提出了一种直接体绘制模型——体素绘制模型,采用该模型的体绘制算法结合了面绘制及直接体绘制的优点,该算法亦可推广到其他领域图像序列的三维重建的应用中。
2算法原理
体数据集一般是定义在三维空间网格上的标量或向量数据,这些网络一般是正交网格。数据一般定义在网格节点上,相邻的八个网格节点构成一个立方体。
如图1所示,假设在空间有一个长为(L-1)×VX,宽为(M-1)×VY,高为(N-1)×VZ的长方体,此长方体的面平行于坐标面,对于节点(i,j,k),i=0,1,…,L-1,j=0,1,…,M-1,k=0,1,…,N-1,它对应的空间位置为(i×VX,y×VY,k×VZ)。体数据为一三维数组,大小为L×M×N,它们一般定义在此三维空间网格的网格节点上:在节点(i,j,k)处,有体数据值f(i,j,k)。
图1体数据集数据定义示意图
Fig 1Data Definition of Volume Data Set
在本文所采用的体绘制算法中,体数据则定义在此三维空间网格的各立方体上,称之为体素,即体素(i,j,k)有体数据值f(i,j,k)。针对医学图像序列而言,即每幅图像的一个像素被扩展为三维空间的一个匀质的体素(如图2所示),该体素的体数据值f(i,j,k)即为其所对应像素的灰度值、颜色索引值或是颜色值。可以根据一个算子,从体数据值f(i,j,k)得出体素(i,j,k)所对应的颜色分量C(i,j,k)及非透明度O(i,j,k)。最终的三维重建效果由这些透明的或非透明的体素堆积而成。采用这种模型的好处是:算法简单,可以使用OpenGL图形标准,利用硬件加速实现重建过程。
图2医学图像序列体素定义示意图
Fig 2Voxel Definition in MEDIC IMAGE SERIES
为了减少重建过程中所需处理的体素数量,从而加快三维重建的速度,在三维重建以前可以对需重建的体数据集进行预处理:把非兴趣体素全部置为背景体素。这样,在三维重建过程中,只要遇到的是背景体素,就可不用对体素进行绘制操作。
使用OpenGL三维图形标准,可以非常方便地绘制立方体,并对其赋予一定的颜色及非透明度,而这正是实现本文的三维重建算法所需要的基本功能。
3三维重建步骤
采用本文的重建算法对医学图像序列进行三维重建,需完成以下几个步骤:
3.1图像预处理
医学图像序列的图像尺寸一般较大,为了减少重建过程的运算量,可在保持其长宽比不变的前提下,缩小它们的尺寸;进行图像配准,以保证图像序列的坐标系保持一致;过滤掉医学图像序列中的噪音和超出范围的值。
3.2原始体数据构造
将处理过后的图像序列依次存储到一个文件当中,构造为一个原始体数据集文件。该文件的文件头包含图像序列的大小、帧数,其后是各幅图像的像素R、G、B值,或是灰度值。该文件是后续处理的数据来源,从中可以非常方便地浏览图像序列中的各帧图像。
3.3进行数据分类或阈值处理
数据分类是体可视化用户必须做的最困难的工作。在数据分类过程中,可以把体数据集中的体素分为两部分:与重建实体无关的体素称为背景体素,而与重建实体相关的体素则称为前景体素。通过对体数据进行遍历,用一定的判定标准区分出背景体素与前景体素。
3.3.1组织分割为了区分背景体素与前景体素,采用了简单、有效的阈值判断方法,即给定一个前景阈值Cj,及误差ε,则对于任意体素P,设其体数据值为Cp,则:
Vf={P|Cp-Cj|≤ε,P∈V}
Vb={P|Cp-Cj|>ε,P∈V}
V=Vf U Vb
其中:Vf为前景体素集;Vb为背景体素集;V为总体素集。
对于彩色图像序列体数据集,Cp与Cj均为颜色向量,它们的三分量为R,G,B;对于灰度图像序列体数据集,Cp与Cj均为灰度值;
从上述描述中看到,采用阈值法提取前景体素的关键在于确定阈值Cj,及误差ε,为此,我们采用了交互的方式。即首先由用户从体数据集中选出一幅包含有较多前景体素、具有代表意义的样本图像;然后由用户从该图像中点取一典型的前景体素值作为一个备选阈值C′j,并给定一个备选误差ε′;系统将自动查询并标识出所有满足条件的体素集,若用户对该提取结果满意,则取Cj为C′j,取ε为ε′,否则用户可通过改变C′j或ε′直到达到满意的提取结果为止。
3.3.2确定组织非透明度下面将分两个方面介绍怎样给分离出来的组织数据集赋与一定的非透明度。(1)单组织:采用以上介绍的阈值法,并加以交互干涉,可以较精确地提取出某种组织的体数据集。该组织保持其颜色不变或变为指定的颜色,将该组织的非透明度设置为1或一个较大的值(如0.70等),为以后的绘制工作做准备。(2)多组织:将两个或两个以上的体数据集合并到一个体数据集当中,便可得到一个包含多种组织信息的体数据集。此时必须应用三维增强技术,即把某些区别很小的物质转换成区别比较大的物质。例如,肌肉和脂肪在照片上灰度相近,此时可用区别很明显的颜色分别代表肌肉和脂肪,以便于区分。
在灰度体数据集与彩色体数据集结合之前,应将灰度值映射为R、G、B值,其映射关系为:
fi=fg(i=R、G、B)
其中:fi为色彩的R、G、B分量;fg为体数据集的灰度值,它满足0 fg255。
对CT数据而言,常常把骨头密度映射成不透明的,肌肉密度值映射成红色/半透明的,脂肪密度值映射成米色/几乎全透明的,非透明度值的轻微变化常常使图像产生显著的改变。
3.3.3体素绘制在数据分类之后,通过采用OpenGL图形标准,用映射操作把以上提取出的体数据集的前景体素分层,层内按图像象素排列顺序依次映射到显示图元——单位立方体上,便可以得到令人满意的三维重建效果。另外,通过使用OpenGL图形标准,可以非常方便地对重建结果进行旋转、比例缩放等
