PCDViewer是一款功能强大但操作极为简单的点云可视化和编辑软件,支持对点云的渲染显示、查询、量测、建图拼接、编辑、格式转换等功能,同时支持了pose文件、矢量文件等的显示。PCDViewer目前提供了Windows、Ubuntu18.04、Ubuntu20.04等版本。
本页面总结了PCDViewer的基本、常用操作。为正常使用文档中介绍的功能,建议用户下载最新版软件。
PCDViewer Release Page_Jacky_546287052的博客-CSDN博客
PCDViewer Auto Rotation
目录
14. 用pcdviewer_skip.sh脚本批量打开点云文件
在安装目录下,双击PCDViewer,或者通过命令行打开PCDViewer,即可启动软件。
在Windows系统中,设置PCDViewer为点云数据(pcd, las,ply等)默认打开软件后,双击点云数据即可直接打开点云数据。
软件支持打开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格式相互转换的功能,方法是打开点云后另存为指定格式。
软件对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,可以实现对点云的全局渲染,这在有些情形下可以极大地提高点云的渲染操作效率。点击工具栏的相应按钮即可。
软件默认鼠标中键控制旋转,鼠标右键控制平移,鼠标中键控制缩放,软件支持鼠标控制方式的定制。在安装目录下,打开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.1 查询点信息
在工具栏点击点查询工具,在视口点击查询点,Point Info 框中便会显示点的全部字段信息、以及点所在的数据集信息。所选点会默认按红色高亮显示。查询点的大小可以通过Config->Inquiry Point Size进行设置,查询点的颜色可以在config.json中的inquiry_config进行配置。
5.2 量测距离
在工具栏点击量测工具,在视口中点击两点,Distance 框会显示距离信息:
5.3 量测角度和平面法向量
从4.9.1开始,软件提供了量测旋转角和旋转轴的功能,旋转轴也即为平面法向量。
计算连续3点间构成的夹角()及旋转轴(如上图)。
5.4 量测及查询信息的擦除
点击C,或点击工具栏Clear工具,可以清除查询、量测痕迹: 在Layer Tree的相应Item上,点击弹出式菜单中的Show Properties,会弹出文件的属性信息,包括点云坐标范围、半径、点数、文件路径等:
软件提供了强大的点云滤波和编辑功能。
点云地面滤波是点云处理中常用功能,软件提供了一个点云地面滤波器 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
-Min Flat Patch Size
-Recall Distance
此外,还有一个参数,Ground Label,指定地面的目标类别,默认 ground_label =1。
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轴朝向。
在测绘及SLAM中,显示连续帧点云拼接效果极为重要。软件为显示连续帧点云的拼接效果提供了方便而强大的支持。
首先加载点云pose文件,此时frame_id对应pcd点云文件的basename。例如1.pcd,其basename是1,则其frame_id为1。
然后,就可以打开需要的点云文件查看拼接效果。
借助距离量测、单帧点云的不同渲染方式等,可以很方便地查看点云拼接精度,评估点云建图质量。
颜色查找表包含类别名、类别ID、类别颜色等信息。
可以通过双击颜色从而编辑相应类别的点云颜色。
也可以通过Append、Remove等增加或减少类别,控制要进行着色的类别范围。
对不在Color Table中的类别,将按白色进行着色。
Color Table对应的软件配置文件名为lable_config.cfg,这实际上是一个utf-8编码的文本文件,用户可以直接编辑这个文件。
用户可以任意设置Color Table所在的位置,可以放置在不同面板进行显示,也可以关闭它。关闭后,如果要重新打开,可以通过Config->Color Table让其重新显示。
S/s 增加/减少点大小
P/p 使平移速度变快/变慢
Z/z 使缩放速度变快/变慢
R/r 使旋转速度变快/变慢
shift + r 开启/关闭自动旋转
Alt + x 截图(version >= 4.8.0)
W Roam快捷键
C Clear快捷键。清除点查询、距离量测、Focus(放大镜)等的相关绘制
H 只在水平方向进行旋转 -- 禁用上下旋转
V 只在竖直方向进行旋转 -- 禁用水平旋转
关于缩放的一个小技巧:支持无限放大。有时候看起来还有放大空间,但放大不动了,不是放大到头了,实际上还可以放大。多次按大写Z,放大缩放速度,然后就会发现又可以放大了。同时,按住鼠标中键拖放可以实现快速缩放。
提供了放大镜功能。放大镜实际上重置了旋转中心,极大地方便了用户操作。
1)双击鼠标修改Folder Item名字
2)点击鼠标右键弹出菜单
3)有时候Layer Tree操作空间被占满,无法出现”Add Folder”菜单选项,可以在点击鼠标右键的同时按住Alt键,就可以弹出”Add Folder”菜单选项了。
4)直接按Delete键可以直接删除Item
本软件支持矢量文件显示。矢量文件格式为.ghs,为作者自定义的一种高效的矢量格式文件。关于文件格式定义,请参考PCDViewer Release Page 及随本软件发布时附带的test_data/example_file.ghs,这是一种文本格式文件,可以用文本编辑工具直接打开。同时,作者提供了.ghs文件的读写库,上传在github上(https://github.com/XuShengpan/GeneralGraphicsFormat),感兴趣的读者可以通过文件定义、代码等进一步了解。
例如:下图显示了一个矢量文件,其中包括顶点、向量、多边形等要素。
用户可以对矢量的显示方式进行编辑:
用户可以通过Data->Clear 清除所有数据,然后重新打开新的数据。
软件具有可靠的稳定性,清除所有数据再打开新的数据,与关闭软件再重新打开数据没有区别。
有时候,需要按一定间隔抽样调查点云效果。提供了pcdviewer_skip.sh脚本批量打开点云文件。用法为:
- bash pcdviewer_skip
- Usage: {pcd_folder} {skip}
该脚本需要两个参数,第一个参数是点云文件的目录,skip是文件打开的间隔。例如,skip=10表示按每间隔10帧打开点云。
使用按脚本需要将PCDViewer的安装目录加入系统目录。