科学计算可视化

weidiao weidiao     2022-10-15     323

关键词:

一. 绪论

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

科学计算和可视化(代码片段)

numpy库NumPy通常与SciPy(ScientificPython)和Matplotlib(绘图库)一起使用,是一个强大的科学计算环境。一、数组常用函数1.where() 按条件返回数组的索引值 2.take(a,index) 从数组a中按照索引index取值 3.linspace(a,b,N) 返... 查看详情

科学计算和可视化(代码片段)

NumPyNumPy是高性能科学计算和数据分析的基础包。部分功能如下:ndarray,具有矢量算术运算和复杂广播能力的快速且节省空间的多维数组。用于对整组数据进行快速运算的标准数学函数(无需编写循环)。用于读写磁盘数据的工具... 查看详情

python科学计算与可视化c1(代码片段)

文章目录1.介绍1.1科学可视化方法1.2三维标量可视化1.3矢量数据场2.TVTK库2.1TVTK库安装2.2代码测试2.3TVTK与VTK3创建基本三维对象4使用VTK显示三维对象1.介绍可视化,即将事物或者过程进行抽象,最终以图像或图像的形式进行... 查看详情

科学计算和可视化(代码片段)

 Numpy与MatplotlibNumpynumpy支持大量的维度数组和矩阵运算,对数组运算提供了大量的数学函数库!numpy比Python列表更具优势,其中一个优势便是速度。在对大型数组执行操作时,numpy的速度比Python列表的速度快了好几百。因为nump... 查看详情

科学计算和可视化(代码片段)

一、库函数介绍1. numpy库  NumPy(NumericPython)提供了一个N维的数组类型ndarray,Numpy底层使用C语言编写,内部解除了GIL(全局解释器锁),其对数组的操作速度不受Python解释器的限制,效率远高于纯Python代码。  ndarray到... 查看详情

科学计算可视化(代码片段)

通过Matplotlib,开发者可以仅需要几行代码,便可以生成绘图,直方图,功率谱,条形图,错误图,散点图等。Matplotlib基础知识1.Matplotlib中的基本图表包括的元素x轴和y轴水平和垂直的轴线x轴和y轴刻度刻度标示坐标轴的分隔,包... 查看详情

基于unrealengine的科学数据可视化平台

可视化是计算机科学的一个分支,致力于通过视觉表示来分析数据。科学可视化利用从工程、气候科学和生物医学等领域收集的数据的空间特性。科学可视化通过集成现代硬件来促进可视化分析,对计算机图形具有很强... 查看详情

科学计算和可视化

...b库介绍:是Python编程语言及其数值数学扩展包 NumPy的可视化操作界面。它为利用通用的图形用户界面工具包,如Tkinter,wxPython,Qt或GTK+向应用程序嵌入式绘图提供了应用程序接口(API)。二.雷达图importmatplotlib.pyplotaspltimportnumpy... 查看详情

python科学计算与可视化c1(代码片段)

文章目录1.介绍1.1科学可视化方法1.2三维标量可视化1.3矢量数据场2.TVTK库2.1TVTK库安装2.2代码测试2.3TVTK与VTK3创建基本三维对象4使用VTK显示三维对象1.介绍可视化,即将事物或者过程进行抽象,最终以图像或图像的形式进行... 查看详情

python科学计算包应用-教你以可视化的方式打开numpy(代码片段)

前言NumPy包是python生态系统中数据分析、机器学习和科学计算的主力。它极大地简化了向量和矩阵的操作。Python的一些主要软件包依赖于NumPy作为其基础架构的基础部分(例如scikit-learn、SciPy、pandas和tensorflow)。我们将介绍一些... 查看详情

科学计算和可视化(代码片段)

今天的主题是有关科学计算和可视化的,其中将会包括有python的第三方库numpy以及matplotlib的学习总结及应用!有所涉猎的同学一定对这两个库并不陌生!它们分别是对数组的处理和数据处理的图表制作工具,在数据处理方面它们... 查看详情

matlab中计算函数运行时间的方法

...国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MATLAB和Simulink两大部分。MATLAB是matrix&laboratory两个词的组合,意为矩阵工厂(矩阵实验室)... 查看详情

请问如何用matlab创建txt文本文档啊?

...验室)。是由美国mathworks公司发布的主要面对科学计算、可视化以及交互式程序设计的高科技计算环境。它将数值分析、矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环... 查看详情

matlab如何设置小数点后位数?

...国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MATLAB和Simulink两大部分。MATLAB是matrix&laboratory两个词的组合,意为矩阵工厂(矩阵实验室)... 查看详情

动态可视化数据可视化之魅d3,processing,pandas数据分析,科学计算包numpy,可视化包matplotlib,matlab语言可视化的工作,matlab没有指针和引用是个大问题

动态可视化数据可视化之魅D3,Processing,pandas数据分析,科学计算包Numpy,可视化包Matplotlib,Matlab语言可视化的工作,Matlab没有指针和引用是个大问题D3.js入门指南什么是D3?D3是指数据驱动文档(Data-DrivenDocuments),根据D3的官方定义:D3... 查看详情

数据科学

...,比如数值计算,比如机器学习深入下去/如果你对数据可视化比较感兴趣,那么你可以在以后的学习过程中,好好学好数据可视化方向。如果你想以后从事偏向于理论的研究工作,那么你不仅仅要学好数值计算、机器学习,还... 查看详情

matlab三维直线怎么画

...国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MATLAB和Simulink两大部分。MATLAB是matrix&laboratory两个词的组合,意为矩阵工厂(矩阵实验室)... 查看详情

年鉴表格-数据可视化分析(代码片段)

年鉴表格-数据可视化分析导入科学计算库获取数据数据合并缺失值处理相关性分析绘制热力图协方差计算相关系数皮尔逊相关系数(PearsonCorrelationCoefficient)斯皮尔曼相关系数(RankIC)回归分析案例分析获取特征与标签数据正规方程... 查看详情