本站小编为你精心准备了体绘制技术的发展思路参考范文,愿这些范文能点燃您思维的火花,激发您的写作灵感。欢迎深入阅读并收藏。
1体绘制中的主要光照模型
体绘制首先要对每个体素赋以不透明度和颜色值,然后再根据各体素所在点的灰度梯度及光照模型计算出相应体素的光照强度,最后计算出全部采样点对屏幕像素的贡献,即像素的光照强度,生成结果图象.体素主要有两种模型,一种被定义为采样点中心就是体素中心的一个立方体,另一种被定义成由相邻的8个三维采样点所围成的立方体.体光照模型来源于物理光学模型,可分成吸收、发射、单/多散射和混合等多种模型.实际应用的体光照模型是由一种或多种光照模型组成的.在医学可视化中,常用的有以下几种:
(1)MIP(MaximumIntensityProjection)模型每个体素被认为是能发光的立方体,将所有体素沿视线方向投影到相应像素中的最大体素亮度作为最终像素的亮度.MIP主要应用于MRA和Ultra-sound[6]中.
(2)DRR(DigitalReconstructionRadio-gra-phy)或者X-RAY模型模拟X光穿过吸收介质,能量趋于衰减的模型.DRR主要应用于重构X光图象[7].
(3)源衰减模型这是一个光线的吸收和发射模型,也是体绘制中应用最多的光照模型[8].
(4)梯度表面和等值面模型这一模型广泛应用于医学数据集的体绘制中,文献[9]定义了梯度和不透明度,最终像素的值是不透明度和颜色值混合的结果.
(5)组合散射模型(ComposedScatteringMod-el)[10]这种模型与其他模型的不同之处在于,它将数据的分割与光的衰减看作是相关的两部分,不但能显示出图象的细微结构,而且能清晰地显示出边界表面.其主要应用于CT和MRI数据.
(6)全局光照模型[11]这种模型除了考虑以上光照效应外,还考虑了光线的折射、反射等效果,是一种最理想的也是最复杂的光照模型.在医学可视化中多使用前5种模型.
2体绘制的主要方法
体绘制方法主要有基于图象空间、对象空间、频域空间3种.下面主要对前两种体绘制方法的思想、主要的加速技术和提高图象质量的方法进行讨论.由于基于频域空间的体绘制方法绘制效果不理想,当前还没有应用到实际中.
2.1基于图象空间的体绘制
2.1.1基本思想
Levoy于1988年提出的光线投射算法是基于图象空间体绘制的经典算法[9].图象平面的每个像素都沿着视线方向发出一条射线,且此射线穿过体数据集.沿着这条射线选择k个等距采样点,并由距离某一采样点最近的8个数据点的颜色值和不透明度值作三线性插值,求出该采样点的不透明度和颜色值,最后将这条射线上的各采样点的颜色及不透明度值由前向后或由后向前加以合成,即可得到该像素的颜色值.
2.1.2主要的加速技术
光线投射法采用的主要加速技术有两方面,一方面利用图象空间的相关性尽量减少投射光线的数目,另一方面利用对象空间相关性尽量减少不必要的采样点数目以及相应的并行技术[12],这里不对并行技术进行讨论.
(1)减少投射光线的数目由于在结果图象中,相邻像素存在着相关性,也就是它们很可能有相似的颜色[13],因此并不需图象平面中的所有像素都投射出光线,而是间隔地投射出光线.结果图象上的两个间隔像素投射出光线,如果组合计算出对应像素的差值小于设定的阈值,则该间隔之间的像素就不用再投射光线,其像素值等于两间隔像素值的插值;否则必须投射中间像素的光线,必须单独计算像素值,这也称作自适应图象采样.
(2)减少不必要的采样点由于光线穿过体空间中的体素,有许多空的体素,或一条光线上的相邻采样点的值变化不大,因此可以从体数据的存储结构上来处理这种相关性,从而跳过空的体素,这种技术也称作空间跳跃技术(Space-Leaping)[14],是近年来研究较多的方法,下面重点介绍其中的几种.
①采用分层的数据结构将体数据表示成分层数据结构中的节点,每个空体素被指定一个能反映出它所属层次的值,当光线遇到这样的空体素时,可以向前跳到下一个非空的体素.Levoy使用金字塔分层数据结构来加速绘制.这种结构较为复杂,需要使用浮点运算[15].Glassner将体数据存储成八叉树的结构而不是网格结构.利用快速的八叉树遍历方法,绘制速度比利用网格结构提高很多[16].文献[17]使用八叉树分层结构,并充分考虑了用硬件实现的可能性.但由于在计算过程中,需要使用乘法和浮点运算,速度虽有提高,但还是不令人满意.文献[18]提出了一种称作BOXER的算法,对八叉树只使用整数和逻辑操作,以进一步加快处理速度.Wi-helms简化了八叉树的结构,提出了根据需要分叉[19].Jung基于八叉树数据结构,采用了一种新的光照强度的合成方法[20].他指出,在传统的结果图象中,像素的值为一系列采样点的透明度与明暗效应的积的组合,其中明暗效应相关于观察方向和光照方向.他采用一种新的分类标准,像素的值为一系列采样点的透明度与法向量的积的组合.按照切片数据集的特性,将数据分成4种块结构,在此基础上构造八叉树,其中透明度、法向量与观察方向和光照方向无关.文献[21]使用了TSP树来加快光线投射的绘制速度.
②数据预处理在数据的预处理阶段,每个空体素被指定一个值,这个值能反映出与邻近非空体素的距离,在绘制阶段可以直接跳过空体素[22].Sungup基于上述思想提出了一种更快的跳跃方法[23]:首先,快速遍历体空间,找出非空体素对应的像素,并只从这些像素投射出光线;然后,找到投射光线遇到的第1个非空体素和最后一个非空体素,对在此之间的非空体素,按其对像素的贡献进行组合,以得到对应的像素值.为了加快绘制速度,在预处理阶段还对体数据进行了游程编码压缩.
③使用边界体素先找出给定对象的边界体素,将边界体素投影到屏幕上,并对相应的投影像素建立相应的最近深度和最远深度值;然后由投影区域中的像素向外产生投射光线,在组合计算对应像素值时,只需计算两个深度之间的非空体素值[24].
2.1.3提高图象质量的主要方法
光线投射算法生成的图象质量主要取决于准确的采样方法、理想的局部光照模型[10,25]和合理的数据处理技术.以下着重讨论在采样和数据处理这两方面提高图象质量的研究进展.
(1)采样方法的改进Muller指出,在体绘制过程中要沿着视线方向在整数的体素网格中重采样,对于透视投影来说,这种整数的体素网格随着到结果图象的距离越远,网格间距就越小,如果采样频率低于奈魁斯特频率极限值,体绘制的结果就会出现走样[26].在采样频率不可能高于奈魁斯特频率极限值的情况下,可以采用低通滤波来去掉极限值的高频成分.对于平行投影而言,这种低通滤波在整个体数据中是一致的,但对于透视投影来说,这种低通滤波应根据体数据位置的不同而不同.由于透视投影产生的变形,这个频率会随着体数据到结果图象平面距离的增加而变大.如果在离图象平面一定距离处定义一个子平面,并为此距离设置一个合适的采样率(高于奈魁斯特频率极限值),那么小于此距离的体数据投影到一个像素的个数少于1,体绘制的结果就不会出现走样;而距离越大,投影到一个像素的体数据个数就越多,此时采用与体数据位置有关的低通滤波来实现反走样.文献[27],[28]也对数据采样方法进行了改进.
(2)数据处理Cai等人提出,在体数据空间下的一般分割(皮肤、软组织、骨骼、脑组织、脑膜等)方法,忽略了对象的许多细微结构[29].为了准确显示这些结构,文献[10]中使用CSM组合散射模型,基于子体素空间,自动分割体数据.在邻近层(软组织与骨骼、脑膜与脑组织等)之间的细微结构,在子体素空间被分解,再缩减映射到原来的体素空间,显示出这些细节.体数据按照这些细微结构与邻近层(内层、外层)之间的位置关系,将体数据分为4种情况,通过Marr-Hildreth卷积产生zero-crossing图象,这些细微结构被分解成更小的、独立的细节或仅与内层或外层连接.使用扫描线算法实现体数据的自动分割,然后使用CSM模型绘制分割的数据集.为了清晰地显示出细微结构,在CSM中还使用了透明度和散射强度信息.这种算法对于MRI数据不但能清楚、准确地显示出人体头部的血管、脑组织、脑膜等组织结构,而且还能显示出大脑、小脑、眼球、骨髓等细微结构.文献[30]
使用分段投射光线和体素密度之间相互比较的方法进行对象各部分之间的分割,从而进一步提高绘制速度.文献[31]对数据的预处理分为两个阶段,首先在底层使用卷积操作来平滑体素的灰度梯度,在高层找出像血管、神经这样的细微结构,然后使用边缘测试和Hough变换等三维图象处理操作分析体纹理.在绘制阶段,加上表面细节就可以清晰地显示出对象内部的细微结构.文献[32]提出了一种提高结果图象局部区域质量的方法,使用这种方法可以显示出人们感兴趣区域的细节,通过交互的或者由数据本身产生的轨迹还可以动态地改变区域,以显示出整个图象的细微结构.对于每个体数据,考虑到它相对于感兴趣区域的位置和视点的位置,使用一种放射状的权对称函数,赋给每个体素以权值.在光线投射法中,沿着视线方向采样到的体素具有不同的权值,特定区域中的体素权值较大,区域外的体素权值较小,这样在结果图象中就可以突出显示特定区域的细微结构.为了突出这个区域并维持整个体数据中权函数的一致性,绘制过程被分解为基部分和辅助部分.权函数也可以根据具体的区域和该区域周围的数据而改变,这些权函数有双圆锥函数、椭圆函数、平房根椭圆函数等.这种技术可应用于MRI、CT和Ultrasound数据集中.另外,文献[33],[34]也对数据进行了处理以提高图象质量.
2.2基于对象空间的体绘制
2.2.1基本思想
对体数据将逐层、逐行、逐个地计算每一个数据点对图象平面中像素的贡献,并加以合成,形成最后的图象.体数据可以按照距图象平面由近到远的顺序投影,也可以按照由远到近的顺序进行投影.基本的方法有两种:(1)溅射(Splatting)算法[35]首先选择重构核,预计算通用足迹表,然后将体数据转换到图象空间,查表找出体素对于像素的贡献值,最后合成图象.对于光线投射法来说,当观察方向改变后,就需要重新采样并进行插值运算,而对于Splatting方法,若视线方向发生变化,就需要重新计算重构核空间卷积域的椭圆投影,投影中的每个像素都需进行旋转和比例变换,以便查找通用足迹表,因此针对以上问题提出了错切-变形(Shear-Warp)算法.(2)错切-变形(Shear-Warp)算法[36]将三维视觉变换分解成三维错切变换和两维的变形变换.体数据按照错切变换矩阵进行错切,投影到错切空间形成一个中间图象,然后,中间图象经变形生成最后的结果图象.这种算法最重要的特点就是按照主要的视线方向(X,Y,Z)选择切片数据集和投影数据,当视线的方向发生变化后,投影方向不一定变化.
2.2.2主要的加速方法
基于对象空间的体绘制算法的加速技术主要是围绕着数据的存储结构和数据压缩以及体数据的空间相关性,通过访问尽可能少的体素来提高速度而不明显降低图象质量.
(1)数据的存储结构和数据压缩分层Splat-ting的方法[37]就是将体数据表示成一种金字塔型的结构,然后按照所期望的图象质量从后到前扫描金字塔相应的层绘制图象.文献[38]~文献[40]利用小波多分辨率分析的特性压缩体数据,将其表示成多层结构,按照需要显示多分辨率的图象,同时,还提出了基于有限元的自适应网格优化方法.文献[41],[42]使用索引数据机制,访问所需的数据.在数据的预处理阶段,对体数据进行索引,这种索引独立于观察方向,只需进行一次.根据索引信息,结合快速查找方法能够快速找到符合条件的数据进行投影.另外,游程编码(Run-LengthCoding)[43]是一种简单而有效的体数据压缩方法.文献[44]对游程编码方法进行了改进,以减少对于体数据的遍历次数,节省预处理时间,适用于灰度变化缓慢的体数据集.文献[45]将splatting方法设计成传递函数的形式,其包括核函数、核的宽度、足迹表的大小3个参数,并对这些参数进行检查和优化,使spaltting方法更加方便快捷.
(2)利用体数据的空间相关性:空间相关性是指三维数据场中相邻的采样点往往有着相同或相近的函数值这种特性.Wihelms等人的体元投射法[46]正是利用这种特性提出来的.在平行投影下,一个立方体元(8个相邻的体素)能够最多被分解成7个子体元,每个子体元的前、后面投影到屏幕的同一位置,预计算生成统一的投影模板,对于每一个给定的观察方向,每个体元的投影形状相同,只是位置不同,这就可以选择相应的模板进行投影.文献[47]进一步利用体元函数值的相关性,提出了子区域投射法,通过给定的阈值将数据场划分为由曲面围成的子区域,对边界面投影.文献[48]使用体元块投射法,将具有相似属性的体元合并成长方体块,对长方体块进行投影.
2.2.3提高图象质量的方法
一般来说,对象空间的算法是直接投影体素,没有光线投射法类似的走样问题,主要围绕着重构核函数、足迹表、体数据的处理这3方面来提高图象的质量.
(1)重构核函数的处理对于Splatting算法,重构核函数有高斯函数、圆锥函数、Sine函数等多种.按不同的重构核函数重构的连续三维数据场,生成的图象质量是不同的,采用圆锥函数为重构核生成的图象质量比较好.Muller指出,在透视投影下,视线不再是一组平行的射线,而是发散的,距离结果图象平面的距离越远,体数据的密度就越大,这也就使重构核函数在世界空间产生一种变形[26].可以通过透视核函数变换方程,按照距离图象平面的远近,扩展足迹表来实现透视投影情况下的反走样.文献[49],[50]指出了Splatting算法存在的另一问题.在Shear-WarpSplatting算法中,使用彼此平行的切片数据来累加对结果图象的贡献,切片数据被按照从前往后或从后往前的顺序组合.这种做法使得当主要的观察方向由体数据的一个轴变换到另一轴时,会出现一个“POPPING”走样.这是由于在算法中,体数据不是一组支持插值的离散数据点,而是与切片平面相交的球形插值核.每一个球形核被相互平行的切片平面分成多个部分,核部分的厚度由切片之间的距离决定.只计算落在切片之间的部分,一旦一个切片缓冲区收到了所有体素的贡献,就将它累加组合到当前的累加缓冲区中.算法逐个处理每一个切片数据,这样就可以实现反走样.根据核函数的对称性和核函数与切片平面的位置关系,将落在切片之间的部分按4种情况进行预计算.
(2)足迹表的处理足迹表的大小也会影响图象的质量,小的足迹表会产生较大的走样,大的足迹表会对走样起到平滑作用,但计算量也会加大.Cai指出,Shear-Warp算法中,错切的仅仅是切片,而实际上,立方体素在错切过程中变成了平行六面体,因此一个体素不仅对其中心点对应的像素有贡献,还对相邻的像素也有贡献[51].考虑到错切的最大角度是45°,因此一个体素最多对结果图象平面上的2×2个像素有贡献,体素的初始位置可能与像素的位置有偏差,最多可影响到3×3个像素.在最近邻点插值、标准插值、三线性插值3种模式下,对这些像素建立“足迹表”,权值与平行六面体的高度(切片之间的距离)有关,从而既加快了绘制速度,又提高了图象质量.
(3)体数据的处理由目前的医疗设备获得的医学图象数据信息非常丰富,采用现有的可视化方法,要想获得所有这些信息是不可能的,采用Slid-ingthin-slab(STS)算法,可以揭示出数据信息内部的结构.它使用一个滑动的窗口逐步地通过切片数据集,这个窗口的深度指的是切片的数量,窗口内的数据可以按照选择的方法去处理.文献[52]使用了DepthWeightedMaximum(DWMax)和ExtremeGradient(EG)两种技术实现STS方法.DWMax技术结合了深度与灰度信息,不需要透明度和梯度信息.在一个窗口数据集中,为一组切片中的每个切片按照它们的位置关系定义相应的权,该窗口对应的结果图象中,像素的灰度值是窗口切片集中相应体素的灰度与权值乘积(规一化)中的最大值,它能准确地反映出体数据内部的位置与灰度信息.EG技术结合了最大与最小STS,能反映出体数据局部的灰度变化.该窗口对应的结果图象中像素值是相应体素的最大与最小灰度的差值.这两种技术在计算过程中都使用了前面的计算结果,需要较少的存储,计算效率较高,可以实时地显示.文献[53]~文献[55]也使用了STS技术来显示数据所表示的内部结构.文献[56]将Shear-Warp方法与多边形模型相结合,提高了结果图象的质量.文献[57]考虑到实际CT成像的物理参数,调整光学模型和传递函数中的参数值,大大提高了结果图象的质量.
3结论与实验结果
由于基于图象空间的体绘制算法比较容易理解,各种加速方法和提高图象质量的方法比较多,目前应用的数量比较多、范围比较大.但基于对象空间的体绘制方法直接存取体数据,不存在类似基于图象空间的体绘制方法那样的因采样数据而产生的走样;它逐个切片地处理体数据,所以能够十分方便地优化体数据的存储(压缩、索引、存储分块),以避免不必要的体数据遍历;在预处理阶段就可以为数据的投影做加速准备(优化足迹表、设计各种合适的数据结构).上述的优点决定了以后的研究方向主要集中在基于对象空间的体绘制算法.现代医疗设备提供了丰富的医疗图象数据,前面讨论的各种提高图象质量的方法还不足以揭示出其包括的丰富内涵.当前迫切需要能够运行在PC上的、能够反映出所感兴趣内容并且速度令人满意的方法.是在Intel600MCPU、128M内存、A-SUS6800Delux(Geoforce256DDR)显卡、32M显存计算机上测得的一些数据.源数据(CT)来自于VisibleHuman,大小为256×256×169.其中前3种算法未使用加速技术,后面两种算法使用了相应的加速技术,其中Raycasting使用了文献[16]中的space-leaping技术。