上一篇文章中,已经跳出颜色或者亮度的局限,将图像视作一般化的栅格数据,并提供了四种利用颜色和亮度来直观表示栅格间取值差异的可视化方法。

栅格数据的四种可视化方式

这一回,我们又要从一般化走向特殊化。栅格数据,究其本质其实是为了在相互垂直的两个方向按照一定的采样间隔记录二维空间中各处的属性值(可以是亮度、光谱值、温度、湿度、降水量、风速等),普通数字图像的二维空间是三维空间投影出来的。这个采样间隔就是分辨率,更准确的叫法应该是空间分辨率。地表的起伏也可以用栅格数据进行记录,选择一个参考平面,记录各个采样点处离参考平面的距离;在地理领域这种数据叫做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进行三维显示的更多相关文章

  1. 科学计算三维可视化---TVTK管线与数据加载(可视化管线和图像管线了解)

    一:TVTK的管线 使用管线技术将TVTK中各个对象穿连起来,几乎所有渲染引擎都会提到管线技术 在TVTK中,每个对象只需要实现相对简单的任务,整个管线则能根据用户的需求,实现复杂的数据可视化处理. ...

  2. Python 数据可视化 -- pillow 处理图像

    Python 图像库(Python Image Library,PIL)为 Python 提供了图像处理能力. PIL 官网:http://www.pythonware.com/products/pi ...

  3. OpenCV3 for python3 学习笔记3-----用OpenCV3处理图像2

    3.5.Canny边缘检测 OpenCV提供了Canny边缘检测函数来识别边缘.它有5个步骤:使用高斯滤波器对图像进行去噪.计算梯度.在边缘上使用最大抑制(NMS).在检测到的边缘上使用双阀值去除 假 ...

  4. 科学计算三维可视化---Mlab基础(管线控制函数)

    科学计算三维可视化---TVTK管线与数据加载(可视化管线和图像管线了解) 科学计算三维可视化---Mayavi入门(Mayavi管线) Mlab管线控制函数的调用 Sources:数据源 Filte ...

  5. OpenCV图像的轮廓的匹配

    http://blog.sina.com.cn/s/blog_67a7426a0101cxl0.html 一个跟轮廓相关的最常用到的功能是匹配两个轮廓.如果有两个轮廓,如何比较它们;或者如何比较一个轮 ...

  6. tensorflow学习笔记——图像数据处理

    喜欢摄影的盆友都知道图像的亮度,对比度等属性对图像的影响是非常大的,相同物体在不同亮度,对比度下差别非常大.然而在很多图像识别问题中,这些因素都不应该影响最后的结果.所以本文将学习如何对图像数据进行预 ...

  7. 基于Qt5的排序算法简单可视化

    之前写了几个排序算法,然后看到别人将排序算法的过程可视化出来,所以就想尝试一下,然后就用Qt简单写了个界面,用QImage和QPainter来画图显示,代码比较简单. 我的想法是画图的时候,图像的X轴 ...

  8. 使用Keras构建深度图像搜索引擎

    动机 想象一下,如果有数十万到数百万张图像的数据集,却没有描述每张图像内容的元数据.我们如何建立一个系统,能够找到这些图像的子集来更好地回答用户的搜索查询? 我们基本上需要的是一个搜索引擎,它能够根据 ...

  9. 深度学习与计算机视觉教程(15) | 视觉模型可视化与可解释性(CV通关指南·完结)

    作者:韩信子@ShowMeAI 教程地址:http://www.showmeai.tech/tutorials/37 本文地址:http://www.showmeai.tech/article-det ...

随机推荐

  1. day36 解决粘包问题

    目录 一.tcp粘包问题出现的原因 二.解决粘包问题low的办法 三.egon式解决粘包问题 四.实现并发 1 tcp 2 udp 一.tcp粘包问题出现的原因 前引: tcp的客户端与服务端进行通信 ...

  2. Linux系统中到底应该怎么理解系统的平均负载

    02 | 基础篇:到底应该怎么理解“平均负载”? 每次发现系统变慢时,我们通常做的第一件事,就是执行 top 或者 uptime 命令,来了解系统的负载情况.比如像下面这样,我在命令行里输入了 upt ...

  3. Maven [ERROR] 不再支持源选项 5,请使用 7 或更高版本的解决办法

    刚刚学Maven,当我点击test时 就出现了这两个错误: [ERROR] 不再支持源选项 5.请使用 7 或更高版本.[ERROR] 不再支持目标选项 5.请使用 7 或更高版本. 后来在看到这篇文 ...

  4. Linux05 /nginx

    Linux05 /nginx 目录 Linux05 /nginx 1. nginx安装.配置 2. nginx的多虚拟主机功能 3. nginx的访问日志功能,404页面功能 4. nginx的反向代 ...

  5. python 之 编码

    本节内容 编码回顾 编码转换 Python的bytes类型 编码回顾 在备编码相关的课件时,在知乎上看到一段关于Python编码的回答 这哥们的这段话说的太对了,搞Python不把编码彻底搞明白,总有 ...

  6. unity第一人称如何设置

    关系图 红色菱形:脚本 白色矩形:组件 移动代码 //移动代码 public CharacterController controller;//角色控制器 public float speed = 1 ...

  7. Go的100天之旅-02基本语法

    基本语法 Go关键字 下面是Go的25个关键字: break default func interface select case defer go map struct chan else goto ...

  8. Python Ethical Hacking - MODIFYING DATA IN HTTP LAYER(2)

    MODIFYING DATA IN HTTP LAYER Edit requests/responses. Replace download requests. Inject code(html/Ja ...

  9. C++算法 链式前向星存图

    这个东西恶心了我一阵子,那个什么是什么的上一个一直是背下来的,上次比赛忘了,回来有个题也要用,只能再学一遍,之前也是,不会为什么不学呢.我觉得是因为他们讲的不太容易理解,所以我自己给那些不会的人们讲一 ...

  10. tk.mybatis selectByPrimaryKey无法正确识别主键

    selectByPrimaryKey无法正确识别主键,查看日志,发现报如下错误: ==> Preparing: SELECT username,password,name,age,sex,bir ...