体绘制Volume Rendering概述Word文档下载推荐.docx
- 文档编号:16659230
- 上传时间:2022-11-25
- 格式:DOCX
- 页数:19
- 大小:194.54KB
体绘制Volume Rendering概述Word文档下载推荐.docx
《体绘制Volume Rendering概述Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《体绘制Volume Rendering概述Word文档下载推荐.docx(19页珍藏版)》请在冰豆网上搜索。
老实说,老外的这种说法虽然挑不出毛病,但是我依然感觉没有落实到重点。
体绘制的核心在于
展示体细节!
而不是表面细节
我给出的定义是:
依据三维体数据,将所有体细节同时展现在二维图片上的技术,称之为体绘制技术。
利用体绘制技术,可以在一幅图像中显示多种物质的综合分布情况,并且可以通过不透明度的控制,反应等值面的情况。
例如,
CT
图片中展示的是人体的肌肉和骨骼信息,而不是表面信息(那是照片)。
所以理解体绘制和面绘制技术的区别的
一个很直观的比喻是:
普通照相机照出的相片和
仪器拍出的
照片,虽然都是二维图片,但是展现的对象是不同的!
国外自上世纪
年代末以来,在体绘制技术方面已经取得了长足的进步,西门子、东芝、通用电器,都有对
GPU
编程领域以及体绘制技术进行研究,并将体绘制技术运用到医疗器材中。
然而,体绘制技术在中国的发展,如果说还处于萌芽阶段,实不为过!
我在学习和研究过程中,在国内网站上甚至只找到了一个可用的体数据,还是国外代码中附带的演示数据,而国内的
openGPU
网站上关于体绘制的论坛板块则是根本是空白。
国外已经常用的医疗器材和算法,在中国还没有成形,这实在是一种悲哀。
一个讽刺的现象是,外国公司从事体绘制算法研究的却不乏中国人,这更是一种悲哀。
写到这里,作为一名以
serverthepeople
为毕生理想的有志青年,我有点伤感,有些沮丧,所以,还是先洗洗睡了,明天再来写下面的章节。
体绘制与科学可视化
科学可视化技术是运用计算机图形学、图像处理、计算机视觉等方法,将科学、工程学、医学等计算、测量过程中的符号、数字信息转换为直观的图形图像,并在屏幕上显示的理论、技术和方法。
体绘制是科学可视化领域中的一个技术方向。
如前所述,体绘制的目标是在一副图片上展示空间体细节。
举例而言,你面前有一间房子,房子中有家具、家电,站在房子外面只能看到外部形状,无法观察到房子的布局或者房子中的物体;
假设房子和房子中的物体都是半透明的,这样你就可以同时查看到所有的细节。
这就是体绘制所要达到的效果。
体绘制应用领域
人类发展史上的重大技术带来的影响大致分为两种:
其一,技术首先改变生活本身,然后改变人类对世界的看法,例如电视、电话等;
还有一种技术,是首先改变人类对世界的看法,然后改变生活本身,例如伦琴射线、望远镜。
体绘制技术应该属于后者,通过改变所见,而改变生活。
体绘制计算的重要意义,首先在于可以在医疗领域
serverthepeople,
有助于疾病的诊断,这一点应该不用多说,计算机断层扫描(
)已经广泛应用于疾病的诊断。
医疗领域的巨大需求推动了体绘制技术的告诉发展,如果了解
的工作原理,也就大致了解了体绘制技术原理和流程,所以本书在附录
B
给出了医学体绘制的有关文献,作为补充阅读资料,当您对体素、光线投射等术语缺乏感性认识时,可以参阅理解;
其二,体绘制计算可以用于地质勘探、气象分析、分子模型构造等科学领域。
我在工作期间承担的一个较大的项目便是有关
三维气象可视化
,气象数据通常非常庞大,完全可以号称海量数据,每一个气压面上都有温度、湿度、风力风向等格点数据,气象研究人员希望可以同时观察到很多气压面的情况,这时就可以采用体绘制技术,对每个切面(气压面)进行同时显示。
体绘制技术也能用于强化视觉效果,自然界中很多视觉效果是不规则的体,如流体、云、烟等,它们很难用常规的几何元素进行建模,使用粒子系统的模拟方法也不能尽善尽美,而使用体绘制可以达到较好的模拟效果。
如
图
41
所示,这是使用体绘制技术进行烟的模拟效果。
体绘制与光照模型
尽管光照模型通常用于面绘制,但是并不意味着体绘制技术中不能使用光照模型。
实际上
体绘制技术以物体对光的吸收原理为理论基础,在实现方式上,最终要基于透明度合成计算模型。
此外,经典的光照模型,例如
phong
模型,
cook-torrance
模型都可以做为体绘制技术的补充,完善体绘制效果,增强真实感。
往往有初学者会分不清
体绘制技术
以及
透明光照模型
之间的区别。
这个问题很有意思。
实际上,体绘制技术与透明光照模型在感性认识上十分类似,在很多教程中对体绘制技术的阐述也涉及到透明物体。
但是,透明光照模型,一般侧重于分析光在透明介质中的传播方式(折射,发散,散射,衰减等),并对这种传播方式所带来的效果进行模拟;
而体绘制技术偏重于物体内部层次细节的真实展现。
举例而言,对于一个透明的三棱镜,使用透明光照模型的目的在于
模拟光的散射,折射现象(彩虹)
;
而对于地形切片数据或者人体数据,则需要使用体绘制技术观察到其中的组织结构。
此外,在实现方式上,透明光照模型一般是跟踪光线的交互过程,并在一系列的交互过程中计算颜色值;
而体绘制技术是在同一射线方向上对体数据进行采样,获取多个体素的颜色值,然后根据其透明度进行颜色的合成。
总的来说,透明光照模型侧重于光照效果展现,并偏向艺术化;
而体绘制技术侧重展现物质内部细节,要求真实!
不过,现在体绘制技术实际上也可以用于艺术领域,因为体绘制技术所使用的方法,实际上具有很强的通用性,尤其是传统的
ray-cast
方法,完全可以应用到透明光照模型中(绘制烟雾等)。
不同的技术之间会存在共融性,将技术和领域的关系近固化,是研究人员的大忌。
科学史上很多前例都说明了一个事实:
不同领域的交合点,往往会出现重大发现或发明。
在爱因斯坦之前,又有谁知道时间、空间和质量之间的关系呢?
体绘制(VolumeRendering)概述之2:
体数据详解
2010-11-1822:
04348人阅读评论
(1)收藏举报
体数据(
VolumeData
)
学习任何一门技术,首先要弄清楚这项技术的起源以及数据来源。
技术的起源也就是技术最原始的需求,最原始的发展动力,了解了这一点就了解了这项技术的价值。
而了解一门技术的数据来源,就把握了技术的最初脉络,是
持其牛耳
的一种方法,正如软件工程中的数据流分析方法一般。
我很想说,体数据与面数据的区别,就好像一个实心的铁球和一个空心的兵乓球的区别。
不过这个比喻很显然有点俗,很难让人相信作者(我)是一个专业人士。
于是我决定还是将与体数据相关的专业术语都阐述一遍。
不过,在此之前,我需要先消除大家的恐惧感,研究表明,动物对于未知事物总是存在恐惧感,这也是阻碍进一步学习的关键所在。
体数据不是什么特别高深的火星符号,它是对一种数据类型的描述,只要是包含了体细节的数据,都可以称之为体数据。
举个例子,有一堆混凝土,其中包含了碳物质(
C
)若干,水分子(
H20
)若干,还有不明化学成分的胶状物,你用这种混凝土建造了块方砖,如果存在一个三维数组,将方砖
X
、
Y
Z
方向上的物质分布表示出来,则该数组可以被称为体数据。
不要小看上面这个比喻,体数据本质上就是按照这个原理进行组织的!
体数据一般有
2
种来源:
1.
科学计算的结果,如:
有限元的计算和流体物理计算;
2.
仪器测量数据,如:
或
MRI
扫描数据、地震勘测数据、气象检测数据等。
与体数据相关的专业术语有:
体素(
Voxel
)、体纹理(
VolumeTexture
)。
尤其要注意:
所谓面数据,并不是说二维平面数据,而是说这个数据中只有表面细节,没有包含体细节,实际上体数据和面数据的本质区别,在于是否包含了体细节,而不是在维度方面。
14.4.2
Wikipedia
中对体属
voxel
的介绍为:
Avoxel(a
portmanteau
ofthewords
volumetric
and
pixel
)isavolumeelement,representingavalueona
regulargrid
in
threedimensional
space.Thisisanalogoustoa
whichrepresents
2D
imagedataina
bitmap
即
体素,是组成体数据的最小单元,一个体素表示体数据中三维空间某部分的值。
体素相当于二维空间中像素的概念
42
中每个小方块代表一个体素。
体素不存在绝对空间位置的概念,只有在体空间中的相对位置,这一点和像素是一样的。
通常我们看到的体数据都会有一个体素分布的描述,即,该数据由
n*m*t
个体素组成,表示该体数据在
方向上分别有
n
m
t
个体素。
在数据表达上,体素代表三维数组中的一个单元。
假设一个体数据在三维空间上
256*256*256
个体素组成,则,如果用三维数组表示,就必须在每一维上分配
256
个空间。
在实际的仪器采样中,会给出体素相邻间隔的数据描述,单位是毫米(
mm
),例如
0.412mm
表示该体数据中相邻体素的间隔为
0.412毫米
14.4.1
体纹理(
体数据最主要的文件格式是
volumetexture
!
故而,非常有必要对体纹理的概念进行详细的阐述。
目前,学术性文章中关于体纹理的概念描述存在不小的混乱,很多书籍或者网页资料没有明确的区分
2dtexture
,
3dtexture
之间的区别。
导致不少人认为
只要是用于三维虚拟或仿真技术中的纹理都称之为
3dtexture”
这是一个误会。
纹理上的
3
维之分本质上是根据其所描述的数据维数而定的,所谓
指的是纹理只描述了空间的面数据,而
则是描述了空间中的三维数据。
另一个较为学术化的名称是:
22
】上对体纹理的定义是:
3Dtexture(ThreeDimensionalTexture),alsoknownas"
volumetexture,"
isalogicalextensionofthetraditional(andbetterknown)2Dtexture.Inthiscontext,atextureissimplyabitmapimagethatisusedtoprovidesurfacecoloringfora3Dmodel.A3Dtexturecanbethoughtofasanumberofthinpiecesoftextureusedtogenerateathreedimensionalimagemap.3Dtexturesaretypicallyrepresentedby3coordinates.
翻译成中文就是
三维纹理,即体纹理,是传统
纹理在逻辑上的扩展。
二维纹理是一张简单的位图图片,用于为三维模型提供表面点的颜色值;
而一个三维纹理,可以被认为由很多张
纹理组成的,用于描述三维空间数据的图片。
三维纹理通过三维纹理坐标进行访问
从上面这句话,可以得到两点信息:
三维纹理和体纹理是同一概念;
三维纹理和二维纹理是不同的;
三维纹理通过三维纹理坐标进行访问。
这时可能会有人提出问题了,图片都是平面的,怎么能表示三维数据?
请注意,我们通常所看到的图片确实都是平面的,但是并不意味着
x,y
平面上的像素点不能存放三维数据,举一个例子:
在高级语言编程中,我们完全可以用一维数组去存放三维数组中的数据,只要按照一定规则存放即可!
按照一定规则将三维数据存放在
XY
像素平面所得到的纹理,称之为
体数据通常是由
仪器进行扫描得到的,然后保存在图片的像素点上。
目前国际上比较常用的体纹理格式有,基于
DirectX
的
.dds
格式和
.raw
格式。
注意,很多人会将
格式当作摄像器材使用的那种格式,其实这两个格式的后缀虽然都是
,但是其数据组织形式是不同的。
用于体纹理的
格式,存放的是三维数据,用于摄像器材的
格式只是普通的二维图片。
43
从左到右分别是
UniversityofTü
bingen
(
Germany
)、
ViatronixInc.(USA)
WalterReedArmyMedicalCenter(USA)
三家机构的通过仪器扫描得到的体纹理数据的体绘制图片。
这三个体纹理数据的描述分别是:
256x320x128/0.66,0.66,0.66
512x512x174/0.8398,0.8398,3.2
512x512x463/0.625,0.625,1.0
由于在国内的网站上很难找到体数据,所以下面我给出几个国外的网址,这些网址提供用于教学和研究只用的体纹理数据(只能用于教学和研究)。
http:
//wwwvis.informatik.uni-stuttgart.de/~engel/pre-integrated/data.html
//www9.informatik.uni-erlangen.de/External/vollib/
//www.volren.org/
体绘制算法
国际上留下的体绘制算法主要有:
光线投射算法(
Ray-casting
)、错切
-
变形算法(
Shear-warp
)、频域体绘制算法(
FrequencyDomain
)和抛雪球算法(
Splatting
其中又以光线投射算法最为重要和通用。
究其原因,无外乎有三点:
其一,该算法在解决方案上基于射线扫描过程,符合人类生活常识,容易理解;
其二,该算法可以达到较好的绘制效果;
其三,该算法可以较为轻松的移植到
上进行实现,可以达到实时绘制的要求。
本书的第
15
章将重点阐述光线投射算法。
体绘制(VolumeRendering)概述之3:
光线投射算法(RayCasting)原理和注意要点
531102人阅读评论(0)收藏举报
15.1
光线投射算法原理
光线投射方法是基于图像序列的直接体绘制算法。
从图像的每一个像素,沿固定方向(通常是视线方向)发射一条光线,光线穿越整个图像序列,并在这个过程中,对图像序列进行采样获取颜色信息,同时依据光线吸收模型将颜色值进行累加,直至光线穿越整个图像序列,最后得到的颜色值就是渲染图像的颜色。
为什么在上面的定义是穿越
图像序列
,而不是直接使用
体纹理
?
原因在于,体数据有多种组织形式,在基于
CPU
的高级语言编程中,有时并不使用体纹理,而是使用图像序列。
在基于
的着色程序中,则必须使用体纹理。
这里所说的图像序列,也可以理解为切片数据。
光线投射算法是从视点到
图像序列最表面的外层像素
引射线穿越体数据,而不少教程中都是糊里糊涂的写到
从屏幕像素出发
,这种说法太过简单,而且很容易让人误解技术的实现途径,可以说这是一种以讹传讹的说法!
从屏幕像素出发引出射线,是光线跟踪算法,不是光线投射算法。
体绘制中的光线投射方法与真实感渲染技术中的光线跟踪算法有些类似,即沿着光线的路径进行色彩的累计。
但两者的具体操作不同。
首先,光线投射方法中的光线是直线穿越数据场,而光线跟踪算法中需要计算光线的反射和折射现象。
其次,光线投射算法是沿着光线路径进行采样,根据样点的色彩和透明度,用体绘制的色彩合成算子进行色彩的累计,而光线跟踪算法并不刻意进行色彩的累计,而只考虑光线和几何体相交处的情况;
最后,光线跟踪算法中光线的方向是从视点到屏幕像素引射线,并要进行射线和场景实体的求交判断和计算,而光线投射算法,是从视点到物体上一点引射线(
16.1.2
节会进行详细阐述),不必进行射线和物体的求交判断。
上述文字,对于光线投射算法的描述可能太过简单,会引起一些疑惑,不过这是正常的,有了疑惑才会去思考解决之道,最怕看了以后没有任何疑惑,那只是浮光掠影似的一知半解,而不是真正的了然于胸。
15.1.1
吸收模型
几乎每一个直接体绘制算法都将体数据当作
在某一密度条件下,光线穿越体时,每个体素对光线的吸收发射分布情况
这一思想来源于物理光学,并最终通过光学模型(
OpticalModels
)进行分类描述。
为了区别之前的光照渲染模型,下面统一将
OpticalModel
翻译为光学模型。
】中对大多数在直接体绘制算法中使用的重要光学模型进行了描述,这里给出简要概述。
吸收模型(
Absorptiononly
):
将体数据当作由冷、黑的体素组成,这些体素对光线只是吸收,本身既不发射光线,也不反射、透射光线;
发射模型(
Emissiononly
体数据中的体素只是发射光线,不吸收光线;
3.
吸收和发射模型(
Absorptionplusemission
这种光学模型使用最为广泛,体数据中的体素本身发射光线,并且可以吸收光线,但不对光线进行反射和透射。
4.
散射和阴影模型(
ScatteringandShading/shadowing
体素可以散射(反射和折射)外部光源的光线,并且由于体素之间的遮挡关系,可以产生阴影;
5.
多散射模型(
MultipleScattering
光线在被眼睛观察之前,可以被多个体素散射。
通常我们使用
为了增强真实感,也可以加上阴影(包括自阴影)计算。
光线投射算法若干细节之处
15.2.1
光线如何穿越体纹理
这一节中将阐述光线如何穿越体纹理。
这是一个非常重要的细节知识点,很多人就是因为无法理解
体纹理和光线投射的交互方式
而放弃学习体绘制技术。
前面的章节似乎一直在暗示这一点:
通过一个体纹理,就可以进行体渲染。
我最初学习体绘制时,也被这种暗示迷惑了很久,后来查找到一个国外的软件,可以将体纹理渲染到立方体或者圆柱体中,这时我才恍然大悟:
体纹理并不是空间的模型数据,空间体模型(通常是规则的立方体或圆柱体)和体纹理相互结合才能进行体渲染。
举例而言,我们要在电脑中看到一个纹理贴图效果,那么至少需要一张二维的纹理和一个面片,才能进行纹理贴图操作。
这个面片实际上就是纹理的载体。
同理,在体绘制中同样需要一个三维模型作为体纹理的载体,体纹理通过纹理坐标(三维)和模型进行对应,然后由视点向模型上的点引射线,该射线穿越模型空间等价于射线穿越了体纹理。
通常使用普通的立方体或者圆柱体作为体绘制的空间模型。
本章使用立方体作为体纹理的载体。
注意:
体纹理通过纹理坐标和三维模型进行对应,考虑到
OpenGL
和
Direct3D
使用的体纹理坐标并不相同,所以写程序时请注意到这一点。
44
展示了体纹理坐标在立方体上的分布,经过测试,这种分布关系是基于
的。
在宿主程序中确定立方体
8
个顶点的体纹理坐标,注意是三元向量,然后传入
,立方体
6
个面内部点的体纹理坐标会在
上自动插值得到。
根据视点和立方体表面点可以唯一确定一条射线,射线穿越整个立方体等价于穿越体数据,并在穿越过程中对体数据等距采样,对每次得到的采样数据按照光透公式进行反复累加。
这个累加过程基于
11
章讲过的透明合成公式,不过之前只是进行了简单的讲解,在本章中将针对透明度,透明合成,以及排序关系做全面阐述。
15.2.2
透明度、合成
透明度本质上代表着光穿透物体的能力,光穿透一个物体会导致波长比例的变化,如果穿越多个物体,则这种变化是累加的。
所以,透明物体的渲染,本质上是将透明物体的颜色和其后物体的颜色进行混合,这被称为
alpha
混合(alphablending)技术。
图形硬件实现
混合技术,使用
over
操作符。
Alpha
混合技术的公式如下所示:
其中,as
表示透明物体的透明度,
cs表示透明物体的原本颜色,
cd表示目标物体的原本颜色,
co
则是通过透明物体观察目标物体所得到的颜色值。
如果有多个透明物体,通常需要对物体进行排序,除非所有物体的透明度都是一样的。
在图形硬件中实现多个透明物体的绘制是依赖于
缓冲区(Z-Buffer)。
在光线投射算法中,射线穿越体纹理的同时也就是透明度的排序过程。
所以这里存在一个合成的顺序问题。
可以将射线穿越纹理的过程作为
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 体绘制Volume Rendering概述 绘制 Volume Rendering 概述
![提示](https://static.bdocx.com/images/bang_tan.gif)