三维重建算法原理
www.CadCaeCam.com/Forum/index.htm
CadCaeCamPlm 专业门户网站收集整理 版权属于原作者 联系 [email protected]
三维重建算法原理
——Marching Cube 算法原理、Ray-casting 算法原理 作者:希望(rinqar) QQ:150778770 E-mail:[email protected]
感谢:果果、歪歪、orange Helena 的协助 感谢我的老师杜宇慧老师的支持 1.1 Marching Cube 算法原理 1.1.1 Marching Cube 算法概述 面绘制法则是根据设定的阈值,从体数据中提取出表面的三角面片集,再用光照模型对三角面 片进行渲染,形成三维图像。面绘制法主要分为基于断层轮廓线的方法和基于体素的方法。基于断 层轮廓线的方法是先在不同的断层上提取出感兴趣区的轮廓线,然后在相邻的断层的轮廓线间构造 出三角面片的方法,这在同一断层上有多个轮廓线时会产生模糊性,上下两层的轮廓线不易对应。 用户干预可以避免一定的模糊性,但是这样大大增加了操作的复杂性。因此不被广泛采纳使用。基 于体素的方法以移动立方体法(Marching Cube,MC)为代表。 Marching Cubes算法是面显示算法中的经典算法,它也被称为“等值面提取” (IsosurfaceExtraction)本质是将一系列两维的切片数据看做是一个三维的数据场,从中将具有 某种域值的物质抽取出来,以某种拓扑形式连接成三角面片。算法的基本原理MC算法的基本思想是 逐个处理体数据场中的各个体元,并根据体元各个顶点的值来决定该体元内部等值面的构造形式" 算法实现过程中,体元内等值面构造要经过以下两个主要计算:1、体元中三角面片逼近等值面的计 算;2、三角面片各顶点法向量的计算。 1.1.2预备知识介绍(体素模型和等值面介绍) 1、体素模型的介绍 体素一般有两种定义: 一种与二维图像中像素定义相类似。 直接把体数据中的采样点作为体素, 另一种是把八个相邻的采样点包含的区域定义为体素。 在三维空间某一个区域内进行采样,若采样点在x,y.z,三个方向上分布是均匀的。采样间距分 别为 x, y, z ,则体数据可以用三维数字矩阵来啊表示。每八个相临的采样点采样点相临的立方体 区域就定义为一个体素。而这八个采样点称为该体素的角点。他们的坐标分别为: (i,j,k),(i+1,j,k),(i,j+1,k),(i+1,j+1,k),(i,j,k+1),(i,j,k+1),(i+1.j+k+1),(i,j+1,k+1)
www.CadCaeCam.com/Forum/index.htm
CadCaeCamPlm 专业门户网站收集整理, 版权属于原作者 联系 [email protected]
第 1 页 共 16 页
www.CadCaeCam.com/Forum/index.htm
CadCaeCamPlm 专业门户网站收集整理 版权属于原作者 联系 [email protected]
和(i+1,j+1,k+1)如图所示
图3-2
移动立方体的体素
对于体素内任一点 P 6( x, y, z ) ,其物理坐标可以转换为图像坐标 i 6,
j ,k
6
6
其中
i
6
= x
x,
j
6
= y
y, k 6
=z
z
.当把方向无关的三个线性插值作为体素模型时,其值可以表示为:
2、等值面(Iso-Surface)介绍
www.CadCaeCam.com/Forum/index.htm
CadCaeCamPlm 专业门户网站收集整理, 版权属于原作者 联系 [email protected]
第 2 页 共 16 页
www.CadCaeCam.com/Forum/index.htm
CadCaeCamPlm 专业门户网站收集整理 版权属于原作者 联系 [email protected]
在面重建算法中以重建等值面这一类算法最为经典。我们进行表面重建的目 的就是用分割提取出的区域构建出对应组织或器官的三维几何模型。等值面的构造就是从体数 据中恢复物体三维几何模型的常用方法之一。如果我们把体数据看成是某个空间区域内关于某种物 理属性的采样集合,非采样点上的值用邻近采样点插值来估计,则该空间区域内所有具有某一个相 同值的点的集合将定义一个或多个曲面,称之为等值面。因为不同的物质具有不同的物理属性,因 此可以选定适当的值来定义等值面,该等值面表示不同物质的交界。也就是说,一个用适当值定义 的等值面可以代表某种物质的表面。 等值面是空间中所有具有某个相同值的点的集合,它可以表示成,
{( x, y, z ), f ( x, y, z ) = c}
其中C为常数。 并不是每个体素内都有等值面,当体素内角点都大于C或者都小于C时其内部不存在等值面只有 那些即大于C又小于C的角点的体素才含有等值面,我们称这样的体素为边界体素。等值面在一个边 界体素内的部分称为该体素的等值面片,等值面是一个三次曲面,它与边界体素面的交线是一条双 曲线且这条双曲线仅由该面上四个角点决定。这些等值面片之间具有等值拓扑一致性,即它们可以 构成连续的无孔的无悬浮面的曲面 (除非在体数据的边界处) 因为对于任何两个边界共面的体素, 。 如果等值面与他们的公共面有交线,则该交线就是两个边界体素中等值面片与公共面的交线,也就 是说这两个等值面片完全吻合,所以可以认为等值面是由许多个等值面片组成的连续曲面 由于等值面是三次代数曲面,构造等值面的计算复杂,也不便于显示,而多边形的显示则非常 方便,所以,等值面的三角面片拟合是常用的手段。我们本章论述的MC算法便是在边界体素中生成 三角面片,以三角面片拟合成等值面。 1.1.3 移动正方形法 移动正方形法是一种二维算法,它是移动立方体法的依据。移动立方体法Marching Cube正是 移动正方形法的三维引申发展起来的。 移动正方形法也是找等值线的一种方法。 首先找四个相邻的象素, 编号为 1, 3, 如图 3-3 2, 4, 所示。每个象素值有大于阈值和小于阈值两种情况,如果象素值大于阈值用代码 1 表示,用圆圈 表示,如果小于阈值就用 0 表示。四个点就有 16 种组合形式,图 4列出了所有的可能组合形式。 每一种形式就是等值线与正方形边之间的一种拓扑关系。图中的虚线就是等值线的路径。没有虚线 的形式说明等值线不该正方形相交。以 0001 图为例,该图中左下角的象素值大于给定值,其它三 个象素小于给定值,那么可以推断出等值线的一侧是圆圈代表的象素,另一侧是另外三个象素,那
www.CadCaeCam.com/Forum/index.htm
CadCaeCamPlm 专业门户网站收集整理, 版权属于原作者 联系 [email protected]
第 3 页 共 16 页
www.CadCaeCam.com/Forum/index.htm
CadCaeCamPlm 专业门户网站收集整理 版权属于原作者 联系 [email protected]
么等值线只能以图中虚线所示的这种方式与正方形相交。等值线与正方形边的交点坐标可以用线性 插值来求得。这样当一幅图像中的所有正方形都求出了各自的一段等值线后,这些线段自然而然的 就连成了一个闭合的等值线了。移动正方形算法如下: ① 在一幅图像中求出所有四个相邻象素点构成的正方形。 ② 判断四个象素值与阈值的关系,生成 0101 的代码。 ③ 由上步生成的代码按照图4-5所示的关系求出等值线与四个象素点间的 拓扑关系。 ④ 由拓扑关系,用线性插值法求出等值线与正方形边的交点。 ⑤ 顺序连接等值线段就得到等值线了。
图3-3
移动正方形等值面的几种情况
1.1.4移动立方体(Marching Cubes)算法 MC算法的基本假设是沿着立方体的边的数据场是呈连续线形变化的,也就是说如果一条边的两 个顶点分别大于小于等值面的值,在该边上庇佑且仅有一点是这条边与等值面的交点。确定立方体 体素等值面的分布是该算法的基础。 这里我们将理论与重建示例相结合使我们对MC算法进行更深一步的了解。 首先我们将经过处理后的图片切片数据可以看做是一些网格点组成的,这些点代表了密度值。
www.CadCaeCam.com/Forum/index.htm
CadCaeCamPlm 专业门户网站收集整理, 版权属于原作者 联系 [email protected]
第 4 页 共 16 页
www.CadCaeCam.com/Forum/index.htm
CadCaeCamPlm 专业门户网站收集整理 版权属于原作者 联系 [email protected]
计算图示 3-4
CT、MR图像的灰度单位网格
每次读出两张切片,形成一层(Layer)
算法图示3-5
连续读出两张图片所构成的 Layer
两张切片上下相对应的八个点构成一个Cube,也叫Cell,Voxel等。由相邻层上的各4 个像素组 成立方体的8 个顶点,这 8个像素构成一个立方体。我们把这个立方体叫做体素。为了确定体元中 等值面的剖分方式,因此所求等值面要的一个门限值,然后对体元的八个顶点进行分类,以判定顶点 是位于等值面之内还是位于等值面之外;再根据顶点分类结果确定等值面的剖分模式。顶点分类规 则为 (1)如果顶点的数据值大于等值面的值,则定义该顶点位于等值面之内,记为“1”;顶点密度值
www.CadCaeCam.com/Forum/index.htm
CadCaeCamPlm 专业门户网站收集整理, 版权属于原作者 联系 [email protected]
第 5 页 共 16 页
www.CadCaeCam.com/Forum/index.htm
CadCaeCamPlm 专业门户网站收集整理 版权属于原作者 联系 [email protected]
≥域值,Inside (0)
计算图示3-6 8个顶点内点外点在cube中的表示 那么这个等值面必定与三维图像的某些体素相交与其它体素不相交。对于某一个体素来说要么 与等值面相交要么在等值面的某一侧,不与等值面相交。MC 方法的思想就是找出所有与等值面相 交的体素,再分别找出每个体素与等值面相交的交面,这些交面连在一起就是所求的等值面。 首先要确定等值面通过那些体素,然后在确定等值面如何与体素相交。当一个体素中一些象素 的值大于阈值,而另一些象素小于阈值,那么等值面必然通过这个体素,一个体素的 8 个象素的 值全都小于阈值或者全都大于阈值的话,那么该体素不与等值面相交,等值面不通过该体素。 当一个体素与等值面相交的话,必然有一些象素值大于阈值,一些小于阈值。每个象素有两种 状态,要么大于阈值,要么小于阈值确定包含等值面的体元。对于8个角点都为1或者都为0的体素, 它属于“0”号结构没有等值面穿过该体素。当有1个角点标记为1时为1号结构我们用1个三角面片 代表等值面它将该角点与其它七角点分成两部分。 对于其余几种构型将产生多个三角面片。 flag( i, j, k ) = 0 ( 1 )256种情况。因此共有256 种组合状态。每一种组合都对应一种等值面与体素相 交的情况。因为 8 个点有对称关系,256 种组合经可简化为如图,的15 种情况。每一种关系对应 等值面如何与体素相交,知道了等值面如何与体素相交后就可以求得等值面与立方体边的交点,这 些交点形成的面片就是等值面的一部分。当把所有与等值面相交的体素都找到,并求出相应的相交 面后,等值面也就求出来了。黑点标记为(1)的角点。
www.CadCaeCam.com/Forum/index.htm
CadCaeCamPlm 专业门户网站收集整理, 版权属于原作者 联系 [email protected]
第 6 页 共 16 页
www.CadCaeCam.com/Forum/index.htm
CadCaeCamPlm 专业门户网站收集整理 版权属于原作者 联系 [email protected]
计算图示3-7 256种组合简化后的15种等值面与体素相交构成三角面片情况 应用上面的15种构型情况的具体方法是:对于每个体素根据它的索引在“构型-三角抛分形式 然后再根据相应索引项中的旋转参数具体确定最终的三角剖分。从而根据上面的状态表当前体元素 属于哪种情况以及等值面与哪一条边相交。 1.1.5 求等值面与体素边界的交点 在确定立方体的三角剖分模式后,就要计算三角面片顶点位置。当三维离散数据场的密度较高 时,即当体素很小时。可以假定函数沿体素边界呈线性变化,这就是MC算法的基本假设,因此根据 这一基本假设可以用线性插值计算等值面与体素边界的交点。 MC算法的基本假设是沿着体元的棱边数据场呈线性变化,即如果一条棱边的两个数据场值分布 大于或小于等值面值,则这条边上由且仅有一点是等值面与该边界的交点。在已知结构空间网格结 构点上某一物理量值的前提下。设对任意网格结构点M的直角坐标系下。以M(x,y,z,q)表示,其 中x,y,z分别为M点的直角坐标值,q为该结点的物理量值(实际上等值面的等值点就是结构物体内 所有具有相同量值得点。假定在结构体内等值点分布在离散网格的边棱上。 空间等值点的判断;根据以上的假定,任取一离散网格边棱。设棱边上两结点分别为:
M (x y z q )和M (x y z q
i i, i, i, i j j, j, j,
值点判定条件式)则
M
i
和M
j
) ,取量值的等值为C,当满足 ( q c ) ( q c ) ≤ 0(公式3-1 等 两点间庇佑等值点 M ,另设等值点 M 的坐标为 ( x y z ) ,
j i j
o o o, o, o
由 M i 和 M j 两点根据线性插值理论可得:
www.CadCaeCam.com/Forum/index.htm
CadCaeCamPlm 专业门户网站收集整理, 版权属于原作者 联系 [email protected]
第 7 页 共 16 页
www.CadCaeCam.com/Forum/index.htm
CadCaeCamPlm 专业门户网站收集整理 版权属于原作者 联系 [email protected]
公式 3-2 等值点坐标公式 其中 k =
( q c ) ( q c ) ≤ 0 根据等值点判定条件式3-1,和等值点坐标公式(3-2)可以按结构
i j
离散信息对网格棱边进行搜索判断,从而求出指定域中结构体所有等值点。求出等值点以后,就可 以将这些等值点连接成三角形或多边形形成等值面的一部份。 1.1.6等值面的法向量的计算 为了利用图形硬件显示等值面图像,必须给出三角面片个等值面的法向,选择 适当的关照模 型进行适当的光照计算,生成真实感图形。对于等值面上的每一点,其沿面的切线方向的梯度分量 应该是零,因此沿该点的梯度矢量方向也就代表了等值面在该点的法向。而且等值面往往是具有不 同密度物质的分界面,因而其梯度矢量值不为零值即:
g ( x, y , z ) = f ( x, y , z )
公式 3-3
梯度矢量公式
直接计算三角面片的法向是费时的,而且,为了消除各三角面片之间的明暗度的不连续变化, 只要给出三角面片各顶点处的法向并采用哥罗德(Gouraud)模型绘制各三角面片就行了。这里我们 采用中心插分方法来计算各体素各角点的梯度。在三角形的情况下,计算出每一个三角形面片的法 向量,然后用三角面的法向量求得每个顶点的法向量,最后用三角形三个顶点的三个法向量插值求 出三角形面上某一点的法向量。对于等值面来说有简单的方法计算顶点的法向量。考虑等高线的情 形。等高线的梯度方向与等高线的切线垂直,即可以用梯度代替等高线的垂线。推广到三维情况, 等值面的梯度方向就是等值面的法向方向。
公式3-4 插分梯度计算公式 其中x,y,z都是体素长 1.1.7 MC 算法步骤 ① 根据对称关系构建一个 256 种相交关系的索引表。该表指明等值面与体素的那条边相交。
www.CadCaeCam.com/Forum/index.htm
CadCaeCamPlm 专业门户网站收集整理, 版权属于原作者 联系 [email protected]
第 8 页 共 16 页
www.CadCaeCam.com/Forum/index.htm
CadCaeCamPlm 专业门户网站收集整理 版权属于原作者 联系 [email protected]
② 提取相邻两层图片中相邻的 8 个象素, 构成一个体素并把这 8 个象素编号。 如图 3-8 所 示。 ③ 根据每个象素与阈值的比较确定该象素是 1 还是 0。 ④ 把这 8 个象素构成的 01 串组成一个 8 位的索引值。如图 3-8 所示。 ⑤ 用索引值在上边的索引表里查找对应关系,并求出与立方体每条边的点。 ⑥ 用交点构成三角形面片或者是多边形面片。 ⑦ 遍历三维图像的所有体素,重复执行②到⑥。
计算图示3-8 体素索引图示 1.1.8MC算法分析 根据上面对 MC 方法的介绍,可以认为 MC 方法是求等值面,进行三维表面 重建的好方法,但 MC 方法还存在以下问题。 ① MC 方法构造的三角面片是对等值面的近似表示。首先,等值面与体素边 界交点是用线性插值求得的。当体数据密度高时,体素很小,MC 方法中的三角面片与等值面 比较接近,重建的效果好。当体数据比较稀疏时,这种重建方法将会产生较大的误差。 ② MC 方法中,在体素的一个面上,如果顶点值为 1 的象素和顶点值为 0 的象素分别位于对角线的两端,那么有两种可能的连接方式,因此存在连接方式的二义性,如 图 3-9 所示。这样的面称为二义面,包含 1 个以上的二义性面的体素就称为具有二义性的体素。 在图 3-7 中的 15 中情况中,第 3,6,7,10,12,13 这几种情况都具有二义性。这种二义性 如不解决,将造成等值面连接上的错误,从而形成空洞,如图 3-10 所示。等值面应该是连续的 曲面,MC 中相邻体素重建出来的三角面片应该彼此相接,因为重建出来的三角面片有错误,相邻 的三角面片不相接了,这样等值面上就出现了孔洞。
www.CadCaeCam.com/Forum/index.htm
CadCaeCamPlm 专业门户网站收集整理, 版权属于原作者 联系 [email protected]
第 9 页 共 16 页
www.CadCaeCam.com/Forum/index.htm
CadCaeCamPlm 专业门户网站收集整理 版权属于原作者 联系 [email protected]
图示3-9 MC算法中的二义性
图示3-10
由于二义性引起的形成的空洞
③ 在图 3-7 中,可以看出 7 号以后重建出来的三角面数多于 3 个,每个体素上都有几个 三角形,重建出来的三角面片很多,也很零碎。如果 MC 方法的输入数据是灰度图,而不是分割后 的二值图的话, 那么所有体素都会重建, 所有存在象素值小于和大于阈值的体素都重建出三角面片, 就会重建出多余的等值面。而我们要的结果一般是一个物体的等值面。如果是用分割后的数据进行 重建,那么所有的象素是二值的,要么是 0,要么是 255,MC 法求的等值面就没有意义了。 1.1.9MC算法描述 for(k=1;k
www.CadCaeCam.com/Forum/index.htm
CadCaeCamPlm 专业门户网站收集整理, 版权属于原作者 联系 [email protected]
第 10 页 共 16 页
www.CadCaeCam.com/Forum/index.htm
CadCaeCamPlm 专业门户网站收集整理 版权属于原作者 联系 [email protected]
(i,j,k),(i+1,j,k),(i,j+1,k),(i+1,j+1,k),(i,j,k+1),(i,j,k+1),(i+1.j+k+1),(i,j+1,k+1) 和(i+1,j+1,k+1)组成当前体素的8个角点 并由此决定当前体素下的索引下标值Index B通过Index取出构造索引表中的等值面片的连接方式p c通过线性插值计算出体素棱边上等值面交点的位置和相应法向量 d通过p确定次序构造等值面的三角面片放入输出的等值面几何表示中 } } } 1.2 等值面算法的共同特点 同 MC 方法一样,DC、MT 都是基于等值面的算法。等值面类算法有共同的 特点: ① 假定体数据中不同的体数据形成薄的边界曲面。 ② 在某一曲面两侧有内外之分,某一象素点要么在曲面的内部要么在曲面的外部。 ③ 曲面上的点的值是一个常值,所以这个曲面也叫等值面。 ④ 用多边形面来绘制。 等值面类算法优点(相对于体视化方法): ① 绘制方法多,效果好。 ② 绘制时可以用硬件加速。 ③ 占有内存少。 ④ 改变视角,光线等只需要重新绘制即可,不需要再次重建。 ⑤ 可以压缩存储和传输。 ⑥ 以图元对象顺序绘制,看不到的就不用绘制。 ⑦ 空间位置明确,绘制效率高。 等值面类算法缺点: ① 对图像要分割,而体视化方法不需要分割。(分割是虚拟人必要的一步)。 ② 丢掉了大部分数据,仅保留了表面的一些数据。 ③ 只适合形状明显的物体,不能处理云雾等形状不规则的物体 4、直接体绘制算法原理
www.CadCaeCam.com/Forum/index.htm
CadCaeCamPlm 专业门户网站收集整理, 版权属于原作者 联系 [email protected]
第 11 页 共 16 页
v
0,
......v 7 判定 v 0,......v 7 与等值面的相对位置(内,外)
www.CadCaeCam.com/Forum/index.htm
CadCaeCamPlm 专业门户网站收集整理 版权属于原作者 联系 [email protected]
4.1 直接体绘制法的定义 体绘制:直接将体素投影到显示平面的方法,称为基于体数据的体绘制方法,又称为直接绘制 方法。 4.2 体绘制方法概述 计算机图形学一般采用几何模型,即点、线(直线或曲线)和面(平面或曲面)等图形基元来 描述形体。它主要有边界表示法,构造实体几何和空间分解三 种表示模型[7]。几何模型是表示有形而且规则的形体的理想模型,因此常用于机械、建筑设 计上。但是它无法描述好烟云、肌肉等无形对象。几何模型只是描述了形体的表面,却无法刻画形 体内部复杂的细微的结构。从这个角度上讲,它们只是表示形体的外壳,而不能表示“有皮有肉” 的实际物体。 与传统的计算机图形学描述物体的方式不同,体数据是对有限空间的一组离散采样,每个采样 点上的采样值可以是一种或多种, 代表在该点上的一个或多个物理特性, 例如用检测仪器对温度场、 速度场进行采样,其结果都是以有限个采样来描述场空间。因此体数据是真正的三维实体,它含有 物体内部信息。 4.3体绘制的基本概念和原理 一般情况下,体数据在逻辑上被组织成一个三维的数组空间如图 2-1 所示, 每个元素叫做体素(Voxel) ,每个体素都可以有它自己所在的层号、行号和列号。本文中考虑 的体数据主要是均匀地分布在三维网格点上,即 x, y, z 三个方向上,网格点之间的距离均相等。 在这类数据中,无需给出各个体素的空间位置,只要给出三维网格某一角点的空间位置和某一体素 的序号,即可根据网格间距对应的距离求出该点的空间位置。通常,每个体素是 8-16 位,存储相 对应的密度值或灰度值。体数据的存储一般都比较庞大,例如对于 80 个分辨率为512 × 512的CT 断层图像,需要 20M-40M 字节的内存。本文之所以只考虑规则均匀的体数据结构,是因为非规则 体数据最后都可以转化成规则体数据结构。
www.CadCaeCam.com/Forum/index.htm
CadCaeCamPlm 专业门户网站收集整理, 版权属于原作者 联系 [email protected]
第 12 页 共 16 页
www.CadCaeCam.com/Forum/index.htm
CadCaeCamPlm 专业门户网站收集整理 版权属于原作者 联系 [email protected]
图 4-1 体数据 图4-2是体视化流程图,其中映射①中传递函数的功能是将一个体数据映射成相应的光学特性如颜 色、不透明度、辐射度以及相关的光学模型参数如Phong光照模型的ka、kd、ks等。这里,体绘制 算法中主要用到的是颜色和不透明度图4-2是体视化流程图,其中映射①中传递函数的功能是将一 个体数据映射成相应的光学特性如颜色、不透明度、辐射度以及相关的光学模型参数如Phong光照 模型的ka、kd、ks等。这里,体绘制算法中主要用到的是颜色和不透明度。由于颜色、不透明度等 贯穿整个体绘制流程,所以高性能传递函数设计成为体绘制算法的一个关键步骤。
图4-2 体视化流程图 体绘制过程可以分为下面五个步骤 1、数据获取:MRI、CT、SPECT、遥感等应用数据及几何造型; 2、数据处理: 数据滤波、几何滤波、图像滤波; 3、视见变换:数据坐标系-世界坐标系-屏幕坐标系; 4、体素绘制和累加:根据体素的灰度值,梯度值和梯度方向计算体素颜色、不透明度、并且按图 像空间或对象空间进行累加; 5、显示:经视见变换剪辑得到的最终图像;
www.CadCaeCam.com/Forum/index.htm
CadCaeCamPlm 专业门户网站收集整理, 版权属于原作者 联系 [email protected]
第 13 页 共 16 页
www.CadCaeCam.com/Forum/index.htm
CadCaeCamPlm 专业门户网站收集整理 版权属于原作者 联系 [email protected]
图4-3体绘制过程 4.4体绘制的分类 直 接 体 绘 制 技 术 根 据 成 像 顺 序 方 法 的 不 一 样 可 以 分 为 像 序 方 法 (Object-order)和物序方法(Image-order) 。物序方法是指按照物体空间坐标顺序将体素投影到象 平面上。像序方法则指的是按照象空间坐标顺序将体数据沿视线方向进行重采样滤波,再累积到象 平面的一种算法。图 4-4 和图 4.-5 是这两种方法的示意图。 物序方法中的算法主要有抛雪球法(SplattingAlgorithm) 、脚印法(FootprintAlgorithm) 、体素 投影法(Voxel Projection) 。而经典的光线投影法(RayCasting)则是像序方法的代表算法,但也可 以用于物序方法中。 这两类算法的流程框架刚好相反, 从理论上讲, 如果采用相同的重采样滤波器, 其生成的图像应完全相同。
图 4-4 像序法
图 4-5 物序法
4.5 光线投射法(Ray-Casting)简介 4.5.1 光线投射法(Ray-Casting)基本原理 光线投射算法(Ray Casting)是直接体绘制中最为常用的算法,是像序体绘制方法的代表。 从每个象素发出(至少)一条光线,穿过体数据空间,在光线与体空间的交点之间等距的进行采样, 对每个采样点通过三线性或更高次插值计算求出其数据,再计算在给定的光学模型中的光强,并与 前面的采样点结果合成。对每一个象素进行如上计算,最终得到整幅图象。
www.CadCaeCam.com/Forum/index.htm
CadCaeCamPlm 专业门户网站收集整理, 版权属于原作者 联系 [email protected]
第 14 页 共 16 页
www.CadCaeCam.com/Forum/index.htm
CadCaeCamPlm 专业门户网站收集整理 版权属于原作者 联系 [email protected]
图 4-6 光线投射法示意图 算法描述如下: 1) 从屏幕的第一个像素开始; 2) 由视点经此像素点发出一射线; 3) 沿射线方向进行采样; 4) 按由前到后或由后到前的顺序,对射线上每个采样点计算积累物质发光强度 I ,阻光度 O, 以及对应颜色; 5) 绘制像素; 6) 准备计算下一个像素,如果像素计算完毕,结束,否则转向 2)。其中某一条射线上的穿过 体数据的灰度如图 4-7 所示:
图 4-7 一条射线穿过体数据的计算 根据对采样点的计算顺序,具体计算可以分为由前到后和由后到前的两种情
I
out
= c i a i + I in (1 a i ) 况。对于由前到后,有
www.CadCaeCam.com/Forum/index.htm
CadCaeCamPlm 专业门户网站收集整理, 版权属于原作者 联系 [email protected]
第 15 页 共 16 页
www.CadCaeCam.com/Forum/index.htm
CadCaeCamPlm 专业门户网站收集整理 版权属于原作者 联系 [email protected]
I a
面对于由后到前有
out out
= I in + (1 a in )a ic i = a in + a j (1 a in)
I
out
= c i a i + I in (1 a i )
其中的阻光度无许需进行累加计算这里的阻光度是灰度的映射函数。按照自然的物理模 型,对人体器官而言,二值阻光度模型就足够了。然而,为了便于观察内部结构和器官相互之间的 关系,通常采用多值阻光度模型,这样就可以产生半透明效果。该映射函数没有实际的物理意义, 用户可以根据自己的习惯挑选合适的映射函数。由图 4-8 我们可以知道医学影像的灰度级与不同
的人体组织部位有着固定的对应关系,只要对不同的人体组织对应的灰度范围设定某阻光度值,就 可以得到该组织的透明或不透明效果。如将灰度级在 800 以下的阻光度设为 0,800 以上的设为 非 0,则我们就可以绘制出骨骼的三维效果。
图
4-8
各灰度级与人体组织的对应关系
通过计算物质累积发光强度绘制出来的三维结果类似于 X 光片的效果,没有三维效果,不够 生动,不利于医生进行诊断。因此,为了让容积重建更有效地应用于临床诊断,给医生更直观更真 实的重建效果,我们需要找到得到逼真体绘制效果的绘制方法。 视觉上的组织结构的深度层次感及色彩渲染效果是影响到最终体绘制效果的关键。因此我们使 用颜色映射函数是进行高质量直接体绘制,它能让人们更明确地探察体数据内部复杂而细腻的结构 信息。 颜色映射函数也是一个灰度的映射函数,对每一个灰度值赋予了一个颜色值。只要调整好灰度 的颜色映射以及阻光度,就可以获得彩色的三维重建影像。我们可以将式 3-1 或者式 3-2 中的发 光强度替换为颜色各分量(通常所说的 R、G、B 颜色分量)的发光强度就可以计算出射线对应像素 的颜色值。这样,我们就可以得到半透明效果的彩色的重建效果。
www.CadCaeCam.com/Forum/index.htm
CadCaeCamPlm 专业门户网站收集整理, 版权属于原作者 联系 [email protected]
第 16 页 共 16 页