什么是体数据可视化(Volume data visualization)?及体绘制的各种算法和技术的特点?
该文对体数据进行综述,并介绍了体数据的各种算法和技术的特点。
前言
由于3D数据采集领域的高速发展,以及在具有交互式帧率的现代化工作站上执行高级可视化的可能性,体数据的重要性将继续迅速增长。
数据集可以通过MRI,CT,PET,USCT或回声定位等技术捕获,也可以通过物理模拟(流体动力学或粒子系统)产生。以上提到的一系列技术证明了体数据信息在医疗行业中起着至关重要的作用。体数据信息被用于癌症检测,动脉瘤可视化和治疗计划。这种数据对使用计算机断层扫描或超声波的非破坏性材料测试非常有用。此外, 来源于地震研究的巨大三维数据集,也可以通过体渲染引擎可视化。
体数据概述
体数据由体素组成。 体素是基本体积元素,也可以理解为三维空间内的具有排列和颜色的点或一小块区域,这也是为什么可以保持高达六个标量参数的原因。
通常体素属于固定网格,因此体数据可以作为表格储存。在这种情况下,运行可以被认为是多维数组,体数据可以被当作为本地储存的*.csv文件。然而,更常见的是,数据集被分成若干片,并且每个片被存储为位图图像。由于可以应用于图像的复杂压缩算法,明显减小模型尺寸。
体数据可视化算法
可视化体数据包括四种主要算法。以下将讨论各种算法和技术的特点及目前存在的问题。
- 基于切片方法
最直接的解决方案,这意味着给予每个体数据切片滚动交互单独可视化机会。
此技术的优点在于操作简单和复杂计算少。而它的缺点是可视化人员需要想象重建整个对象结构。因此,基于切片方法不是分析极其复杂和不明确结构的最佳选择。但是此方法非常适合可视化已知对象的内部情况,比如,人体内部结构。这也是为什么此方法在医疗行业中被广泛应用的原因。如,最常用于MRI 和CT。 值得提醒的是, 一般的CT和MRI研究在一个维度中的分辨率比较低,这导致利用具有更先进技术数据集的一些困难。
2. 其他技术仿真
这种方法很适合于熟悉一定技术的专家可视化分析应用。比如,应用于医疗和地震行业的新技术开发,专家们可以从旧技术解决方案平稳过渡到现代化技术。此方法不常被采纳的原因如下: 首先,它需要使用非常详细的体数据集,而其它主要信息可能在通过模仿另一种技术时而丢失或损坏。 因此,在将新技术集成到专家工作流程中的过程中,可视化的普及将逐渐减少。其次,这种可视化类型的开发需要大量的时间才能接近可视化初始图像,在转换后部分图像将被丢弃使用。另外一个问题是需要有一定技术经验的人才能正确解释结果。
3. 体渲染
3D渲染指用2D图像可视化3D对象。最常用的3D渲染基于多边形网格表面的逼真图像可视化。该技术被广泛应用,因为现代显卡架构加速应用操作。
· 间接体绘制
间接体渲染可以有多种工具用于多边形网格模型。此方法包含两个阶段,第一阶段是根据特定阈值从数据集中提取等值面,有几种算法可以进行该任务(最受欢迎的是Marching Cubes )。 有时,可以通过开发基于特定数据集的特定特征的特殊算法来改进等值面提取。然后用三维图像引擎或其它工具可视化多边形曲面模型,比如: LightningChart的网格模型非常合适于该方法。
该方法的主要优点基于发挥旧技术优势。它包含3D对象可视化的所有典型特征,例如旋转,不同数量光源的使用,与其他3D对象的交互等。 因此,它使复杂的3D结构分析更简单。 它对于视觉检测未知数据集中的重要细节特别有用。 3D渲染引擎的性能优化允许任何现代办公电脑可视化数据。 此外,该技术允许开发人员使用更复杂的降噪算法。
此方法第一阶段的可视化程序有一定的缺陷。因为从多边形体数据集转换数据时导致内部不需要的数据丢失。等面提取算法可能需要复杂的计算,也就是说预处理需要花费大量的时间,这通常是为什么不可能交互地改变表面提取的阈值。
· 直接体绘制
直接体绘制不要求预处理。 直接从原始数据集观察数据,为算法提供了动态修改传递功能和阈值的机会。而且有些方法允许以半透明的方式可视化数据集的内部结构。
直接体绘制是目前可视化数据最强大的方法。可视化具有多边网格模型的所有优点,并且可以在同一场景中轻松绑定。此外,可以切割模型的一部分来查看被物体表面隐藏的结构。
高配置硬件要求是此方法的缺点,但是随着现代显卡的不断优化,即使用最便宜的硬件也可以运行可视化。它的缺点是体渲染引擎开发成本高问题。
实现直接体绘制有几种不同的技术。最常用的是通过工具以自己的方式渲染,此工具是为多边形网格模型的GPU加速创建的。基于纹理体积和体积射线投射是目前最成功的直接体绘制方法。
基于纹理的体绘制技术使用一系列平面来构造对象。数据集投射到平面成为纹理。最后的图形是由混合平面上α粒子组成。光线投射算法(Volume Ray Casting) 使用立方体作为体模型中的占位节点。模型本身通过光线投射算法投射到立方体的两侧,此算法使用射线来累积数据,并将其与称为Ray Function的特定方程合成。
射线功能是光线投射算法真正迷人的特征。它允许设定射线是如何执行数据采样和像素颜色计算的。不同射线功能可以从数据中提取不同特征。我们来讨论下三个射线功能例子:
累积功能尝试收集和组合尽可能多的数据,为观众提供探索对象内部结构的机会。 使用这种技术的可视化看起来像一个半透明的凝胶。
最大强度功能仅显示由射线采样的最亮值。 视觉效果相似于X射线图像类。 可以通过此功能获取关于对象的内部结构的附加信息。
等值面绘制的模型表面看起来像多边形模型渲染。最终结果与间接体绘制的结果非常相似。
结论
硬件的开发为不同数据采集技术的兴趣增长做好准备。 消费者电脑性能的改善将对直接和间接体积渲染等先进的体可视化技术的普及产生积极的影响。
LightningChart有一个出色的工具,用于实现体数据的基于片段和间接体绘制的可视化。 此外,LightningChart的直接体渲染引擎为数据可视化提供许多高级功能。
什么是体数据可视化(Volume data visualization)?及体绘制的各种算法和技术的特点?的更多相关文章
- CSharpGL(8)使用3D纹理渲染体数据 (Volume Rendering) 初探
CSharpGL(8)使用3D纹理渲染体数据 (Volume Rendering) 初探 2016-08-13 由于CSharpGL一直在更新,现在这个教程已经不适用最新的代码了.CSharpGL源码 ...
- Data Visualization 课程 笔记1
对数据可视化比较有兴趣,因此最近在看coursera上伊利诺伊大学香槟分校的数据可视化课程,做了一些笔记. 1. 定义 Data visualization is a high bandwidth c ...
- PoPo数据可视化周刊第6期
PoPo数据可视化 聚焦于Web数据可视化与可视化交互领域,发现可视化领域有意思的内容.不想错过可视化领域的精彩内容, 就快快关注我们吧 :) 本期可视化精彩视频请关注公众号浏览 全天智能获Pre-A ...
- 【Data Visual】一文搞懂matplotlib数据可视化
一文搞懂matplotlib数据可视化 作者:白宁超 2017年7月19日09:09:07 摘要:数据可视化主要旨在借助于图形化手段,清晰有效地传达与沟通信息.但是,这并不就意味着数据可视化就一定因为 ...
- Docker容器的数据卷(data volume),数据卷容器,数据卷的备份和还原。
Docker容器的数据卷(data volume),数据卷容器,数据卷的备份和还原. 数据卷就是数据(一个文件或者文件夹). Docker的理念之一是将应用与其运行的环境打包,docker容器的生命周 ...
- dimensionality reduction动机---visualization(将数据可视化帮助我们更好地理解数据)
如果我们能更好地理解我们的数据,这样会对我们开发高效的机器学习算法有作用,将数据可视化(将数据画出来能更好地理解数据)出来将会对我们理解我们的数据起到很大的帮助. 高维数据如何进行显示 GDP: gr ...
- 利用VTK和PyQt5对医学体数据进行渲染并展示
简介 在一些医学相关的简单的项目(也许是学生的作业?毕业设计?)中,有时候可能需要集成一些可视化的功能,本文简单介绍一下,如何利用PyQt5和VTK来渲染体数据(三维数据),并集成进PyQt的UI框架 ...
- 数据可视化-EChart2.0使用总结1
图表是企业级Web开发必不可少的一个功能点.也是“数据可视化的一个具体呈现”.今天看到阮一峰翻译的“数据可视化:基本图表”一文,同时梳理一下公司现在项目使用的EChart2.0类库.阮一峰的文章同时也 ...
- 用ElasticSearch和Protovis实现数据可视化
搜索引擎最重要的目的,嗯,不出意料就是搜索.你传给它一个请求,然后它依照相关性返回你一串匹配的结果.我们可以根据自己的内容创造各种请求结构,试验各种不同的分析器,搜索引擎都会努力尝试提供最好的结果. ...
随机推荐
- Mac本地编辑服务器代码
windows上映射网络驱动器可以直接在本地编辑远程服务器的代码,那么在mac上怎么配置呢? 1.打开finder——前往——连接服务器——输入:smb://********(你的机器名) 2.输入服 ...
- Jackson注解学习参考(转)
转:http://wong-john.iteye.com/blog/1753402 以下内容摘录.翻译自https://github.com/FasterXML/jackson-annotations ...
- delphi处理消息的几种方式
第一种:自定义处理单条消息 unit Unit2; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, C ...
- 零件库管理信息系统设计--part03:管理员登录部分设计
兄弟们,我又回来啦! 上次我把表建完了.今天来点干货,我们用ssm框架来先简单实现一下管理员的登录功能. 在实现之前,我对user表(管理员表)做了些简单的修改,先来看看: 忽略哪些蓝色的马赛克和乱输 ...
- JavaScript复习之--javascript数据类型隐式转换
JavaScript数据类型隐式转换.一,函数类 isNaN() 该函数会对参数进行隐式的Number()转换,如果转换不成功则返回true. alert() 输出的内容隐式的 ...
- 大数据学习记录之ssh绵密登录
1,在服务器端 ssh-keygen 2,使用ssh-copy-id 192.168.2.146 3,再测试一下ssh 192.168.2.146 exit 退出当前登录 具体流程为:A,B两台机器 ...
- js 获取元素内部文本
调用textContent属性即可. 如: var label=document.getElementById('juan-select').getElementsByClassName('radio ...
- 核心模块Path
核心模块Path 作用:用于帮助程序员来操作硬盘上的路径. 核心模块注意点:当引用核心模块的时候直接require('模块名'),不需要加任何路径或者后缀. Path中的常用API: dirname( ...
- 初识Object-C
Object-C是苹果推出用来开发苹果软件的一门编程语言.大学学了3年的JAVA,到了大四毅然决然的放弃JAVA,是因为第一次接触Object-C就被它的简单语法吸引了.其实不仅仅是语法简单,相对于A ...
- 老李分享:loadrunne动态查询db2数据库
老李分享:loadrunne动态查询db2数据库 poptest老李认为性能测试脚本开发不仅仅涉及到脚本开发的技术层面,同时也要对一些其他技术有所了解动态链接库的技术,线程安全等等,建议在做下面的 ...