科学计算可视化

一. 绪论

  1. 现代科学研究主要方法:

(1) 理论(推导,完全归纳,演绎)

(2) 实验(统计,归纳)

(3) 数值方法,模拟仿真

(4) 大数据,知识发现,数据挖掘

  1. 可视化定义
    可视化是一种方法。它将符号变为直观的几何形体,使研究者可以直接观察他们感兴趣的对象,它提供了一种观察不可见事物的手段。
    数据可视化(Data Visualization ):运用计算机图形学和图像处理技术,将数据转换为图形或图像在屏幕上显示出来,并进行交互处理的理论、方法和技术。
    数据可视化的类型:

(1) 科学计算可视化

(2) 信息可视化

(3) 知识可视化
下面介绍三种数据可视化的特点,区别和联系

  1. 科学计算可视化

(1) 特点:空间数据场的可视化

(2) 背景:大量科学计算获取的具有空间关系的数据如何直观显示

(3) 概念:是运用计算机图形学或者一般图形学的原理和方法,将科学与工程计算等产生的大规模有空间结构的数据转换为图形、图像,以直观的形式表示出来。

(4) 方法:显示的对象涉及标量、矢量及张量等不同类别的空间数据,研究的重点放在如何真实、快速地显示二维/三维的数据场。

  1. 信息可视化

(1) 特点:非空间数据的可视化

(2) 背景:随着社会信息化的推进和网络应用的日益广泛,信息源越来越庞大。除了需要对海量数据进行存储、传输、检索及分类等以外,更迫切需要了解数据之间的相互关系及发展趋势。希望能够对其进行更高层次的分析,以便更好地利用这些数据。

(3) 概念:使用计算机支持的、交互性的视觉表示法,对抽象数据进行表示,以增强认知

(4) 方法:显示的对象主要是多维的标量数据(经济、管理、Web数据),目前的研究重点在于设计和选择什么样的显示方式才能便于用户了解庞大的多维数据及它们相互之间的关系

  1. 知识可视化

(1) 人类的知识

(2) 背景:信息可视化的目标在于从大量的抽象数据中发现一些新的见
解,或者简单地使存储的数据更容易被访问;而知识可视化则是通
过提供更丰富的表达他们所知道内容的方式,以提高人们之间的知
识传播和创新。

(3) 概念:在科学计算可视化、数据可视化、信息可视化基础上发展起
来的新兴研究领域,应用视觉表征手段,促进群体知识的传播和创
新。一般来讲,知识可视化领域研究的是视觉表征在提高两个或两
个以上人之间的知识传播和创新中的作用。

(4) 方法:除了传达事实信息之外,知识可视化的目标在于传输见解(insights)、经验(experiences)、态度(attitudes)、价值观(Values)、期望(expectations)、观点(perspectives)、意见(opinions)和预测(predictions)等,并以这种方式帮助他人正确地重构、记忆和应用这些知识。

  1. 科学计算可视化的研究方向

(1) 沉浸式的ViSC

(2) 分布式的ViSC

(3) 交互式的ViSC

  1. 体数据的来源

(1) 测量,如医学的计算机断层扫描(CT),磁共振成象(MRI )。

(2) 计算,如计算流体力学(CFD), 有限元分析(FEA),这是当前体数据的主要来源之一.这是当前体数据的主要来

(3) 几何实体的体素化(Voxelization) 。

  1. 科学计算可视化技术分类
    两种标准:按照数据类型,按照数据之间的关系结构和分布
    按照数据类型分为三类:标量矢量和张量
    按照数据之间关系结构和分布:结构化数据和非结构化数据,结构化数据又分为四类

(1) 均匀网格结构化数据(Cartisian)

(2) 规则网格结构化数据(Regular)

(3) 矩形网格结构化数据(Rectangular)

(4) 不规则网格结构化数据
不规则结构化数据和非结构化数据还是不一样的,需要注意区分:
不规则的结构化网格特点

(1) 内部点有相同数目的邻居

(2) 在存储时每个网格节点的坐标值需要保存,同时每个网格节点的连接点采用相同规模的数据结构存储.在存储时每个网格节点的坐标值需要保存,同时每个网格节点的连接点采用相同规模的数据结构存储
非结构化网格特点

(1) 内部点邻居不同

(2) 连接关系需要按照不同的节点分别处理

  1. 科学计算可视化流程:数据生成->数据处理->可视化映射->绘制->显示
  2. 科学计算可视化是一种空间信息的可视化,其处理的对象包含三方面信息:

(1) n 维空间中的坐标;

(2) 与n 维空间中其他节点的连接关系;

(3) 数据场中的场值。
Talk is cheap,show you my code.
struct node{
Vector3 Position;
struct node *link;
Value value;} ;

  1. 科学计算可视化典型应用

(1) 数字化人体

(2) 矿产油藏

(3) 大气及流体,天气预报

(4) 虚拟风洞

(5) 有限元分析,天体物理,遥感,流体力学,化学,生命科学

  1. 科学计算可视化的研究方向

(1) 沉浸式的ViSC

(2) 分布式的ViSC

(3) 交互式的ViSC

  1. 体数据的来源

(1) 测量,如医学的计算机断层扫描(CT),磁共振成象(MRI )。

(2) 计算,如计算流体力学(CFD), 有限元分析(FEA),这是当前体数据的主要来源之一.这是当前体数据的主要来

(3) 几何实体的体素化(Voxelization) 。

  1. 科学计算可视化技术分类
    两种标准:按照数据类型,按照数据之间的关系结构和分布
    按照数据类型分为三类:标量矢量和张量
    按照数据之间关系结构和分布:结构化数据和非结构化数据,结构化数据又分为四类

(1) 均匀网格结构化数据(Cartisian)

(2) 规则网格结构化数据(Regular)

(3) 矩形网格结构化数据(Rectangular)

(4) 不规则网格结构化数据
不规则结构化数据和非结构化数据还是不一样的,需要注意区分:
不规则的结构化网格特点

(1) 内部点有相同数目的邻居

(2) 在存储时每个网格节点的坐标值需要保存,同时每个网格节点的连接点采用相同规模的数据结构存储.在存储时每个网格节点的坐标值需要保存,同时每个网格节点的连接点采用相同规模的数据结构存储
非结构化网格特点

(1) 内部点邻居不同

(2) 连接关系需要按照不同的节点分别处理

  1. 科学计算可视化流程:数据生成->数据处理->可视化映射->绘制->显示
  2. 科学计算可视化是一种空间信息的可视化,其处理的对象包含三方面信息:

(1) n 维空间中的坐标;

(2) 与n 维空间中其他节点的连接关系;

(3) 数据场中的场值。
Talk is cheap,show you my code.
struct node{
Vector3 Position;
struct node *link;
Value value;} ;

  1. 科学计算可视化典型应用

(1) 数字化人体

(2) 矿产油藏

(3) 大气及流体,天气预报

(4) 虚拟风洞

(5) 有限元分析,天体物理,遥感,流体力学,化学,生命科学

二. 三维规则标量数据场及基于面片提取的绘制算法

  1. 体元:一个二阶魔方,8个顶点构成一个体元.
  2. 体素:坐标值+数据场值
  3. 三维规则标量标量场的存储:
    三维数组Double RegularField[MaxX][MaxY][ MaxZ]
    规则数据场主要特点是各个网格点的坐标、连接关系可以自然推导,不需要显式存储
  4. 常见绘制方法

a) 基于等值面面片提取的方法 在物体空间的每个体元中提取等值面片,随后按照计算机图形学中绘制面片物体的方法进行绘制。其最大的特点是可以充分利用现有计算机对三维图形的支持。(OpenGL 、显卡加速等)

b) 直接体绘制方法 直接基于体数据进行绘制,其最大的特点是可以体现数据场中的整体数据分布,而且绘制效率高.

i. 从图像空间出发的方法(像序)

ii. 从物体空间出发的方法(物序)

  1. 计算机图形学中物体表示方法

a) 线框表示

b) 曲面表示

c) 点模型

d) 实体表示
基本几何元素:点线面体

(6)计算机图形学中基于三角形面片绘制需要的主要参数
三个点的坐标信息:用于空间变换,投影
三个点的法向量,或者整个三角形面片的法向量:用于光照计算
三个顶点的纹理,颜色:用于渲染绘制
(7)二维平面等值线求法,双线性插值公式:f(x,y)=(k_1 x+b_1)(k_2 x+b_2)=a+bx+cy+dxy
四个变量,四个方程

  1. 三维空间标量场基于等值面方法

a) Cuberille

b) MarchingCubes

c) MarchingTetrahedral

  1. Marching Cubes算法基本流程

(1) 导入相邻的Slice 的数据,形成体元

(2) 逐个处理数据场中的体元,提取出与等值面相交的体元;

(3) 采用插值方法计算出等值面与体元的交点;

(4) 将交点按照一定方式连接生成等值面。
将256 种情况归约为15 种情况,以简化处理

  1. Marching Cubes算法存在的问题及改进
    问题其实就分两类:效率问题和效果问题(精确性,正确性)

(1) 等值面近似性问题:当数据场稀疏,等值面太大,造成误差明显.

(2) 二义性:二义性产生的原因是,共享的表面在不同体元中可以采取不同的连接方式.
解决方法:MT算法,用四面体求等值面.

(3) 密集数据场中,体元太小,每个三角面片太小,以至于不足以容下1个像素.
解决方法:Dividing Cube方法,直接将该体元中心作为一个像素进行投影,称之为”表面点”.

(4) 对于每一个给定的等值面的值,需要遍历体数据中的每一个体元,而许多体元与这个等值面并没有交点,所以需要一种快速过滤方法.如八叉树,层次包围盒等数据结构.

(5) 细节保留问题:场数据在由计算机自动生成时,有些尖锐部分会变得模糊平滑.

(6) 大数据量面片绘制费时.这是一个效率问题
解决方案:层次化绘制,八叉树.

  1. MT算法:解决二义性问题,不使用正方体求等值面,而是使用四面体
    步骤如下

(1) 正方体剖分成若干个四面体(一般使用5划分)

(2) 在四面体中求等值面得到若干个三角面片

(3) 将三角面片投影到绘制平面上
三. 三维规则数据场直接体绘制

  1. 定义:直接体绘制算法是将离散分布的三维数据场,按照一定的规则不通过中间图元直接转换为图形显示设备帧缓存中的二维离散信号,即生成每个像素点颜色的R 、G 、B 值。
  2. 直接体绘制算法的特点

(1) 直接体绘制简称体绘制,最主要的特点是不生成中间图元。

(2) 将离散分布的三维数据场(对原有实际数据场的采样结果)转换为二维信号,需要重新采样(Re-sampling)

(3) 需要计算每个数据值(采样点)对二维图像的贡献,同时需要将全部数据值对二维图像的贡献进行合成

(4) 体绘制的实质包括两项内容: 重新采样 、图像合成

  1. 光照模型

光照模型的作用:

常用光照模型:

(1) 源-衰减模型(Source-Attenuation)
为体数据场中的每一个体素分配一个源强度和一个衰减系数,每一个体素作为一个质点光源发出的光线在数据场中沿距离衰减后被投影到视平面上,形成结果图像。

(2) 变密度发射模型(Varying Density Emitters)
质点光源模型,每个体元都可以发光.

(3) 材料分类及混合模型(Classification&Mixture)

  1. 直接体绘制算法分类
    软件方法
    频域:物序(以RayCasting为例),相序(以抛雪球为例)
    时域
    硬件方法
  2. 三维规则数据场直接体绘制-------RayCasting算法(光线投射算法)

光线投射算法实现:

(1) 判断一个点在多边形内部(计算几何知识,在光线与多边形求交中遇到)

a) 叉积(只适用于凸多边形):充要条件是,对于多边形每对相邻顶点做叉积,叉积符号相同.

b) 夹角之和360

c) 无穷远处交点个数计数法

(2) Raycasting算法分类
按照合成方式:Pre DVRI,Post DVRI
按照采样方式:等距,不等距

(3) RayCasting算法存在的问题
1) 图像模糊问题:延迟渲染
以前,对于同种物质的各个点,它们毫无干系,各自为战.来一个点,就直接渲染这个点.
现在,对于同种物质的各个点,先把它们累加起来,再对累加和进行渲染.

2) 希望突出体绘制中的边界面信息:增加梯度计算和光照计算,显示表面效果
3) 算法效率,每条射线都需要求交,运算量大:利用射线相关性,减少运算量
4) 采样问题,等距采样太盲目,采样间距不易控制,等距采样默认间距之间只有一种物质.
解决方案:八叉树,相当于变步长采样.

(4) 数据场相关性

a) 数据场场值连续性

b) 数据场空间连续性

c) 成像平面相邻像素连续性

(5) 体元分类

a) Voxel Cell,只含一种物质的体元

b) Blank Cell,空体元

c) Complex Cell,包含多种物质的体元

  1. 物序法

(1) 足迹表法FootPrint,又叫Splatting抛雪球法--------物序

(2) 物序法的特征
逐层、逐行、逐个地计算每一个数据点对屏幕像素的贡献,将其加以合成,形成最后的图像

(3) 物序法
? Splatting—— 体素
? V-buffer—— 体元
? Slice—— 纹理
? Shear-Warp—— 整体
? 体元相关性投影—— 体元

(4) 错切变形Shear-Warp算法
算法的中心思想:将三维离散数据场变换到一个中间坐标系,在这个中间坐标系中,观察方向与坐标系的一个轴平行,这样将大大简化从三维物体空间到二维图像空间的投影过程。

(5) SBR(SurfaceBasedRendering,基于等值面)和DVR(DirectVolumeRendering,直接体绘制)
四. 不规则体绘制

  1. 不规则体数据绘制算法:RC,体元投射法
  2. 使用RC方法
    ? 插值运算形成规则数据场:最近邻点法、三线性法、
    按距离反比加权法等
    ? 用规则数据场的光线投射方法对上面步骤形成的数据场进行绘制
  3. 体元投影

  1. 三维不规则数据场的主要特点:空间分布稀疏、网格的形状不同、
    大小不一致。
    五. 矢量场绘制

原文地址:https://www.cnblogs.com/weidiao/p/8449559.html

时间: 2024-10-10 12:26:30

科学计算可视化的相关文章

科学计算和可视化

今天的主题是有关科学计算和可视化的,其中将会包括有python的第三方库numpy以及matplotlib的学习总结及应用! 有所涉猎的同学一定对这两个库并不陌生!它们分别是对数组的处理和数据处理的图表制作工具,在数据处理方面它们都有不俗的表现! 接下来先让我简单介绍一下这两个库~(安装过程就不详述啦~pip install +库就能随心安装,或者你也可以选择直接安装Anaconda 强大的库函数多到你用不完,里面自然有今天所要展开了解的两个库啦~) numpy: 概述:numpy(Numeri

收集的Java科学计算库

将数学.物理.生物.航天.经济学等的计算集成到单一系统架构,提供了细致全面的计算系统. 科学计算框架 Catalano http://www.oschina.net/p/catalano Catalano Framework 是一个 Java 和 Android 的科学计算框架. 主要计算功能: 图像处理 模糊逻辑 数学计算 统计 机器学习 神经网络 科学计算可移植扩展工具包 PETSc http://www.oschina.net/p/petsc PETSc(Portable, Extensi

windows下安装python科学计算环境,numpy scipy scikit等

背景: 目的:要用Python下的DBSCAN聚类算法. scikit-learn 是一个基于SciPy和Numpy的开源机器学习模块,包括分类.回归.聚类系列算法,主要算法有SVM.逻辑回归.朴素贝叶斯.Kmeans.DBSCAN等,目前由INRI 资助,偶尔Google也资助一点. SciPy是一个开源的Python算法库和数学工具包,SciPy包含的模块有最优化.线性代数.积分.插值.特殊函数.快速傅里叶变换.信号处理和图像处理.常微分方程求解和其他科学与工程中常用的计算.其功能与软件MA

Desktop Ubuntu 14.04LTS/16.04科学计算环境配置

Desktop Ubuntu 14.04LTS/16.04科学计算环境配置 计算机硬件配置 cpu i5 6代 内存容量 8G gpu GTX960 显存容量 2G(建议显存在4G以上,否则一些稍具规模的神经网络无法训练,会提示显存容量不足) 配置顺序 安装包 重要依赖 安装ubuntu            14.04   安装显卡驱动         nvidia-367   安装cuda tool kit        8.0   安装cuDNN             v5 安装版本取决

Python 网页爬虫 & 文本处理 & 科学计算 & 机器学习 & 数据挖掘兵器谱(转)

原文:http://www.52nlp.cn/python-网页爬虫-文本处理-科学计算-机器学习-数据挖掘 曾经因为NLTK的缘故开始学习Python,之后渐渐成为我工作中的第一辅助脚本语言,虽然开发语言是C/C++,但平时的很多文本数据处理任务都交给了Python.离开腾讯创业后,第一个作品课程图谱也是选择了Python系的Flask框架,渐渐的将自己的绝大部分工作交给了Python.这些年来,接触和使用了很多Python工具包,特别是在文本处理,科学计算,机器学习和数据挖掘领域,有很多很多

linux中安装python科学计算环境-numpy、scipy、matplotlib、OpenCV...

http://blog.csdn.net/pipisorry/article/details/39902327 在Ubuntu中安装numpy.scipy.matplotlib.OpenCV等 和Python(x,y)不一样,在Ubuntu中需要手工安装科学计算的各个模块, 如何安装IPython, NumPy, SciPy, matplotlib, PyQt4, Spyder, Cython, SWIG, ETS, OpenCV: 在Ubuntu下安装Python模块通常可以使用apt-get

【Python】Python 网页爬虫 & 文本处理 & 科学计算 & 机器学习 & 数据挖掘兵器谱

好文 mark http://www.52nlp.cn/python-%E7%BD%91%E9%A1%B5%E7%88%AC%E8%99%AB-%E6%96%87%E6%9C%AC%E5%A4%84%E7%90%86-%E7%A7%91%E5%AD%A6%E8%AE%A1%E7%AE%97-%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0-%E6%95%B0%E6%8D%AE%E6%8C%96%E6%8E%98 曾经因为NLTK的缘故开始学习Python,之后渐渐成为我工

[resource-]Python 网页爬虫 & 文本处理 & 科学计算 & 机器学习 & 数据挖掘兵器谱

reference: http://www.52nlp.cn/python-%e7%bd%91%e9%a1%b5%e7%88%ac%e8%99%ab-%e6%96%87%e6%9c%ac%e5%a4%84%e7%90%86-%e7%a7%91%e5%ad%a6%e8%ae%a1%e7%ae%97-%e6%9c%ba%e5%99%a8%e5%ad%a6%e4%b9%a0-%e6%95%b0%e6%8d%ae%e6%8c%96%e6%8e%98 一.Python网页爬虫工具集 一个真实的项目,一定是

Python科学计算函数库介绍

数值计算库 NumPy为Python提供了快速的多维数组处理的能力,而SciPy则在NumPy基础上添加了众多的科学计算所需的各种工具包,有了这两个库,Python就有几乎和Matlab一样的处理数据和计算的能力了. NumPy和SciPy官方网址: http://www.scipy.org NumPy为Python带来了真正的多维数组功能,并且提供了丰富的函数库处理这些数组.它将常用的数学函数都进行数组化,使得这些数学函数能够直接对数组进行操作,将本来需要在Python级别进行的循环,放到C语