- 新增
Save as binary
功能。将点云保存为二进制文件,载入速度更加快。 - 优化
Console
窗口。Open
和Add
点云文件时,Console 窗口会显示载入点云所花的时间。 - 优化
文件对话框
。Open
、Add
和Save
点云文件时,会默认从上次目录打开,而不是V 1.0.0
中每次都从桌面目录打开。
CloudViewer (点云可视化软件)是一款面向三维点云数据处理、点云开发专业人员及爱好者的三维点云可视化软件,该软件具备以下功能:
-
点云 IO。常见点云格式文件(如 ply, pcd 和 obj)的读取、保存、删除清空及可视化。
-
点云的基本操作。设置点云颜色,合并多个点云,点云格式转换等。
-
可视化的基本操作。设置视图窗口背景颜色,设置点云的可视化尺寸,设置坐标系的显示,设置视图方位(Main view, Left view, Top view),网格面片显示,网格线框显示等。
-
模型生成。生成简单立方排布的点云以及基本三维模型,该功能主要用于测试。
-
软件界面基本功能。软件由: [1] 菜单栏、[2] 工具栏、[3] 资源管理树、[4] 属性管理器、[5] 输出窗口、[6] 状态栏、[7] 视图窗口以及 [8] RGB 窗口组成。其中部分都是停靠窗口,可以在菜单栏的视图选项设置是否显示,方便用户自定义软件界面。软件还提供 Windows 和 Darcula 两大主题,其中 Darcula 主题为默认主题,仿照 Visual Studio 和 Android Studio 相应暗系主题设计,极具极客风范。不过为了适应大部分用户,本手册中的示例都是在 Windows 主题下操作的。
- 软件下载:CloudViewer 下载 (软件大小 23.7 MB,目前仅支持 Windows 系统)。
- Github 源码:https://github.com/nightn/CloudViewer (欢迎 Star 和 Fork)
- 使用手册:http://www.nightn.com/cloudviewer
- 开发环境:CloudViewer 是用 Windows 10 (64 位) 系统下的 Mircosoft Visual Studio Professional 2013,结合使用 Qt 5.7.0 (64 位) 及 PCL 1.8.0 (64 位) 等开源库进行开发的。
- 资源使用:软件所使用的图片资源均来源于 www.easyicon.net。
- 声明:本软件用作分享与学习,若转载请注明出处,勿作任何商业用途。
点云 IO 操作主要包括 Open
, Add
, Save
, Clear
和 Change
等。
[重要说明] 点云存放路径不能有中文字符,否则点云不能正常打开!
点云是由很多个具有三维坐标 x, y, z 的点组成的数据格式,除了位置信息外,点云还可以包含颜色信息(点云的 RGB 值)、透明信息、法线信息等。目前常用的点云格式有 pcd, ply 以及 obj 格式。打开这三种格式的点云主要通过 Qt 库的文件对话框和 PCL 库中载入点云数据的相关 API 实现。
点云 IO 的常用操作可以在 File
菜单及工具栏中找到:
打开动作 Open
的实现效果如下图,支持多选进行批量打开。
点云处理中,有时需要同时对多个点云在同一视图窗口进行可视化和处理。添加点云 Add
每次可以添加一个或多个点云文件,而不会清空后台已经缓存的点云数据,也不会清空视图窗口已经显示的点云模型。理论上,添加点云的数量没有限制。Add
实现效果如下图(为了便于区分,将点云设置成了不同颜色):
保存点云 Save
有两个特点:
-
多类型保存。
Open
可以实现对 pcd, ply 和 obj 等格式文件的多类型打开,Save
也可以将文件保存成 pcd, ply 等多种类型,这样也就实现了点云的格式转换功能: -
多文件保存。CloudViewer 还能将视图窗口显示的所有点云保存为同一个文件,实现了多文件的合并保存。
清空点云 Clear
可将视图窗口中的所有点云模型及后台缓存数据清空。
格式转换 Change
暂时未做实现。因为通过 Open
和 Save
就可以完成点云格式转换。
点云基本操作会直接影响点云文件的内容,基本功能包括改变点云颜色、点云格式转换、点云合并等。
点云中的点不但具有三维信息(x, y, z 坐标),还具有颜色信息(R, G, B),为了更形象地描述点云模型,抑或是为了区分不同点云模型,出于这样的目的,我们需要对点云模型的颜色进行修改。具体包括的功能为:
-
调整RGB值改变单一点云文件颜色。
-
在多个点云同时显示时,通过在资源管理树的item进行选择,实现对某一个选定的点云进行颜色变换。
-
既可以通过滑块控件设置RGB,又可以通过颜色对话框来选择具体颜色。
-
随机上色功能。
点云文件的格式种类非常多,常见的能用 PCL 库直接处理的包括 ply, pcd 等,三维扫描仪保存的 wrl 格式。我们往往需要对点云格式进行转换,但是目前存在的主流点云软件,如 Geomagic Studio,Rapidform,MeshLab 等对点云格式转换的支持并不令人满意(比如 Geomagic Studio 能够导入ply文件并对其进行操作,但却不能保存为 ply,只能保存为 wrl。然后需要利用 MeshLab 将 wrl 转换为 ply,最后还需要利用自己写的程序将 ply 转为 pcd,过程非常麻烦!)
CloudViewer 目前实现了多种点云格式的相互转换(wrl文件的转换还有待进一步开发),通过打开并另存为即可实现三种不同点云格式之间的相互转换,打开和保存的实现可以参见上述部分。如下图:
点云合并 = “多点云打开” + “多点云保存”。上述打开和保存功能已经实现了点云合并功能,在此不再赘述。
可视化基本操作主要包括设置背景颜色,设置点云的可视化尺寸,设置视图方位(Main view, Left view, Top view),网格面片显示以及网格线框显示等。
视图窗口中的点云颜色可以更改,背景颜色亦然,效果如下:
点云由很多点构成,每个点本身具有颜色信息,但是没有尺寸大小的信息。但需要以不同大小进行显示,这是可视化的任务,不涉及对点云本身的修改。设置点云可视化尺寸功能效果如下,分别对应size = 1, 2, 3时点云的大小,为了不影响点云操作,允许的最大尺寸为10(因为点的尺寸越大,渲染速度越慢,对点云的操作也不方便)。
设置可视化的视图方位提供了三种不同的视图,主视图(Main View),左视图(Left View)和俯视图(Top View),通过选择相应的视图方位,实现对点云更加快捷的操作。设置视图方位效果如下:
PCL库中提供了非常强大的点云处理功能。在CloudViewer中,实现了点云的网格面片显示和网格线框显示,实现分为三步:点云法线估计,曲面重建和网格显示。显示效果如下:
这是一个非常简单但很实用的功能,当你没有点云数据时,可以通过这个功能,生成一个由50000个点随机排布成的立方,如下图所示:
仅实现了球体的生成。球体生成效果如下图所示:
CloudViewer 包含四个停靠窗口:资源管理树(Data Manager)、属性管理器(Property Manager)、输出窗口(Console)以及RGB窗口(RGB Manager)。通过 View 菜单的选项可以实现停靠窗口的显示及隐藏。
输出窗口提供了记录你的操作日志,方便查看,通过右击选择 Clear
可以进行清空,如果你觉得输出窗口没有必要,也可以通过右击选择 Disable console
和 Enable console
来禁用或使用输出窗口。
资源管理树显示了当前打开的所有点云,可以通过单选或多选,然后右键,进行点云的隐藏、显示、删除设置颜色等操作,非常快捷。
属性管理器记录了选中点云的一些属性:选中点云的点的数量、RGB 信息,还包括打开的点云的总个数,及所有点云点的数量等。
通过 Help
可以访问我的博客,查看 CloudViewer 的使用手册(后续会出开发手册)。About
界面记录了 CloudViewer 的版本信息和开发者信息。
CloudViewer 作为一款点云可视化软件,提供了多点云类型,多文件的读取和写入,并实现了点云类型的转换及点云模型的合并。在此基础上,还提供了丰富的可视化操作,如设置点云颜色及尺寸,设置显示背景颜色,点云的网格面片显示,点云的网格线框显示等;此外,还提供了简单的模型生成及绘制功能,如生成立方随机排布的点云模型,绘制基本三维模型如球体和圆柱体等。在界面上,综合运用了 VTK 显示窗口,停靠窗口,文件树窗口,列表窗口,菜单栏,工具栏,状态栏等一系列 Qt 控件,并建立了功能丰富的多种信号槽联系。
在实际测试中,点云的读取和处理速度也非常快,在本机打开包含 50000 个点的点云文件,耗时不超过1秒,打开包含 170000 个点的点云文件,耗时 3 秒左右。而且在程序设计中,综合考虑了各种用户可能会执行的违规操作,为了防止软件崩溃,对多种错误操作进行了合理反馈。
CloudViewer 还有进一步提升的空间。作为一款点云可视化软件,在后期开发中应该会加入少量三维点云处理的功能,如多角度拍摄的点云进行拼接,点云三角化及光学渲染等。最后,比较重要的一点是,软硬件结合,由于实验室常用微软的 Kinect2.0 获取点云数据,但是微软自带的 SDK 采集到的数据不能很好的反应点云的颜色信息(颜色是根据深度信息来确定的,而不是物体的实际颜色),因此,还可以考虑增加 CloudViewer 与 Kinect 连接及实时可视化的功能。相信随着更多功能的添加,CloudViewer 能够更加胜任在实际实验中的点云获取,点云可视化和点云处理的方方面面。