【可视化-2】将图像当作DSM进行三维显示
上一篇文章中,已经跳出颜色或者亮度的局限,将图像视作一般化的栅格数据,并提供了四种利用颜色和亮度来直观表示栅格间取值差异的可视化方法。
栅格数据的四种可视化方式
这一回,我们又要从一般化走向特殊化。栅格数据,究其本质其实是为了在相互垂直的两个方向按照一定的采样间隔记录二维空间中各处的属性值(可以是亮度、光谱值、温度、湿度、降水量、风速等),普通数字图像的二维空间是三维空间投影出来的。这个采样间隔就是分辨率,更准确的叫法应该是空间分辨率。地表的起伏也可以用栅格数据进行记录,选择一个参考平面,记录各个采样点处离参考平面的距离;在地理领域这种数据叫做DEM或者DSM。可见,一般的栅格数据与DSM、DEM的区别,仅在于采样间隔未知或者单位不是米。如果人为给定一个采样间隔,将像元值视作离开参考平面的距离,那么一般栅格数据可以视作DSM、DEM。因此一般栅格数据也可以当作地形数据进行三维显示。
对栅格数据进行三维显示与使用颜色和亮度进行二维显示相比,对栅格上数值的大小关系和变换趋势能够提供更加直观和更加准确的感受。在进行三维显示时数值的大小实际上是用长短表示的,能够确保数值与观感的线性关系;而颜色和亮度的感受与相应电磁波的强度不具有线性关系。
下图为一幅DSM数据分别按照灰度显示和三维显示的结果。
DSM进行灰度显示
DSM三维显示
三维显示工具的启动
使用tGis Desktop进行栅格数据三维显示的操作步骤非常方便,点击图中红框内的三维显示工具,在显示窗口中绘制需要显示的区域,之后将会自动弹出三维显示窗口。在三维显示窗口中会将绘制的多边形显示出来,还会显示一个参考平面,用于辅助观察栅格上数值的大小。
三维显示工具,与三维显示范围
拉伸栅格数值
通过对栅格数值的拉伸可以实现细节增强或者细节抑制。使用较大的拉伸系数时,放大了局部的差异,可以更加清晰地观察细节。使用较小地拉伸系数时,缩小了局部的差异,可以更准确地观察整体数值分布。

拉伸栅格数值
移动参考平面
通过移动参考平面,可以更加准确地观察不同位置数值之间地大小关系。

平移参考平面
顶点着色
当前可以使用不同渐变色进行顶点着色,或者直接显示为三角网。(下图纯绿色的实际上时三角网,因为太密集了,看不出来)

使用不同渐变色进行顶点着色,或者直接显示为三角网。纯绿色的实际上是三角网
可视化例子
梯度图像
梯度的三维显示
红色通道的三维显示
亮度的三维显示
分割结果局部
分割结果三维显示(这是没意义的)
通过多视几何原理从无人机俯拍照片生成的DSM(与深度图类似)
将上面的DSM进行三维显示
实现这些可视化功能的软件完全开源的,感兴趣的可以自行下载源码编译。栅格数据IO用的GDAL,软件界面一开始用的Qt最近改成了wxWidgets,还依赖的一个内存池(elr_memory_pool)。
https://github.com/tgis-top/tGis
【可视化-2】将图像当作DSM进行三维显示的更多相关文章
- 科学计算三维可视化---TVTK管线与数据加载(可视化管线和图像管线了解)
一:TVTK的管线 使用管线技术将TVTK中各个对象穿连起来,几乎所有渲染引擎都会提到管线技术 在TVTK中,每个对象只需要实现相对简单的任务,整个管线则能根据用户的需求,实现复杂的数据可视化处理. ...
- Python 数据可视化 -- pillow 处理图像
Python 图像库(Python Image Library,PIL)为 Python 提供了图像处理能力. PIL 官网:http://www.pythonware.com/products/pi ...
- OpenCV3 for python3 学习笔记3-----用OpenCV3处理图像2
3.5.Canny边缘检测 OpenCV提供了Canny边缘检测函数来识别边缘.它有5个步骤:使用高斯滤波器对图像进行去噪.计算梯度.在边缘上使用最大抑制(NMS).在检测到的边缘上使用双阀值去除 假 ...
- 科学计算三维可视化---Mlab基础(管线控制函数)
科学计算三维可视化---TVTK管线与数据加载(可视化管线和图像管线了解) 科学计算三维可视化---Mayavi入门(Mayavi管线) Mlab管线控制函数的调用 Sources:数据源 Filte ...
- OpenCV图像的轮廓的匹配
http://blog.sina.com.cn/s/blog_67a7426a0101cxl0.html 一个跟轮廓相关的最常用到的功能是匹配两个轮廓.如果有两个轮廓,如何比较它们;或者如何比较一个轮 ...
- tensorflow学习笔记——图像数据处理
喜欢摄影的盆友都知道图像的亮度,对比度等属性对图像的影响是非常大的,相同物体在不同亮度,对比度下差别非常大.然而在很多图像识别问题中,这些因素都不应该影响最后的结果.所以本文将学习如何对图像数据进行预 ...
- 基于Qt5的排序算法简单可视化
之前写了几个排序算法,然后看到别人将排序算法的过程可视化出来,所以就想尝试一下,然后就用Qt简单写了个界面,用QImage和QPainter来画图显示,代码比较简单. 我的想法是画图的时候,图像的X轴 ...
- 使用Keras构建深度图像搜索引擎
动机 想象一下,如果有数十万到数百万张图像的数据集,却没有描述每张图像内容的元数据.我们如何建立一个系统,能够找到这些图像的子集来更好地回答用户的搜索查询? 我们基本上需要的是一个搜索引擎,它能够根据 ...
- 深度学习与计算机视觉教程(15) | 视觉模型可视化与可解释性(CV通关指南·完结)
作者:韩信子@ShowMeAI 教程地址:http://www.showmeai.tech/tutorials/37 本文地址:http://www.showmeai.tech/article-det ...
随机推荐
- Vue 的响应式原理中 Object.defineProperty 有什么缺陷?
Object.defineProperty只能劫持对象的属性,从而需要对每个对象,每个属性进行遍历,如果,属性值是对象,还需要深度遍历.Proxy可以劫持整个对象,并返回一个新的对象. Proxy不仅 ...
- (四)pandas的拼接操作
pandas的拼接操作 #重点 pandas的拼接分为两种: 级联:pd.concat, pd.append 合并:pd.merge, pd.join 0. 回顾numpy的级联 import num ...
- 数据可视化之powerBI技巧(二)Power BI性能分析器,原来还有这个功能
性能分析器是Power BI前几个月推出的功能,主要用于检测视觉对象和DAX的性能如何,该功能的使用比较简单,首先勾选这个功能, 然后点击开始记录并刷新视觉对象,就可以看出每个元素耗费的时间,如下图 ...
- 数据可视化之powerBI技巧(五)在Power BI中写出优雅的度量值是什么体验?
之前的文章(采悟:连接表的几个DAX函数,一次全掌握)介绍了产品A的客户与产品B的客户的各种交叉关系,其中最常用的应该是找出A和B的共同客户,以便进行产品关联分析. 之前的思路是计算出两个产品的共同客 ...
- 数据可视化之DAX篇(七) Power BI中用DAX生成的表如何添加索引列?
https://zhuanlan.zhihu.com/p/74732578 来源于知识星球中一个星友的问题,使用DAX在PowerBI中新建了一个表,如何为这个表添加索引列呢? 假如数据模型中只有一 ...
- 数据可视化之PowerQuery篇(十六)使用Power BI进行流失客户分析
https://zhuanlan.zhihu.com/p/73358029 为了提升销量,在不断吸引新客户的同时,还要防止老客户离你而去,但每一个顾客不可能永远是你的客户,不可避免的都会经历新客户.活 ...
- Mariadb之主从复制的读写分离
首先我们来回顾下代理的概念,所谓代理就是指的是一端面向客户端,另外一端面向服务端,代理客户端访问服务端,我们把这种代理叫正向代理:代理服务端响应客户端我们叫做反向代理,这个我们在之前nginx系列博客 ...
- Docker搭建部署Node项目
前段时间做了个node全栈项目,服务端技术栈是 nginx + koa + postgresql.其中在centos上搭建环境和部署都挺费周折,部署测试服务器,接着上线的时候又部署生产环境服务器.这中 ...
- oracle终止用户会话
1.创建两个测试用户进行实验 执行命令如下: create user test1 identified by 1; create user test2 identified by 1; grant d ...
- WPF在.NET 5 中的线路图
WPF是用于构建Windows桌面应用程序的.NET Core UI框架.WPF的所属权最近已经移交给了我们的团队(Windows下开发生态系统和平台的团队).这种转变使跨UI框架(即WinUI和WP ...