一种改进的光线投射算法

2022-09-11

1 光线投射算法概述

(Ray casting) 算法[1]是一种典型的以图像空间为序的直接体绘制算法, 它从屏幕上的每一个像素点出发, 沿设定的视点方向, 发出一条射线, 这条射线穿过三维数据场;沿这条射线选择若干个等距采样点, 由距离某一采样点最近的八个体素的颜色值及不透明度值做三线性插值, 求出该采样点的不透明度值及颜色值。在求出该条射线上所有采样点的颜色值和不透明度值以后, 可以采用由后到前或由前到后的两种不同的方法将每一采样点的颜色及不透明度进行组合, 从而计算出屏幕上该像素点处的颜色值[2]。

2 基于模糊增强的光线投射算法

一般而言, 图像在由三维目标映射为二维图像的过程中, 不可避免地会有信息的丢失, 所以图像天生具有模糊性。而人的视觉对于图像从黑到白的灰度级别又是模糊而难以准确区分的。这就导致了图像边缘、区域、纹理等的定义以及对图像低层处理结果的解释存在模糊性。本文将传统的模糊阈值分割方法扩展到三维数据场中, 通过提取边界区域进行单独绘制来改善算法。

2.1 模糊阈值分割技术

模糊阈值分割方法可以在三维数据场中可以做进一步的推广[3]。按照模糊子集的概念, 设图像X为M×N×K, 有L级灰度{0, 1, ……L-1}, (x) 是定义在L+1级灰度上的隶属函数, 若象素 (m, n, k) 灰度为xmnk, 则隶属度为 (xm n k) , m=1, ……M, n=l, ……N, k=l, ……K, 图像X的模糊率V (X) 、模糊熵E (X) 是对图像模糊性的度量。

表示如下:

模糊率:

模糊熵:

其中申农函数为:

当 (xmnk) =0.5时, V (X) 、E (X) 取最大值, 偏离该值时, V (X) 、E (X) 取值下降。

令h (l) 为图像X中灰度取l的象素个数, 将 (1) 式和 (2) 式写为如下形式:

模糊率:

模糊熵:

其中T (l) =min (µ (l) , 1-µ (l) )

下面以模糊率V (X) 进行阈值选择, 显然采用模糊熵E (X) 也能得到同样的结论。

取隶属函数 (x) 为S函数:

由于模糊隶属的取值由窗口C=2Δq及参数q所决定, 一旦选定了窗宽C, V (X) 就只与参数q有关。模糊阈值法的求解过程是预先设定窗宽C, 通过改变q, 使隶属函数 (x) 在灰度区间[0, L-1]上滑动, 再通过计算模糊率Vq (X) , 以获得模糊率曲线, 该曲线的谷点, 既是使Vq (X) 取极小值的参数q, 也就是待分割图像的阈值。

2.2 模糊增强技术

本文对转换到模糊性质域的图像引入模糊增强算子进行预处理, 然后对增强的图像计算其模糊率, 并由此选取最佳阈值。增强算子的定义如下:

其中:

引入模糊增强算子的目的在于通过对图像不同区域采用不同的增强处理, 即黑目标区域进行衰减运算、白背景区域进行增强运算 (增强运算是增大为0.5以上的P值, 衰减是小于0.5以下的值) ;强化图像区域之间的对比度。使经过增强后的图像不仅保留了原有图像的信息, 而且各区域之间的层次更加清晰, 从而进一步降低了图像的模糊性。

最后, 给出基于增强算子的模糊阈值法的全过程:首先按隶属函数为S函数, 将图像由灰度数据域转换到模糊性质域, 并通过改变参数q的取值, 使映射函数 (xmnk) 在灰度区间[0, L-1]上滑动。然后通过计算模糊率V (X) , 获得模糊率曲线。

对于V (X) 时, 起作用的是灰度值分布在区间[q-Δq, q+Δq]上的象素, 当参数q变化时, V (X) 随之变化, 记Vq (X) 为参数取q时的图像模糊率。理论上讲, 总能找到某个q0, 使得Vq0 (X) 极小, 因而可取分割区域的中心值为q0。当图像灰度为多峰分布时, 用上述方法可以获得多个能使V (X) 取极小值的q, 同样方法确定分割阈值区域就能实现多阈值分割。若取以q0为中心有一定带宽的区域为分割阈值, 使得分割截面为具有一定宽度的区域, 这样可以将边界区域和非边界区域分别分割开来。

2.3 模糊增强的光线投射算法

引入了基于模糊增强的阈值分割技术的光线投射算法的处理过程是:首先对体数据进行简单的预处理, 在对简单预处理后的体数据赋颜色值及不透明度值后, 要根据模糊增强的模糊阈值分割技术进行三维数据场的分类, 提取出边界区域与非边界区域。然后进行采样及采样点的计算, 最后是图像的合成。

通过增强的模糊阈值分割, 可以将三维数据场的边界区域与非边界区域分别提取出来, 然后对边界区域和非边界区域分别进行绘制。

2.3.1 边界区域的定义

为保证处理体元在深度方向上的有序性, 该方法对数据场的遍历是逐片进行的。假定正在处理给定片上的体元, 首先判断其是否为边界区体元, 如果是则记为B-voxel, 直接计算该体元对屏幕的贡献;如果不是则记为I-voxel, 并进行体元合并形成组合体元, 记为M-voxel, 并将组合体元M-voxel作为新体元对待, 以便减少操作对象, 提高绘制速度。

2.3.2 体元合并规则

体元合并只针对同一片上相邻的体元进行, 以保证只合并属于同一物质的体元, 其准则如下。

(1) 只有属于同一区域、同一截面的非边界区域的体元才合并。

(2) 合并后的新体元M-voxel必须保证是长方体的形状, 以保证其几何形状简单, 并可以排序。

(3) 体元的合并应从前到后进行, 以保证所产生的M-voxel的有序性。即如果一个体元已经合并到M-voxel中, 则不应该还有遮挡它的体元未被处理。

以下为处理片k0的描述:

Process-B-Voxel (jM, ib, jb, &ie, &je) ;

在上述伪代码中, jM表示合并后体元不能超过的最大号, ib, jb, ie, je分别表示为体元的初始和终止的行号及列号。

若体元V (ib, jb, ko) 是边界体元, 程序Process-B-Voxel计算边界区域体元对屏幕象素的贡献。否则, 子程序Merge-Voxel则搜索与它相邻并且可见性优先级比它低的体元, 并返回以V (ie, je, ko) 为最远体元的体元块M-Voxel。然后由Process-I-Voxel将这个M-Voxel当作普通的Voxel对待, 并将其投影到屏幕上, 扫描投影多边形进行光亮度积分。

至于对于采样点的计算与图像的合成本文采用的是参考文献[4]方法。

3 验证与分析

为了比较算法执行的时间复杂度及生成图像的精确度, 分别生成了传统的光线投射算法及本算法的结果。在Intel奔腾4521 DDR上将上述算法应用于足部CT数据 (512×512×113) 进行测试。实验结果表明: (1) 从时间上, 由于本算法对非边界区的体元进行合并, 从而使得绘制的速度明显快于光线投射算法, 如表1所示; (2) 从图像质量上, 本算法将边界区与非边界区分别进行绘制, 因而可以得到比较清晰的边界区。绘制结果如图2所示。明显可以看出, 在图1中, 处于边界区的部位能清晰地显示出来。

4 结语

在研究传统光线投射算法的基础上, 结合模糊阈值分割方法, 提出了基于模糊增强技术的光线投射算法。由于在模糊阈值分割技术的基础上, 引入了模糊增强运算, 从而可以进一步降低图像的模糊性, 使得图像更易于分割。对于分割后的图像, 可以清晰地提取出边界区和非边界区, 由于把非边界区进行合并, 再进行绘制, 因而, 在时间消耗上, 明显优越于传统的光线投射算法, 并对边界区的体元逐一进行投射能够得到比较清晰的边界区域, 可获得较高的图像质量。

摘要:光线投射算法是体绘制中常用的方法, 但是其绘制速度较慢, 图像质量也不是很理想。通过利用模糊阈值分割技术将整个三维数据场分类为边界区域与非边界区域, 然后采用模糊增强运算进一步降低模糊性。最后再进行采样点的计算及图像的合成。实验结果表明, 此方法既能提高绘制的速度, 又能保证绘制质量。

关键词:体绘制,光线投射,模糊阈值分割,模糊增强,边界区

参考文献

[1] Levoy M.Display of Surfaces fromVolume Data[J].IEEE Graphics&Application, 1988, 8 (3) :29~37.

[2] L, Sobierajski, R Avila.A hardware ac-celeration method for volumetric raytracing[C].Proc.Vosualization‘95, 1995:27~34.

[3] Lacroute P, Levoy M.Fast Volume Ren-dering Using a Shear-warp factorizationof the Viewing transformation[J].Com-puter Graphics, proceedings, 1994, 7:451~458.

[4] 周勇, 唐泽圣.通过区域块投影方法直接绘制三维数据场[J].计算机辅助设计与图形学学报, 1996, 8 (3) :162~16.

上一篇:“探究式”教学法在小学科学课中的实施策略下一篇:家庭教育中如何培养幼儿的语言表达能力