Python+VTK实现激光点云数据可视化学习 2021.7.12

  • 1、激光点云与VTK简介
  • 2、配置Python环境(Conda+PyCharm+Python3.6+VTK)
  • 3、点云数据(大约60万个点,这里只放了部分数据)
  • 4、编写Python代码
  • 5、点云可视化运行结果

1、激光点云与VTK简介

近年来,由于三维激光扫描仪等光学传感器硬件设备的进步,三维激光扫描正在从低精度(厘米级)获取向高精度(毫米级)获取,从几何与强度的采集走向几何与多/高光谱协同采集。相比国外,国内激光扫描硬件起步晚且仍有较大差距。此外,便携式/背包式/无人机为平台的轻小型三维激光扫描装备正蓬勃发展。
        三维激光扫描技术能够采集三维物体的表面信息,进而可重建三维物体表面,这种测量方式具有非接触精度高快速自动化等特点。随之而来的数据处理软件日益出现三维激光扫描技术得到了快速的发展,
        在三维点云数据处理软件方面,商业化的软件主要有TerraSolid 公司的TerraSolid、Trimble公 司 的RealWorks、Leica 公 司 的 Cyclone、Bentley公 司 的PointTools、OrbitGT 公 司 的OrbitMobileMapping等,以 及 国 内 科 研 院 所 和公司开发的一些工具软件。三维激光扫描已成为高时空分辨率三维对地观测的一种重要手段。由于激光扫描所获得的数据为坐标点数据(通常包含三维坐标x、y、z)和反射强度信息,采集的三维激光点云数据需要进行可视化显示,经过语义分割后的三维激光扫描点云数据在三维模型重建、自动驾驶与高精度地图、文化遗产数字化保护、工业产品检测、形变监测、智慧城市、森林资源调查、虚拟VR/增强现实AR等方面具有重要的应用价值。








        现有的三维可视化开发工具主要有 OpenGL、DirectX、VTK 等,其中 VTK 是由美国 Kitware 公司负责维护,在医学、能源、地质等领域颇受重用。VTK 在OpenGL 基础上用 C+ + 语言开发而成,采用面向对象设计,并含有对 Python,Java,Tcl 等语言的接口。独一无二的可视化管道设计: VTK 与 OpenGL,OSG 等其他三维可视化开发工具的主要区别就在于VTK 采用管道式设计( Pipeline) 实现三维显示。绘制器对象Renderer、绘制窗口Render Window、交互器对象Interactor、交互方式Interactor Style以及相机对象Camera、光照对象Light共同构成了绘制环境, 其中绘制器对象设置Camera、Light和背景, Render Window指定关联的父窗口, 并在绘制环境创建完成后开始VTK消息循环。VTK开发文档 和用户指导、Python使用VTK三维3D图形绘制入门教程、VTK官网实例

VTK编程步骤

2、配置Python环境(Conda+PyCharm+Python3.6+VTK)

第一步,电脑首先安装好Conda,打开Anaconda Prompt(Anaconda3)命令行窗口,然后通过输入命令在Conda中创建虚拟环境myenv,之后在myenv虚拟环境中安装Python 3.6后,利用包管理工具pip通过输入pip install 包名来安装所需的外部依赖包numpy、vtk

Anaconda

pip install numpy
pip install vtk


        第二步,直接安装PyCharm即可。

PyCharm

3、点云数据(大约60万个点,这里只放了部分数据)

4、编写Python代码

打开PyCharm,新建一个项目并输入项目名称,之后选择Python编译器为所创建虚拟环境myenv下的python.exe,然后在项目中新建python文件,取名为tetris.py,并输入以下代码即可。

import numpy
import vtk
from vtkmodules.util.numpy_support import numpy_to_vtkif __name__ == '__main__':# 读取 txt 文档source_data = numpy.loadtxt("Pointdata.txt")# 新建 vtkPoints 实例points = vtk.vtkPoints()# 导入点数据points.SetData(numpy_to_vtk(source_data))# 新建 vtkPolyData 实例polydata = vtk.vtkPolyData()# 设置点坐标polydata.SetPoints(points)# 顶点相关的 filtervertex = vtk.vtkVertexGlyphFilter()vertex.SetInputData(polydata)# mapper 实例mapper = vtk.vtkPolyDataMapper()# 关联 filter 输出mapper.SetInputConnection(vertex.GetOutputPort())# actor 实例actor = vtk.vtkActor()# 关联 mapperactor.SetMapper(mapper)# 红色点显示actor.GetProperty().SetColor(0, 1, 0)# Create a render windowrender = vtk.vtkRenderer()#colors = vtk.vtkNamedColors()# Insert Actorrender.AddActor(actor)render.SetBackground(0, 0, 0)#render.SetBackground(colors.GetColor3d('RosyBrown'))# Renderer WindowrenderWindows = vtk.vtkRenderWindow()renderWindows.AddRenderer(render)renderWindows.SetSize(1200, 1200)renderWindows.SetWindowName('点云数据')# System Eventiwin_render = vtk.vtkRenderWindowInteractor()iwin_render.SetRenderWindow(renderWindows)# Styleiwin_render.SetInteractorStyle(vtk.vtkInteractorStyleMultiTouchCamera())iwin_render.Initialize()#renderWindows.Render()iwin_render.Start()

5、点云可视化运行结果


        在PyCharm项目中tetris.py代码的空白处右键选择Run tetris,运行结果如下,可以看到所有的激光点数据,通过鼠标滚轮可实现缩放鼠标左键上下移动实现前后左右翻转



        在人工智能、深度学习等先进技术的驱动下,点云数据的特征描述、语义理解、关系表达、目标语义模型、多维可视化有望实现自动化、智能化的快速发展,同时在测绘地理信息行业中,除了矢量、栅格模型外,激光点云这种新的模型也能够提升地物目标认知与自动化提取和知识化服务的能力。

Python+vtk 实现激光点云数据可视化学习(2021.7.12)相关推荐

  1. Python基于WordCloud词云图的数据可视化分析 词云图的基本使用 政府工作报告分析

    Python基于WordCloud词云图的数据可视化分析 词云图的基本使用 政府工作报告分析 文章目录 1.词云图简介 2.wordcloud库的安装 3.WordCloud的主要参数说明 4.绘制词 ...

  2. 在R、Python和Julia中常用的数据可视化技术

    俗话说"一图胜千言".通过各种图片和图形化展示,我们可以更清晰地表达很多抽象概念.理论.数据模式或某些想法.在本章中,我们首先解释为什么应该关心数据可视化.然后,我们将讨论几种在R ...

  3. 读自动驾驶激光雷达物体检测技术(Lidar Obstacle Detection)(1):Stream PCD流式载入激光点云数据

    首先贴一下大佬的github链接:https://github.com/williamhyin/SFND_Lidar_Obstacle_Detection 知乎专栏:https://www.zhihu ...

  4. python爬虫数据可视化_适用于Python入门者的爬虫和数据可视化案例

    本篇文章适用于Python小白的教程篇,如果有哪里不足欢迎指出来,希望对你帮助. 本篇文章用到的模块: requests,re,os,jieba,glob,json,lxml,pyecharts,he ...

  5. Python: 除matplotlib外还有哪些数据可视化库?

    Python: 除matplotlib外还有哪些数据可视化库? matplotlib算是python比较底层的可视化库,可定制性强.图表资源丰富.简单易用.达到出版质量级别. 其它的可视化库诸如: s ...

  6. python使用pyecharts库画地图数据可视化

    python使用pyecharts库画地图数据可视化 导库 中国地图 代码 结果 世界地图 代码 结果 省级地图 代码 结果 地级市地图 代码 结果 导库 from pyecharts import ...

  7. 用python进行简单的数据分析和数据可视化

    用python进行简单的数据分析和数据可视化 本篇文章主要是初步探索数据分析,简单了解数据分析大致流程 数据来源:来自于Kaggle平台上的一个项目:Explore San Francisco cit ...

  8. matlab体素化,一种三维激光点云数据快速体素化处理方法与流程

    本发明涉及一种三维激光点云数据快速体素化处理方法. 背景技术: 目前,三维激光扫描系统快速发展,由于研究的需要,往往需要把不具有空间长度信息的点数据转为具有三维空间信息的立方体,如何使用软件进行快速. ...

  9. 【计算机专业毕设之基于python猫咪网爬虫大数据可视化分析系统-哔哩哔哩】 https://b23.tv/jRN6MVh

    [计算机专业毕设之基于python猫咪网爬虫大数据可视化分析系统-哔哩哔哩] https://b23.tv/jRN6MVh https://b23.tv/jRN6MVh

最新文章

  1. Complexer-YOLO:基于语义点云的实时三维目标检测与跟踪
  2. android studio文件风格,Android Studio构建风格 – 如何拥有不同风格的相同源文件
  3. docker linux 快速开窗口_Linux快速搭建Docker-阿里云开发者社区
  4. SAP事业部内部互供
  5. Mac OS X连载-1。启动模式小技巧
  6. 3种纯CSS实现中间镂空的12色彩虹渐变圆环方法
  7. 将SqlServer的数据导出到Excel/csv中的各种方法 .
  8. python autoit获取网页ajax数据_WebDriver + Python 调用AutoIt例子(实现139邮箱写信页的附件上传)...
  9. h5select动态加载数据_HTML5+中动态构建列表并填充数据
  10. 《我也能做CTO之程序员职业规划》之七:大学生职业规划技巧
  11. flash砸金蛋_砸金蛋flash课件模版-幸运抽奖随机抽题-多媒体交互式flash游戏课件模版...
  12. Rasa课程、Rasa培训、Rasa面试系列之: Rasa客户案例nib Group 保险公司
  13. hdu 1880 魔咒词典 (字符串哈希)
  14. 常见音频文件格式的特点。
  15. 惠普刀片服务器型号,HP ProLiant刀片服务器简介
  16. 即将上演的5G测量仪器大战
  17. Android中获取唯一的id
  18. Win11打开安卓子系统步骤,所遇到的问题,以及解决办法
  19. 序列模型 - 词向量的运算与Emoji生成器
  20. 人工智能基础——什么是智能(智能的特征)

热门文章

  1. 数据库应用——MySQL函数
  2. 计算机网络安全技术密码技术,计算机网络安全课件:密码技术与压缩技术.ppt...
  3. 这项开源视频抠图技术火了!换背景的方法着实真假难辨
  4. unity地面添加材质球_为Unity3D创建素材(1):图片、着色器、材质球
  5. 畅捷通T3、T6服务器系统环境重装工作流程
  6. 【讨论】大数据环境下 列式存储数据库与Exadata一体机哪个更有优势呢?
  7. 助力查处非法占地现象 | 湖北某审计部门借助Bigemap开展自然资源资产审计工作
  8. html桌面日历功能,jQuery简单带记事功能的日历插件
  9. 暗影精灵 官方恢复出厂系统镜像HP Cloud Recovery Tool
  10. Niagara—— 概述