PCDViewer的常用操作-程序员宅基地

技术标签: slam  自动驾驶  可视化  计算机视觉  

PCDViewer是一款功能强大但操作极为简单的点云可视化和编辑软件,支持对点云的渲染显示、查询、量测、建图拼接、编辑、格式转换等功能,同时支持了pose文件、矢量文件等的显示。PCDViewer目前提供了Windows、Ubuntu18.04、Ubuntu20.04等版本。

本页面总结了PCDViewer的基本、常用操作。为正常使用文档中介绍的功能,建议用户下载最新版软件。

PCDViewer Release Page_Jacky_546287052的博客-程序员宅基地

PCDViewer Auto Rotation


目录

1. 启动软件    

2. 打开点云

3. 点云的渲染

4. 可视化操作控制

5. 查询和量测

6. 点云滤波和编辑

7.  显示pose文件

8. 显示连续帧点云的拼接效果

9. 配置类别颜色表(Class Color Table)

10. 快捷键

11. 关于Layer Tree的操作    

12. 显示矢量

13. 数据清除

14. 用pcdviewer_skip.sh脚本批量打开点云文件


1. 启动软件    

        在安装目录下,双击PCDViewer,或者通过命令行打开PCDViewer,即可启动软件。
在Windows系统中,设置PCDViewer为点云数据(pcd, las,ply等)默认打开软件后,双击点云数据即可直接打开点云数据。

2. 打开点云

        软件支持打开pcd、ply、las等格式的点云文件。
        目前已支持以下几种文件打开方式:
        1)在软件中用Open按钮打开文件
        包括菜单栏 Data -> Open Point Cloud 和 Layer Tree -> 鼠标右键菜单 -> Open Point Cloud
        2)通过命令行打开文件;
        3)通过拖放方式打开文件;
        4)通过Data -> Recent Files,打开最近打开的文件。

        软件支持一次打开多个点云文件。
        点云打开后,默认按高程方式进行渲染。 
    
        强烈建议将软件路径添加到系统环境变量。这样,可以直接通过命令调起本应用程序。
        同时,强烈建议将本软件设置为点云文件的默认程序,这样,可以通过双击点云文件用本软件直接打开。

        通过命令行加载点云文件的方式为:
        PCDViewer pcd_file_1 pcd_file_2 [...]

        打开的文件会记录到Data-Recent Files菜单中,下次软件启动时,可以直接通过Recent Files中的相应记录打开文件。

        点云打开后,会加入到Layer Tree进行管理,方便进行各种查找、渲染、编辑等操作。

        软件同时提供了las、pcd、ply格式相互转换的功能,方法是打开点云后另存为指定格式。

3. 点云的渲染

        软件对pcd、ply、las进行了系统而完善的支持,支持打开任何符合pcl标准的pcd和ply格式的数据,并可方便地渲染任意字段。

        PCDViewer提供了丰富的点云渲染方式,包括:
        - Render As Elevation: 按高程着色
        - Render As Mono Color: 按单一颜色着色
        - Render As RGB: 按点云自带的rgb颜色着色(如果点云有RGB信息的话)    
        - Render As Field: 按字段着色。

        当点云文件中包含rgb字段时,点云可以按RGB渲染。对pcd、ply文件,当文件中包含rgb或rgba字段、且rgb/rgba数据按3x8/4x8 bit组织在一个32位数据中时,则可以按RGB渲染。
   
        PCDViewer支持按任意字段渲染点云。同时,对每一个字段,提供了Render By Label Color、Render By Random Color、Render By Continuous Color三种方式。
        -Render By Label Color:基于字段值,从颜色查找表取对应颜色,即
           color=LookupTabel(value);
        -Render By Random Color:基于字段值,按一种随机颜色算法计算颜色,即
           color=RandomColor(value);
        -Render By Continuous Color:基于字段值和连续颜色表计算相应颜色,即
          color=ContinuousColor(v_min, v_max, value)。
        颜色查找表可以通过Lable Color 表格进行编辑。
        Render By Continuous Color中,可以通过直方图工具调整v_min、v_max,从而调整可视化效果。如下图,拖动蓝色滑块和红色滑块分别改变线性拉伸的最小值和最大值,从而突出需要显示的信息;通过调整Beyond Strategy确定对(最小值,最大值)之外的信息展示策略,例如,显示背景是黑色,则可以设置Beyond Strategy为black,从而不显示(最小值,最大值)之外的数据。

        提供了超级渲染字段进行点云的全局渲染,包括Elevation、Classification、Intensity、RGB,可以实现对点云的全局渲染,这在有些情形下可以极大地提高点云的渲染操作效率。点击工具栏的相应按钮即可。

4. 可视化操作控制

        软件默认鼠标中键控制旋转,鼠标右键控制平移,鼠标中键控制缩放,软件支持鼠标控制方式的定制。在安装目录下,打开config.json文件,用户可以重新定义缩放、平移、旋转的相应鼠标键,下面的配置中,定义左键控制平移,右键控制旋转,中键控制缩放。

        软件提供了视点控制功能:
        1)通过放大镜功能(Focus),可以将视口中心迅速重定位于用户所点击的目标区域;
        2)当软件打开了大量点云文件时,用户点击文件弹出菜单中的“Make Visible”,可以将视口中心迅速重定位于文件对应的点云数据区域。

        软件提供了平移速度控制功能。当软件打开的数据区域范围较大时,可以向右拖动平移速度滑块加大平移速度。软件同时提供了其他快捷键控制平移/旋转/缩放速度等。

        提供了漫游操作快捷键(W),可以使得当前工具由其他工具迅速切换为漫游工具(Roam Tool)。

        提供了坐标轴网格等的显示。坐标轴按X-红,Y-绿,Z-蓝显示,坐标轴的长度默认为1米,grid 网格大小默认为10米,可以在config菜单中开启或关闭坐标轴、grid的显示,同时可以在config.json中配置软件的坐标轴的显示长度、grid的网格大小等信息。

        可以改变背景颜色。点Config->background,选择想要的背景颜色,则可以设置点云显示窗口的背景颜色。

        提供了自动旋转快捷键(Shift + R),方便用户进行效果展示、视频录制等操作。

5. 查询和量测

        软件提供了效率极高的拾取算法,对大文件和同时打开几千个单帧点云文件,软件也可以进行实时拾取和查询。

5.1 查询点信息
       在工具栏点击点查询工具,在视口点击查询点,Point Info 框中便会显示点的全部字段信息、以及点所在的数据集信息。所选点会默认按红色高亮显示。查询点的大小可以通过Config->Inquiry Point Size进行设置,查询点的颜色可以在config.json中的inquiry_config进行配置。

5.2 量测距离
      在工具栏点击量测工具,在视口中点击两点,Distance 框会显示距离信息:

5.3 量测角度和平面法向量
      从4.9.1开始,软件提供了量测旋转角和旋转轴的功能,旋转轴也即为平面法向量。

计算连续3点间构成的夹角(<P_1P_0,P_1P_2>)及旋转轴(如上图)。   

5.4 量测及查询信息的擦除
        点击C,或点击工具栏Clear工具,可以清除查询、量测痕迹:        在Layer Tree的相应Item上,点击弹出式菜单中的Show Properties,会弹出文件的属性信息,包括点云坐标范围、半径、点数、文件路径等:

6. 点云滤波和编辑

        软件提供了强大的点云滤波和编辑功能。

        点云地面滤波是点云处理中常用功能,软件提供了一个点云地面滤波器 Ground Filter,对城区和山区、车载和机载等点云都能取得不错的地面滤波效果,点云滤波中的参数可以在Ground Filter Parameters Config中设置;同时,软件提供了专门用于城区车载单帧点云的地面滤波算法Ground Filter (Single Frame),一般在20ms以内即可完成单帧点云的滤波处理,基于默认参数即可取得较为理想的滤波效果,本算法与Ground Filter功能具有相同的参数。软件优先支持带label或classification字段的滤波和编辑处理,同时支持对不带label或classfication字段的点云的地面滤波,可以用Save Label PCD 导出地面滤波及编辑结果。

        软件提供了“多边形选点(Polygon Label Tool)”和“扩散选点(Diffuse Label Tool)”标注工具,对带label或classification字段的点云数据,通过标注工具选中点,即可将点分至目标类别,目标类别通过组合框指定,目标类别组合框中的内容由点云类别编辑表(Class Color Table)指定,用户可以编辑点云类别编辑表,设定类别分类、类别ID、颜色等信息。

        “扩散选点”是本软件的创新功能,当用户在目标区域点击时,该功能通过区域生长算法,将拾取周围一定距离范围内的邻近点标注为目标类别。

        进行滤波或编辑操作后,Layer Tree中的相应点云文件,在文件名前面会加上星号(*)以示数据更改,保存或导出后星号会消失。

        标注完成后,可以在Layer Tree中右键点击对应Item进行保存。如果用户没有进行保存操作,在软件关闭时会自动提示保存。

关于地面滤波器的参数
-Max Slope <degree>:最大坡度,单位度,默认5
-Min Flat Patch Size <meter>:最小平面大小,单位度,默认1.5
-Recall Distance <meter>:召回距离阈值,单位米,默认0.1
此外,还有一个参数,Ground Label,指定地面的目标类别,默认 ground_label =1。

7.  显示pose文件

        pose文件记录了连续时刻位姿。可以通过pose文件可视化可以查看某位置/某时刻位姿、坐标轴朝向、轨迹连续性、平滑性等。
        pose文件格式为:
        frame_id   time_stamp     x      y     z      qx     qy     qz      qw
        字段类型除frame_id为整型外,其他均为浮点型。
        字段间以空格分开。
        pose文件没有文件头。

         pose文件示例:

0 1669000000.324430  -1.79949 0.002519 -0.921 -0.000001 -0.000007 0.017514 0.999847
1 1669000000.423560  -1.708357 0.006662 -0.921 -0.000042 -0.000377 0.039366 0.999225
2 1669000000.523310  -1.465213 0.02722 -0.921 -0.000018 -0.00013 0.061221 0.998124
3 1669000000.622430  -1.269766 0.053482 -0.921 -0.000014 -0.000105 0.082008 0.996632
4 1669000000.721570  -1.159607 0.072923 -0.921 -0.000104 -0.000466 0.09825 0.995162
5 1669000000.820710  -0.970453 0.112265 -0.920999 0.000085 -0.000732 0.120379 0.992728

        可以通过点查询工具(Pickup Point)查询某一点的具体pose信息,信息以Point Info呈现出来。同时,软件同时会绘制出该pose点的姿态信息(orientation),红(Red)、绿(Green)、蓝(Blue)三轴分别代表代表该pose点局部坐标系的X轴、Y轴、Z轴朝向。

8. 显示连续帧点云的拼接效果

        在测绘及SLAM中,显示连续帧点云拼接效果极为重要。软件为显示连续帧点云的拼接效果提供了方便而强大的支持。
        首先加载点云pose文件,此时frame_id对应pcd点云文件的basename。例如1.pcd,其basename是1,则其frame_id为1。
        然后,就可以打开需要的点云文件查看拼接效果。
        借助距离量测、单帧点云的不同渲染方式等,可以很方便地查看点云拼接精度,评估点云建图质量。

9. 配置类别颜色表(Class Color Table)

        颜色查找表包含类别名、类别ID、类别颜色等信息。
        可以通过双击颜色从而编辑相应类别的点云颜色。
        也可以通过Append、Remove等增加或减少类别,控制要进行着色的类别范围。
        对不在Color Table中的类别,将按白色进行着色。

        Color Table对应的软件配置文件名为lable_config.cfg,这实际上是一个utf-8编码的文本文件,用户可以直接编辑这个文件。

        用户可以任意设置Color Table所在的位置,可以放置在不同面板进行显示,也可以关闭它。关闭后,如果要重新打开,可以通过Config->Color Table让其重新显示。

10. 快捷键

   S/s          增加/减少点大小
   P/p          使平移速度变快/变慢
   Z/z           使缩放速度变快/变慢
   R/r           使旋转速度变快/变慢
   shift + r    开启/关闭自动旋转
   Alt + x      截图(version >= 4.8.0)

   W      Roam快捷键
   C       Clear快捷键。清除点查询、距离量测、Focus(放大镜)等的相关绘制
   
   H       只在水平方向进行旋转 -- 禁用上下旋转
   V       只在竖直方向进行旋转 -- 禁用水平旋转
   
        关于缩放的一个小技巧:支持无限放大。有时候看起来还有放大空间,但放大不动了,不是放大到头了,实际上还可以放大。多次按大写Z,放大缩放速度,然后就会发现又可以放大了。同时,按住鼠标中键拖放可以实现快速缩放。

        提供了放大镜功能。放大镜实际上重置了旋转中心,极大地方便了用户操作。

11. 关于Layer Tree的操作    

        1)双击鼠标修改Folder Item名字
        2)点击鼠标右键弹出菜单
        3)有时候Layer Tree操作空间被占满,无法出现”Add Folder”菜单选项,可以在点击鼠标右键的同时按住Alt键,就可以弹出”Add Folder”菜单选项了。
        4)直接按Delete键可以直接删除Item

12. 显示矢量

        本软件支持矢量文件显示。矢量文件格式为.ghs,为作者自定义的一种高效的矢量格式文件。关于文件格式定义,请参考PCDViewer Release Page 及随本软件发布时附带的test_data/example_file.ghs,这是一种文本格式文件,可以用文本编辑工具直接打开。同时,作者提供了.ghs文件的读写库,上传在github上(https://github.com/XuShengpan/GeneralGraphicsFormat),感兴趣的读者可以通过文件定义、代码等进一步了解。

        例如:下图显示了一个矢量文件,其中包括顶点、向量、多边形等要素。

用户可以对矢量的显示方式进行编辑:

13. 数据清除

        用户可以通过Data->Clear 清除所有数据,然后重新打开新的数据。
        软件具有可靠的稳定性,清除所有数据再打开新的数据,与关闭软件再重新打开数据没有区别。

14. 用pcdviewer_skip.sh脚本批量打开点云文件

        有时候,需要按一定间隔抽样调查点云效果。提供了pcdviewer_skip.sh脚本批量打开点云文件。用法为:

bash pcdviewer_skip
Usage: {pcd_folder} {skip}

        该脚本需要两个参数,第一个参数是点云文件的目录,skip是文件打开的间隔。例如,skip=10表示按每间隔10帧打开点云。

        使用按脚本需要将PCDViewer的安装目录加入系统目录。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/Jacky_546287052/article/details/130904605

智能推荐

c# 调用c++ lib静态库_c#调用lib-程序员宅基地

文章浏览阅读2w次,点赞7次,收藏51次。四个步骤1.创建C++ Win32项目动态库dll 2.在Win32项目动态库中添加 外部依赖项 lib头文件和lib库3.导出C接口4.c#调用c++动态库开始你的表演...①创建一个空白的解决方案,在解决方案中添加 Visual C++ , Win32 项目空白解决方案的创建:添加Visual C++ , Win32 项目这......_c#调用lib

deepin/ubuntu安装苹方字体-程序员宅基地

文章浏览阅读4.6k次。苹方字体是苹果系统上的黑体,挺好看的。注重颜值的网站都会使用,例如知乎:font-family: -apple-system, BlinkMacSystemFont, Helvetica Neue, PingFang SC, Microsoft YaHei, Source Han Sans SC, Noto Sans CJK SC, W..._ubuntu pingfang

html表单常见操作汇总_html表单的处理程序有那些-程序员宅基地

文章浏览阅读159次。表单表单概述表单标签表单域按钮控件demo表单标签表单标签基本语法结构<form action="处理数据程序的url地址“ method=”get|post“ name="表单名称”></form><!--action,当提交表单时,向何处发送表单中的数据,地址可以是相对地址也可以是绝对地址--><!--method将表单中的数据传送给服务器处理,get方式直接显示在url地址中,数据可以被缓存,且长度有限制;而post方式数据隐藏传输,_html表单的处理程序有那些

PHP设置谷歌验证器(Google Authenticator)实现操作二步验证_php otp 验证器-程序员宅基地

文章浏览阅读1.2k次。使用说明:开启Google的登陆二步验证(即Google Authenticator服务)后用户登陆时需要输入额外由手机客户端生成的一次性密码。实现Google Authenticator功能需要服务器端和客户端的支持。服务器端负责密钥的生成、验证一次性密码是否正确。客户端记录密钥后生成一次性密码。下载谷歌验证类库文件放到项目合适位置(我这边放在项目Vender下面)https://github.com/PHPGangsta/GoogleAuthenticatorPHP代码示例://引入谷_php otp 验证器

【Python】matplotlib.plot画图横坐标混乱及间隔处理_matplotlib更改横轴间距-程序员宅基地

文章浏览阅读4.3k次,点赞5次,收藏11次。matplotlib.plot画图横坐标混乱及间隔处理_matplotlib更改横轴间距

docker — 容器存储_docker 保存容器-程序员宅基地

文章浏览阅读2.2k次。①Storage driver 处理各镜像层及容器层的处理细节,实现了多层数据的堆叠,为用户 提供了多层数据合并后的统一视图②所有 Storage driver 都使用可堆叠图像层和写时复制(CoW)策略③docker info 命令可查看当系统上的 storage driver主要用于测试目的,不建议用于生成环境。_docker 保存容器

随便推点

网络拓扑结构_网络拓扑csdn-程序员宅基地

文章浏览阅读834次,点赞27次,收藏13次。网络拓扑结构是指计算机网络中各组件(如计算机、服务器、打印机、路由器、交换机等设备)及其连接线路在物理布局或逻辑构型上的排列形式。这种布局不仅描述了设备间的实际物理连接方式,也决定了数据在网络中流动的路径和方式。不同的网络拓扑结构影响着网络的性能、可靠性、可扩展性及管理维护的难易程度。_网络拓扑csdn

JS重写Date函数,兼容IOS系统_date.prototype 将所有 ios-程序员宅基地

文章浏览阅读1.8k次,点赞5次,收藏8次。IOS系统Date的坑要创建一个指定时间的new Date对象时,通常的做法是:new Date("2020-09-21 11:11:00")这行代码在 PC 端和安卓端都是正常的,而在 iOS 端则会提示 Invalid Date 无效日期。在IOS年月日中间的横岗许换成斜杠,也就是new Date("2020/09/21 11:11:00")通常为了兼容IOS的这个坑,需要做一些额外的特殊处理,笔者在开发的时候经常会忘了兼容IOS系统。所以就想试着重写Date函数,一劳永逸,避免每次ne_date.prototype 将所有 ios

如何将EXCEL表导入plsql数据库中-程序员宅基地

文章浏览阅读5.3k次。方法一:用PLSQL Developer工具。 1 在PLSQL Developer的sql window里输入select * from test for update; 2 按F8执行 3 打开锁, 再按一下加号. 鼠标点到第一列的列头,使全列成选中状态,然后粘贴,最后commit提交即可。(前提..._excel导入pl/sql

Git常用命令速查手册-程序员宅基地

文章浏览阅读83次。Git常用命令速查手册1、初始化仓库git init2、将文件添加到仓库git add 文件名 # 将工作区的某个文件添加到暂存区 git add -u # 添加所有被tracked文件中被修改或删除的文件信息到暂存区,不处理untracked的文件git add -A # 添加所有被tracked文件中被修改或删除的文件信息到暂存区,包括untracked的文件...

分享119个ASP.NET源码总有一个是你想要的_千博二手车源码v2023 build 1120-程序员宅基地

文章浏览阅读202次。分享119个ASP.NET源码总有一个是你想要的_千博二手车源码v2023 build 1120

【C++缺省函数】 空类默认产生的6个类成员函数_空类默认产生哪些类成员函数-程序员宅基地

文章浏览阅读1.8k次。版权声明:转载请注明出处 http://blog.csdn.net/irean_lau。目录(?)[+]1、缺省构造函数。2、缺省拷贝构造函数。3、 缺省析构函数。4、缺省赋值运算符。5、缺省取址运算符。6、 缺省取址运算符 const。[cpp] view plain copy_空类默认产生哪些类成员函数

推荐文章

热门文章

相关标签