小工具知识网

当前位置: 首页 > 行业知识 > 如何学习、上手点云算法(一):点云基础

行业知识

如何学习、上手点云算法(一):点云基础

2026-10-30 19:51:48 来源:互联网转载

写在前面

  • ���文内容

    点云算法的学习基础,入门方法,相关领域,资源,开源库,算法等的介绍;

    以Open3D和PCL等为基础工具的点云处理代码讲解、实现;

    文中涉及的参考以链接形式给出,涉及文件资源如点云,已上传至网盘本博客资源链接,路径为:

    share_noel/csdn/how_to_learn_point_cloud/how_to_learn_point_cloud_1;

    本文尽力用最简单易懂的语言和方式来介绍相关内容,欢迎补充指正!

  • 平台/环境

    Windows10, Ubuntu1804, CMake, Open3D, PCL

  • 转载请注明出处:

    https://blog.csdn.net/qq_41102371/article/details/136288203

    目录

    • 写在前面
    • 点云基础
      • 什么是点云
      • 点云获取方式、作用、相关领域
      • 点云算法有哪些有何用?
      • 资源
      • 常用开源库
      • 参考
      • 完

        点云基础

        什么是点云

        最好的认知方式莫过于实践,现在你可以下载一个开源且跨平台的点云可视化、处理软件CloudCompare(如果你以后的学习或工作经常和点云打交道,请一定记住这个软件,它将成为你的得力助手!),以及上述网盘中的点云或者你自己的点云,用CloudCompare打开下载的点云看看,建立一个感性认知,一切的故事,将从这里开始。

        下面是比较理性的认知:

        点云(PointCloud),是一种三维空间目标的表现形式,可用一群空间离散三维点 ( x , y , z ) (x, y, z) (x,y,z) 的集合来表达,如 { P } \{P\} {P} 表示一个有 N N N 个点的点云, p i , i ∈ { 0 , 1 , 2... n } p_i, i\in\{0,1,2...n\} pi​,i∈{0,1,2...n} 是其中任意一点;另外,一个三维点除了空间位置信息 ( x , y , z ) (x, y, z) (x,y,z) ,还可包含颜色信息、强度信息、法向量等,以Open3D和PCL中点云的数据结构为例:

        • Open3D

          Open3D以点云为一个数据结构,点(points),颜色(colors),法向量(normals)都以3维的Vector表示(Eigen::vector3d)

          points: { ( x i , y i , z i ) , i ∈ 0 , 1 , 2... n } \{(x_i, y_i, z_i), i\in{0,1,2...n}\} {(xi​,yi​,zi​),i∈0,1,2...n}

          colors: { ( r i , g i , b i ) , i ∈ 0 , 1 , 2... n } \{(r_i, g_i, b_i), i\in{0,1,2...n}\} {(ri​,gi​,bi​),i∈0,1,2...n}

          normals { ( n x i , n y i , n z i ) , i ∈ 0 , 1 , 2... n } \{(nx_i, ny_i, nz_i), i\in{0,1,2...n}\} {(nxi​,nyi​,nzi​),i∈0,1,2...n}

          具体可见

          open3d::geometry::PointCloud Class Reference

          https://github.com/isl-org/Open3D/blob/main/cpp/open3d/geometry/PointCloud.h#L463

        • PCL

          PCL以点为基础的数据结构,通过模板的方式以点的类型决定点云的类型,如PointXYZ, PointXYZI, PointXYZRGB分别表示三维点、带强度的三维点、带RGB的三维点,详见

          https://pointclouds.org/documentation/namespacepcl.html

          pcl::PointXYZRGB Struct Reference

          pcl::PointCloud Class Template Reference

          点云获取方式、作用、相关领域

          • 通过传感器获取

            当前可以获取点云的常用传感器为:

            • 激光雷达

              1、大型激光雷达扫描仪(如Leica, RIEGL等),常用于需要大范围、高精度但不要求实时性的场景,比如测绘、矿山测量、灾害现场重建。如莱卡HDS8800可达上千米的扫描范围,但价格在百万以上;

              以下是Leica HDS8800扫描得到室外建筑:

              2、小型固态、半固态、机械式激光雷达(Livox, 禾赛, Velodyne等),常用于实时性要求较高的工业机器人、自动驾驶等领域,价格一般在千元-万元级;

              以下是Livox Avia非重复式扫描得到的点云:

            • 深度相机

              如Intel Realsense, 奥比中光, 银牛等,常用于机器人、消费级产品,如体感游戏、服务机器人、扫地机、小场景三维扫描仪等;

              https://www.intelrealsense.com/lidar-camera-l515/

            • 结构光相机

              如ZIVID、Photoneo、图漾、跨维智能、Mech-Mind等,常用于精度要求极高的场景,如工业表面缺陷检测;

              示例点云见https://sketchfab.com/zivid/collections/manufacturing-point-clouds-18a888a297e34098ba4a7c478a049a70

              另可参考

              徕卡HDS8800

              leica HDS硬件产品系列

              RIEGL VZ-400i

              https://www.open3d.org/docs/release/tutorial/sensor/azure_kinect.html

              浅谈单目结构光原理

              深度相机—TOF、RGB双目、结构光原理及优势对比

              3D深度相机调研【史上最全,不服来战】

            • 通过影像三维重建获取

              运动恢复结构(Structure From Motion, SFM)可以从二维影像中恢复相机位姿和稀疏三维空间点云,再通过稠密重建得到带RGB的稠密点云,后续经过表面重建、纹理贴图可以生成带纹理的Mesh模型,其中比较基础和出名的开源方案(pipeline)是OpenMVG(SFM)+OpenMVS(稠密、表面、纹理),以及Colmap(完整pipeline);

              影像三维重建同时也是一个比较大的研究方向,通过该方式获得的点云具有稠密、带纹理等特点,但无法恢复尺度信息,需要人工或者借助GPS等信息加入算法来恢复;普通的开源方案(OpenMVG+OpenMVS, Colmap, OpenSfm, AliceVison)适用于小目标、室内、室外建筑场景三维重建,比较专业的采集+处理软件可用于城市级三维重建(摄影测量)

              有兴趣可以参考:

              Awesome 3D reconstruction list

              SFM综述

              openmvg2.0编译与使用

              openmvs编译与使用

              用cmake在win10配置colmap

              下图是SFM稀疏重建得到的点云,可参考openmvg2.0编译与使用来生成

            • 通过模型采样、人工合成获取

              点云通过表面重建的方式可以生成表面模型如Mesh,反之可以从表面模型上采样得到点云

            • 开源数据集

              Stanford Bunny,点云界的Lenna.jpg

              武大WHU-TLS

              Modelnet-40

              3DMatch数据集

              Kitti

              …

              点云算法有哪些有何用?

              点云算法按整个来说应当属于计算机视觉中的3D视觉领域,主要的算法和应用为:

              • 传统的点云算法

                采样、滤波去噪、法向估计、特征提取、拟合、配准、(语义)分割、场景重建、表面(Mesh)重建等;

              • 深度学习点云算法

                近些年也有了许多点云深度学习的方法,如深度学习点云法向估计、点云语义分割、点云目标检测、点云配准、点云表面重建、点云逆向工程等,点云深度学习也是比较热门的研究方向;

              • 应用

                其中,采样、滤波去噪、法向估计、特征提取算法是最基础的算法,一般用于点云的预处理;拟合、分割、配准等算法属于更高级的应用,直接或间接地为用户提供点云处理结果,在这些算法基础上,进一步处理获得目标或场景的完整模型、语义信息、表面模型等;

                这些点云算法通常作为基础算法服务于三维重建、SLAM、自动驾驶领域,比如点云三维重建用于测绘、地质调查、文物重建、数字资产、数字城市等,SLAM中地图点云用于机器人定位、导航、避障等,自动驾驶中点云用于3D目标检测、高精地图制作的基础数据等,尤其是像点云配准、分割、3D目标检测等算法,在这些领域起到了至关重要的作用,因此点云算法可以认为是3D视觉的重要基础之一。

                资源

                一些点云相关的资源

                点云配准系列文章

                Open3D点云处理

                https://github.com/topics/point-cloud

                https://github.com/timzhang642/3D-Machine-Learning

                https://github.com/topics/point-cloud

                https://github.com/zhulf0804/3D-PointCloud

                常用开源库

                常用的点云算法开源库有:

                Open3D, PCL, CGAL, CloudCompare等

                参考

                文中已列出

                完

                主要做激光/影像三维重建,配准、分割等常用点云算法,熟悉open3d、pcl等开源点云库,技术交流、咨询可私信

上一篇:方舟服务器推介怎么关掉?

下一篇:有代理服务器怎么ping?