一、体绘制基本概念

1.1 定义

体绘制又叫直接体绘制(DVR),是一种用于显示 3D 离散采样数据集的 2D 投影技术。
Wikipedia describes volume rendering as “a set of techniques used to display a 2D projection of a 3D discretely sampled data set”.(一种用于显示3D离散采样数据集的2D投影技术)

1.2 应用领域

常用于医学CT切片图像、气象数值预报产品、雷达扫描数据等。比如有人摔断了腿,医生可能会对他的腿进行CT扫描。扫描产生一个三维数据集,其中每个细胞定义了该点的密度。

1.3 特点

体绘制算法常见特点如下:
1、用颜色表示属性值大小,如污染物浓度。
2、用不透明度表示数据的重要程度,比如污染物的不透明度越高影响程度越大。
3、表现变量的立体感和内容物

1.4 常见体绘制算法

1、光线投射算法(Ray-casting)
2、光线行进算法(Ray-marching)
3、基于三维纹理的体绘制算法

二、光线投射(Ray-casting)算法

2.1 算法思想

类比人眼将三维空间接收的光线投影到视网膜从而形成二维图像,光线投射算法在一定的视角范围内,跟踪视点到物体的射(光)线,将三维体数据不同距离的数据点按照一定方式叠加显示在平面上。

1、由于光线是有无数条,首先需要进行方向离散化得到不同方向的光线,再将每一条光线分成N个样本。

2、将投射光线上的采样值映射为图像属性,光线在二维平面的投影点是由光线上的离散点投影叠加形成,每一个离散点的贡献不一样,累积到一起决定了图像像素的颜色。

在这里插入图片描述

2.2 具体实现(三线性插值)

1、确定采样点
根据需求确定投射光线方向上的采样间距,将三维对象分割成一个个正方体,并按照一定的采样间距在光线上采样,以下是采样的二维剖面展示。
在这里插入图片描述

2、计算采样值
在每一个小正方体中,V(x0,y0,z0)表示在点(x0,y0,z0)处的值,通过三线性插值的方法计算P(X, Y, Z)点处的采样值P。
在这里插入图片描述
①计算权重
在x轴方向上计算权重:Xd=(X-x0)/(x1-x0) 。
在y轴方向上计算权重:Yd=(Y-y0)/(y1-y0) 。
在z轴方向上计算权重:Zd=(Z-z0)/(z1-z0) 。

②三个方向的插值
下图为A1所在横截面, A2类似为B3,B4。
在这里插入图片描述

先计算x轴方向上的插值:
B1=V(x0,y0,z0)(1-Xd)+V(x1,y0,z0)Xd
B2=V(x0,y0,z1)(1-Xd)+V(x1,y0,z1)Xd
B3=V(x0,y1,z1)(1-Xd)+V(x1,y1,z1)Xd
B4=V(x0,y1,z0)(1-Xd)+V(x1,y1,z0)Xd
再计算y轴方向上的插值:
A1=B1*(1-Zd)+B2 * Zd
A2=B4*(1-Zd)+B3 * Zd
最后计算y轴上的插值:
P=A1*(1-Yd)+A2 * Yd
综合起来:

3、进行采样值的像素属性映射(这里后续有时间再更新,只阐述基本原理)
通过传输函数将采样值映射为图像属性,包括颜色传输函数和不透明度函数,对体绘制效果起决定性作用。
①基本原则
突出感兴趣采样区域,弱化不重要的采样区域。即对体数据进行分类表达
②分类
颜色传输函数:将采样值映射为颜色,反映采样值的大小和性质。
不透明度传输函数:将采样值映射为不透明度值,反映采样值的重要性。
③问题
数据分类及传输函数与位置无关;
体数据多样且复杂;
人机交互接口设计;
4、采样值合成
①方法:
根据成像贡献累积光线上所有采样点,合成像素值。累计值的计算是一个迭代的过程,采样点从前往后(靠近成像点为前),如下图所示
在这里插入图片描述

②颜色累计值计算
前i点颜色累积值:是由前i-1点的采样点的颜色累积值+该采样点的颜色贡献值(该点的不透明度越高,其颜色贡献值越大,前面i点的不透明度越大,该点的颜色贡献值越小):
在这里插入图片描述
③不透明度累计值计算
前i点不透明度累计值:是由前i-1点的不透明度累计值+该点不透明度贡献值(前i-1点不透明度累积值越大,该点贡献值越大)
在这里插入图片描述
可以看出当不透明度累计值等于1时,迭代计算结束,将叠加值赋予成像点。

2.3 算法分析

1、优点
表现内容更加丰富,便于观察事物整体结构和内容物
可以通过调整传输函数突出感兴趣区域

2、缺点
传输函数设计复杂
观察方向变化时。需要重新进行采样、计算量大

Logo

永洪科技,致力于打造全球领先的数据技术厂商,具备从数据应用方案咨询、BI、AIGC智能分析、数字孪生、数据资产、数据治理、数据实施的端到端大数据价值服务能力。

更多推荐