时空数据可视化

空间数据可视化

数据拓扑

结构化网格
 • 笛卡尔方式
 Xi+1,j = Xi,j + Δ

• 规格化/统一(Regular/Uniform)
 Xi+1,j = Xi,j + Δ I

• 线性方式(Rectilinear)
 Xi+1,j = Xi,j + Δ i(Xi,j)

• 曲线方式
 Xi+1,j = X(i, j)
 Yj+1 = Y (i, j)

非结构化网格
 • 有限元素
 • 四面体
 • 六面体
 • 其他
 
• 数据存储在离散的位置
• 介乎中间的位置
• 许多类型的核函数(kernel)
• 沿着每个坐标轴重建
• 对于非组织的数据更复杂

• 标量: 密度,温度
• 向量: 风向, 力场
• 张量: 压力, 张力, 漫射

空间标量数据可视化

坐标图常用于一维数据可视化
定义域是空间信息有关的属性,值域可取不同的物理属性

二维数据:医学影像数据 、地理学数据
 方法:
  颜色映射法:建立颜色映射表,将标量数据转换为颜色表的索引值
  等值线提取法:在同一条曲线上,曲线上的每一点代表的数值相同
  高度映射法:高度通常用于编码测量到的数据
  标记法
  
三维数据:医学影像数据、CT, MRI、大气数值模拟数据
方法:
 等值面绘制方法
 直接体绘制方法

等值面提取算法

将三维体数据分割成小的体素(立方体),通过判断体素的八个顶点的值来判断它是否在等值面上。
  在这里插入图片描述
歧义性问题
在这里插入图片描述
在这里插入图片描述

Marching Cube基本算法的15模式中:
 无二义性表面:0,1,2,4,5,8,9,11,14
 各有一个二义性表面:3,6(两种连接方式)
 各有二个二义性表面:10,12(四种连接方式)
 有三个二义性表面:7(八种连接方式)
 有六个二义性表面:13(64种连接方式)
 共93种可能的连接方式;除去对称和相同的方式,共有34种方式。

等值面加速算法
 采用带有最大最小值的八叉树、KD树,按需分叉(branch-on-need)策略:延迟等分的方法,在分叉方向上“低层”分割总是占据最大可能多的结点
 GPU加速:金字塔
 
等值面质量提升:
 更高精度的插值
 拓扑结构分析

体绘制

体绘制中所有体素对最后的图像亮度都有贡献根据合成顺序的不同,体绘制方法分为:图像空间扫描的体绘制方法,物体空间扫描的体绘制方法
光线投射体绘制算法:对于图像平面上的每一像素,从视点投射出一穿过该像素的视线,该视线穿过体数据空间,算法直接利用该视线上的采样值合成该像素的亮度。

体素
梯度矢量就是一阶导数
梯度矢量总是指向最大 上升的方向并垂直于等值线
对正交网格,梯度的计算常采用中心差分在这里插入图片描述

对边界区域,可改成前向、后向差分或逼近的二阶差分
在这里插入图片描述

关键步骤1:体光照模型(加强深度感觉 增强面结构信息)
关键步骤2:决定吸收的值 和发射的部分
 传输函数(传递函数设计通常很难、不直观、很繁琐):
   目的:决定体素对最后图像的贡献大小
      决定体素的材料性质和外观
   原则:
       重要的特征和用户感兴趣的区域赋以高的不透明度值
       使不重要的区域透明或很小的不透明度值
关键步骤3:体采样
 等距离采样:
  t=t1;
  v = undefined;
  while (t < t2) {
  x=x0 + at;
  y=y0 + b
t;
  z =z0 + c*t;
  v=EvaluateRayFunction (v,t);
  t=t+delta_t;
}
关键步骤4:体积分
 体积分的离散解:
  沿着视线方向离散地重采样数据场
在这里插入图片描述

体绘制合成算法

从后向前的积分:
优点:
 计算比从前向后的方法简单直接
 不用存储累积的α值
在这里插入图片描述

从前向后的积分
 优点:
  可利用早期光线终止算法,当α接近于1时,后面的体元不会再对该像素点有所贡献,可直接终止,省去不必要的计算。因其速度快,应用广泛。
在这里插入图片描述

空间向量数据可视化

向量场可视化

可视化目标:
  展示场的导向趋势信息
  表达场中的模式
  
向量场可视化方法:
  基于标量场映射可视化
  基于几何的方法
  基于纹理的方法
  基于拓扑分析的方法
  
向量场的空间和时间维度
 空间维度:
  2D (平面流)
  2.5D (曲面上的流、边界流)
  3D (三维空间上的流)
 时间维度:
  定常流 (静态或一个时间步)
  非定常流 (时变、瞬态)
  
标记法:
 线条(hedge hogs)、箭头、方向标志符(三角图符)等
 优点:
  实现简单、直观、灵活
 缺点:
  可视混乱
 无法揭示出数据的内在连续性
 难以表达特征结构如涡流等
 
基于积分曲线的方法:
流线
 对静态流场或时变流场的某个时刻,从某一点开始的一条连续曲线,其上任一点的切线方向均与向量场在 该点的方向一致
在这里插入图片描述
s为流线轨迹参数,
τ 为某个时间点的流场

迹线(Pathline)
 对时变流场来说,从某一点释放一个粒子在各个时刻形成的一条曲线,其上任一点的切线方向均与该时刻向量场在 该点的方向一致
在这里插入图片描述
t为时间参数

脉线
 在时变流场的某点,持续释放粒子,在某个时刻,这些粒子形成的轨迹线
在这里插入图片描述

时线
 脉线的一个扩展,从一条起始轨迹或一个起始区域上的不同位置生成一系列脉线
 
基于积分曲线的方法:
 对稳定向量场,流线、迹线、脉线
相同
 非稳定场,迹线、脉线
不同
在这里插入图片描述

提升积分曲线的方法的质量:
 关键技术1:积分曲线的计算
在这里插入图片描述

欧拉方法:简单快速,但精度太低
x(t+dt) = x(t) + v(x(t)) * dt
 关键技术2:种子点的选取、流线放置
 (1)过多   视觉混乱
 (2)过少  表达不完整
 种子点的放置策略:覆盖性 (Coverage)、均匀性 (Uniformity)、连续性 (Continuity)

基于纹理的方法:点噪音,随机排列一些圆点,按照局部流场方向对圆点变形,将变形后的圆点用滤波器扩散到纹理中

空间张量数据可视化

每个数据点的值为n维矩阵
描述数据在数据点邻域上如何变化

标量指数法

以弥散张量成像数据DTI为例
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
时空比例图是一种常用的数据可视化方式,可以同时展示时间和空间的变化情况。在Python中,可以使用多种工具实现时空比例图的绘制,比如Matplotlib、Plotly等。 首先,需要准备好数据,包括时间、空间和对应的数值。假设我们有一份数据,记录了某个城市每小时的PM2.5浓度,可以按照如下方式处理数据: ```python import pandas as pd # 读取数据 data = pd.read_csv('pm25.csv') # 转换时间格式 data['time'] = pd.to_datetime(data['time']) # 提取时间、经度、纬度和PM2.5浓度 data = data[['time', 'lon', 'lat', 'pm25']] ``` 接下来,可以使用Matplotlib或Plotly绘制时空比例图。这里以Matplotlib为例,代码如下: ```python import matplotlib.pyplot as plt from mpl_toolkits.basemap import Basemap # 设置地图范围 m = Basemap(llcrnrlon=115, llcrnrlat=39, urcrnrlon=117, urcrnrlat=41, resolution='h') # 绘制海岸线、国家边界和州边界 m.drawcoastlines() m.drawcountries() m.drawstates() # 绘制散点图 x, y = m(data['lon'].values, data['lat'].values) m.scatter(x, y, c=data['pm25'].values, cmap=plt.cm.jet, alpha=0.5, s=data['pm25'].values*10) # 添加时间标签 for i, t in enumerate(pd.date_range(start=data['time'].min(), end=data['time'].max(), freq='6H')): x, y = m(116.5, 40.5) plt.text(x, y+i*10000, t.strftime('%Y-%m-%d %H:%M:%S'), fontsize=10, color='r') # 添加色标 plt.colorbar() # 显示图像 plt.show() ``` 这段代码首先创建了一个Basemap对象,用于绘制地图。然后,使用Basemap对象的scatter方绘制散点图,其中颜色和大小都与PM2.5浓度相关。最后,添加时间标签和色标,并显示图像。 注意,这段代码需要安装Basemap库,可以使用pip进行安装: ``` pip install basemap ``` 当然,如果你想使用Plotly进行绘制,可以参考Plotly的官方文档进行操作:https://plotly.com/python/maps/。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值