当前位置: 首页 > ops >正文

【点云工具】CloudCompare学习记录,自用分享

前言

CloudCompare是一款3D点云(以及三角网格)编辑与处理软件。
最初,它被设计用于对密集的3D点云进行直接比较。它依赖一种特定的八叉树结构,在执行这类任务时能够实现卓越的性能。此外,由于大多数点云是通过地面激光扫描仪获取的,CloudCompare旨在在标准笔记本电脑上处理海量点云——通常超过1000万个点(在2005年就可以做到!)。不久之后,它开始支持点云与三角网格之间的比较(详见下文)。此后,许多其他点云处理算法相继出现(配准、重采样、颜色/法向量/标量场管理、统计计算、传感器管理、交互式或自动分割等),以及显示增强工具(自定义颜色渐变、颜色与法向量处理、校准图片处理、OpenGL着色器、插件等)。

在这里插入图片描述

一、安装

1.官网下载–installer version

https://www.cloudcompare.org/
下载速度比较慢
官网→download
在这里插入图片描述
个人比较喜欢选择稳定版
在这里插入图片描述

2.安装–选择合适的安装路径

自己更改路径,我这里选择在D盘创建新文件夹。一直点下一步就行
在这里插入图片描述
在这里插入图片描述
以下内容翻译: 按照所需进行勾选。

  • 附加快捷方式: 创建桌面快捷方式(已勾选 )
  • 法如激光扫描仪(Faro LS)支持: 安装法如 I/O 插件(用于加载 FWS/FLS 文件)。这也会安装法如激光扫描仪的可再发行组件包。(未勾选 )
  • Python 插件支持: 安装 Python 和 3DFin 插件(未勾选)

最新的Windows安装程序还包含Python和3DFin(tree segmentation, Swansea university)插件

在这里插入图片描述

3.安装完毕

在这里插入图片描述

二、说明文档

1.File

在这里插入图片描述

  • Open/Open Recent、Save/Save project、Close all、Quit没什么好说的,就是打开、保存、关闭全部、退出

  • Global Shift settings:全局偏移设置。

    主要用于解决 “大坐标数值” 可能导致的精度问题。当导入的点云坐标值或点云包围盒对角线长度超过一定阈值(默认是
    10000)时,计算机在进行图形可视化等数学运算时可能会出现精度误差,如线不直、面不平、图乱抖等。全局偏移功能会将点云数据平移到原点附近,以减小坐标数值,提高处理精度,在导出数据时再将坐标值还原,不会影响数据真实值。同时,该功能也可以用于手动修改全局偏移量,还能通过设定比例因子实现对点云的整体缩放,方便观察细节或查看宏观结构

  • Primitive factory:创建基本体对象(平面、球体、盒子等)。可以通过选择正确的选项卡(平面、盒子、球体、圆柱体、圆锥体、圆环体和圆盘)来选择基本体类型。对于选定的基本体,可以编辑其参数(主要是尺寸),然后点击“创建”按钮来创建它。
    随机创建一个正方体

  • 3D Mouse:如果一台3Dconnexion设备连接到您的电脑,您可以通过此菜单项启用或禁用它。

  • Gamepad:启用游戏手柄(如果已连接)。自2.8版本起,借助游戏手柄可以控制相机(特别是在以查看器为中心的视角下,或搭配立体眼镜/平视显示器时)。*Warning:*此功能依赖于实验性的Qt游戏手柄支持。它可能并非在所有配置和所有游戏手柄上都能正常工作。

2.Edit

2.1 Colors 颜色渲染

  • Set unique:为所选实体设置单一颜色
  • From Scalar fields:可对各颜色分量分别设置源标量场、映射范围、固定值及反转映射,并支持映射到RGB或HSV色彩空间。
  • Colorize:为所选实体着色,具体表现为分别用所选颜色乘以当前颜色的RGB而得到新的颜色
NewColor.r = OldColor.r * (SelectedColor.r / 255)
NewColor.g = OldColor.g * (SelectedColor.g / 255)
NewColor.b = OldColor.b * (SelectedColor.b / 255)
  • Levels:编辑颜色直方图。类似于 Photoshop 的色阶方法。
  • Height ramp:为所选实体设置颜色渐变(线形、梯形、环形)
  • Convert to grey scale:为所选实体设置颜色为灰度显示
  • Convert to scalar field:将当前的 RGB 颜色字段转换为一个或几个标量字段
  • Interpolate from another entity:在所选实体中插入另外一个实体的颜色
  • Enhance with intensities:增强强度特征
  • Clear (remove the color field of the selected entities):移除所选实体的颜色域
  • Bilateral filter:双边滤波器
  • Gaussian filter:高斯滤波器
  • Mean filter:均值滤波器
  • Median filter:中值滤波器
    在这里插入图片描述

2.2 Normals 法线估计

  • Compute:计算所选实体的法线。

  • Invert:反转所选实体的法线

  • Orient Normals > With Minimum Spanning Tree:用最小生成树的方法精细化计算点云的全部法线

  • Orient Normals > With Fast Marching:用快速行进法重新精细化计算点云的全部法线

  • Convert to > HSV:将云的法线转换到 HSV 颜色字段
    在这里插入图片描述

  • Convert to > Dip and Dip direction SFs:转换点云的法线到两个标量域

  • Export normals to SF(s):将法线按照XYZ纬度渲染

  • Clear:为选定的实体移除法线

2.3 Octree 八叉树

在 32 位版本中,最大八叉树层级(或细分次数)为 N = 10,在 64 位版本中为 N = 21。

  • Compute:强制计算给定实体的八叉树。
  • Resample:通过用质心替换八叉树每个单元格(在给定细分级别)内的所有点来对云进行重采样。
  • 在这里插入图片描述

2.4 Grid

  • Delete scan grids:删除与所选点云相关联的所有扫描网格。例如,在保存带有扫描网格的点云(当然,此时扫描网格毫无用处)的情况下,这可用于减小bin文件的大小。
  • Mesh scan grids:将每个与点云相关联的扫描网格进行网格化处理。⚠警告:如果存在多个扫描网格,这些网格不会被合并。
    在这里插入图片描述

2.5 Cloud

  • Create single point cloud:创建一个点云
  • Paste from clipboard:根据剪贴板中的内容创建点云。调用此工具之前,用户应将数据复制(按CTRL+C)到剪贴板中。CloudCompare需要的内容类似于文本/ASCII文件中的内容(即按列排列的值)。该工具等同于加载一个ASCII文件,并会显示相同的界面来为每一列选择角色。

2.6 Mesh 网格操作

  • Delaunay 2.5D (XY plane):计算点云在x y xyxy平面上的2.5D Delaunay三角剖分
  • Delaunay 2.5D (best fit plane):计算点云在最佳平面的2.5D Delaunay三角剖分
  • Convert texture/material to RGB:将选定网格的网格材料和纹理信息转换为逐个点的 RGB 字段
  • Sample points:在一个网格中随机取样
  • Smooth (Laplacian):拉普拉斯平滑算法
  • Subdivide:细分网格,此算法递归细分网格三角形,直到他们的表面细分到用户指定值之下。
  • Measure surface:测量网格的总体表面积和每个三角形的平均表面积,在控制台输出
  • Measure volume:测量闭合网格的体积,在控制台输出
  • Flag vertices:检查网格的基本特性,为每个网格样本做标志:0 = normal,1 = border,2 = non-manifold
  • Scalar field > Smooth:平滑网格顶点相关联的标量场。
  • Scalar field > Enhance:增强与网格顶点相关联的标量场

2.7 Polyline

  • Sample points:沿折线(polyline)采样点(Sample points)是指在由多个线段连接而成的折线路径上,按照特定规则选取一系列点的过程。用户可选择两种常见方式:
  1. 固定数量的点:无论折线总长度如何,均在其上均匀分布指定数量的采样点。例如,一条由多段线组成的路径,若指定采样10个点,则会将折线总长度等分为10段,在每段的端点处采样。

  2. 密度(线密度):按单位长度内的采样点数来确定。比如线密度设为2个/米,意味着每米长度内会均匀采样2个点。若某段折线长3米,则该段会采样6个点,整体折线的采样点数量随总长度和设定密度动态变化。

两种方式的核心都是基于折线的几何长度进行均匀分布,确保采样点能反映折线的路径特征。

2.8 Plane

  1. Create:创建一个平面
  2. Fit:该工具在点云上拟合一个平面,并输出各种信息,如拟合均方根误差、平面法向量,甚至还有地质倾角和倾向值。

在这里插入图片描述

  • Edit:编辑“平面”实体的参数
  • Flip:翻转所选平面。平面的法线将会反转。
  • Compare:此函数用于比较两个平面实体。
    输出结果包括:
    • 平面名称
    • 两个平面之间的夹角(以度为单位)
    • 第一个平面中心到第二个平面的距离
    • 第二个平面中心到第一个平面的距离

在这里插入图片描述

2.9 Sensors

  • Sensors->Edit:修改所选传感器的内参和外参

Sensors \ TLS/GBL

  • Create Creat/show Depth Buffer :修改所选传感器的内参和外参
    在这里插入图片描述

  • Export Depth Buffer :将所选地面激光雷达(GBL)传感器的深度图导出为ASCII文件。CloudCompare会直接要求输入目标文件名。
    在这里插入图片描述

  • Compute points visibility (with depth buffer):根据任意点云从高亮显示的传感器的“可见性”对其进行分类。该工具从2.6.2版本开始可用。

Sensors \ Camera Sensor

  • Create
  • Project uncertainty
  • Compute points visibility (with octree)
  • Sensors \ Other
  • View from sensor
  • Compute Ranges
  • Compute Scattering Angles

2.10 Scalar fields 标量域

  • Show histogram:对当前选中的实体显示有效标量域的柱形图
  • Compute statistical parameters:计算统计分布(高斯分布、威布尔分布)
  • Gradient:计算标量域的梯度
  • Gaussian filter:高斯滤波,平滑一个标量域
  • Bilateral filter:双边滤波,平滑一个标量域
  • Filter by Value:用标量值筛选选定的点云
  • Convert to RGB:将有效的标量域转化为RGB颜色域
  • Convert to random RGB:将有效的标量域转化为随机的RGB颜色域
  • Rename:重命名选中实体有效的标量域
  • Add constant SF:用一个常数添加一个标量域
  • Add point indexes as SF:用点索引的方式为所选点云创建一个新的标量域
  • Export coordinate(s) to SF(s):导出坐标到标量域
  • Set SF as coordinate(s):为选中的点云设置标量域的坐标
  • Arithmetic:可以对在同一个点云的两个标量域进行标准运算(+,-,*,/),或者对单个标量域进行函数运算
  • Color Scales Manager:色阶管理,可以管理和创建新的颜色域
  • Delete:对选中的实体删除有效的标量域
  • Delete all (!):对选中的实体删除全部的有效标量域

2.11 Waveform

3.TOOLS

3.1 Clean

  • SOR filter:SOR滤波器。它首先计算每个点到其邻点的平均距离(每个点考虑 k 个最近邻点,k 是第一个参数)。然后,它会剔除那些距离大于平均距离加上若干倍标准差的点(第二个参数)
  • Noise filter:噪声滤波器。它考虑的是到底部表面的距离,而非到相邻点的距离。该算法会在点云的每个点周围局部拟合一个平面,若某点离拟合平面太远,就会将其移除。从根本上来说,这个过滤器可以看作是一个低通滤波器。为了估算底部(平面)表面,用户可以定义一个半径或(固定的)相邻点数量。用户还可以在相对误差(与S.O.R.过滤器相同)和绝对误差之间进行选择。最终,孤立点也能在同一运行过程中被移除。

3.2 Projection

3.3 Registration

  • Match bounding-box centers:将对所有选中的实体进行平移,使它们的边界框中心位于同一位置。第一个选中的实体将用作参考。其他实体将被平移,使其边界框中心与第一个实体的中心处于同一位置。对于每个选定的实体(第一个除外),与其应用的平移相对应的 4x4 变换矩阵将在控制台中输出。

  • Match scales:使所有选定实体的比例相匹配。可以自主选择哪个实体作为“参考”,同时可以选择缩放的计算方式:

    • 最大边界框尺寸
    • 边界框体积
    • 主维度(通过主成分分析得出)
    • ICP配准
  • Align (point pairs picking) :允许用户通过在两个实体中选取至少三对等效点来对齐这两个实体。这种方法对于相当精确地对齐点云非常有用。有时,这甚至是获得良好结果的唯一方法(特别是当两个点云在大范围内存在显著差异时,在这种情况下,ICP配准将无法正常工作),结果会显示由此产生的均方根(RMS)从 2.6.1 版本开始,新增球体检测;2.6.3版本新增为球体检测过程设置最大均方根值(以球体半径的百分比表示)
    配准前
    配准后

  • Fine registration (ICP) :对两个实体(点云和/或网格)进行精细配准。

    • 前提:1.两个实体已经大致对其(ICP通常用于精配准环节,建议在初步对齐后再使用ICP法,否则误差会比较大);2.两个实体应该表示同一个对象,或者至少具有相同的形状(至少在它们重叠的部分)。
    • ICP的主要参数:1.可以设置ICP的最大迭代次数,在达到最大迭代次数后停止该过程;2.在两次迭代之间的误差(均方根)差值低于给定阈值时立即停止。这个阈值越小↓,收敛所需的时间就越长↑,但结果应该会更精确(注意:由于 CC 使用 32 位浮点值进行运算,1e-8 的阈值已经接近计算精度极限,没有必要再设置更低的值)。3.最终重叠度:这是 2.6.1 版本新增的参数。它允许用户指定如果两个点云完成配准,数据点云 / 待配准点云中与模型点云 / 参考点云实际重叠的部分。这让用户能够对仅有部分重叠(低至 10% 甚至更低)的实体进行配准。
      在这里插入图片描述

3.4 Distances

  • Cloud/Cloud Dist. :顾名思义,计算两个点云之间的距离
  • Cloud/Mesh Dist :计算点云与网格之间的距离(自动选择网格模型用作参考)如果你选择了两个网格模型,CC会让你定义每个网格模型的角色:
    • 待比较网格:实际上,CC只会考虑其顶点,并计算每个顶点相对于参考网格的距离。生成的标量场将由该网格(实际上是其顶点)承载。
    • 参考网格:将被用作参考,也就是说,距离将相对于其多边形来计算。如果可能的话,该网格应具有最大的范围。
      (如果你想比较两个网格,且待比较网格的顶点过于稀疏,你应该考虑先使用 “在网格上采样点” 工具,在待比较网格上采样(大量)点,然后将生成的点云用作待比较实体)
  • Cloud/Primitive Dist: 计算点云与基本实体或多段线之间数学上准确的距离
  • Closest Point Set:计算一个点云相对于另一个点云的 “最近点集”。(可见于 Besl 等人的原始 ICP 文章)。

设 A 和 B 为两个点云,分别包含 NA 个和 NB 个点。 A 相对于 B 的最近点集(CPSetB (A))是指 B 点云中与 A
点云中每个点距离最近的点所组成的集合。 该集合包含 NA 个点,且所有点均来自 B 点云。此外,B
点云中的点在输出集合中可能会多次重复出现,因为它们可能是 A 点云中不同点的 “最近点”。

3.5 Volume

此工具可用于计算 2.5D 点云与任意平面(恒定高度)之间的体积,或两个 2.5D 点云之间的体积。它依赖于点云的光栅化 / 网格化过程,因此与 “光栅化” 工具有些相似。

3.6 Statistics

Local Statistical Test
Compute stat. params (active SF)

3.7 Segmentation

Label Connected Comp.
Cross Section
Extract Sections / Unfold

3.8 Fit

Plane
Sphere
2D Polygon (facet)
2.5D Quadric

3.9 Batch export

Export cloud info
Export plane info

3.10 Other

Compute geometric features (v2.10+)
Density (v2.9)
Curvature (v2.9)
Roughness (v2.9)
Remove duplicate points

4. Display

4.1 Full screen

4.2 Full screen (3D view)

4.3 Refresh

4.4 Toggle Centered Perspective

4.5Toggle Viewer Based Perspective

4.6 Show cursor coordinates

4.7 Lock rotation about vert. axis

4.8 Enter bubble-view mode

4.9 Camera link

4.10 Render to File

4.11 Display options

4.12 Camera settings

4.13 Save viewport as object

4.14 Adjust zoom

4.15 Test Frame Rate

4.16 Lights

Toggle Sun Light
Toggle Custom Light

4.17 Shaders & Filters

Remove filter
dynamically loaded shaders & filters: qEDL, qSSAO, etc.

4.18 Active scalar field

Toggle color scale
Show previous SF
Show next SF
Other

4.19 Console

4.20 Toolbars

参考文章

https://www.cloudcompare.org/doc/wiki/index.php/Methods#Menus
https://blog.csdn.net/qq_36686437/article/details/120100839

http://www.xdnf.cn/news/19184.html

相关文章:

  • Java对接Redis全攻略:Jedis/SpringData/Redisson三剑客对决
  • 机器人控制器开发(底层模块)——rk3588s 的 CAN 配置
  • CSS学习与心得分享
  • 码农特供版《消费者权益保护法》逆向工程指北——附源码级注释与异常处理方案
  • 轻量化模型-知识蒸馏1
  • Carrier Aggregation Enabled MIMO-OFDM Integrated Sensing and Communication
  • Spring Cache实现简化缓存功能开发
  • 内网穿透系列十二:一款基于 HTTP 传输和 SSH 加密保护的内网穿透工具 Chisel ,具备抗干扰、稳定、安全特性
  • 聊一聊 .NET 的 AssemblyLoadContext 可插拔程序集
  • HarmonyOS AppStorage:跨组件状态管理的高效解决方案
  • SW - 做装配体时,使用零件分组好处多
  • 系统架构设计师选择题精讲与解题技巧
  • STM32的内存分配与堆栈
  • compute:古老的计算之道
  • (二)设计模式(Command)
  • 为什么企业需要项目管理
  • Python Requests 爬虫案例
  • 面试问题详解十二:Qt 多线程同步:QMutex讲解
  • SystemVerilog学习【七】包(Package)详解
  • FFmpeg音视频处理解决方案
  • 【GaussDB】在逻辑复制中剔除指定用户的事务
  • 【C++】C++ const成员函数与取地址操作符重载
  • 【Leetcode hot 100】21.合并两个有序链表
  • Flutter MVVM+provider的基本示例
  • ceph配置集群
  • VGG改进(6):基于PyTorch的VGG16-SE网络实战
  • “我店模式“当下观察:三方逻辑未变,三大升级重构竞争力
  • 详解常见的多模态大模型指令集构建
  • vue表格底部添加合计栏,且能跟主表同时滑动
  • 「鸿蒙系统的编程基础」——探索鸿蒙开发