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

这篇具有很好参考价值的文章主要介绍了如何学习、上手点云算法(一):点云基础。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

写在前面

  • 本文内容
    点云算法的学习基础,入门方法,相关领域,资源,开源库,算法等的介绍;
    以Open3D和PCL等为基础工具的点云处理代码讲解、实现;
    文中涉及的参考以链接形式给出,涉及文件资源如点云,已上传至网盘本博客资源链接,路径为:
    share_noel/csdn/how_to_learn_point_cloud/how_to_learn_point_cloud_1;
    本文尽力用最简单易懂的语言和方式来介绍相关内容,欢迎补充指正!
    如何学习、上手点云算法系列:
    如何学习、上手点云算法(一):点云基础
    如何学习、上手点云算法(二):点云处理相关开源算法库、软件、工具
    如何学习、上手点云算法(三):用VsCode、Visual Studio来debug基于PCL、Open3D的代码
    更多点云基础、算法相关内容请关注专栏:
    点云处理基础
    点云配准(PointCloud Registration)
    Open3D点云处理
    PCL点云处理
    点云算法
  • 平台/环境
    Windows10, Ubuntu1804, CMake, Open3D, PCL
  • 转载请注明出处:
    https://blog.csdn.net/qq_41102371/article/details/136288203

点云基础

什么是点云

最好的认知方式莫过于实践,现在你可以下载一个开源且跨平台的点云可视化、处理软件CloudCompare(如果你以后的学习或工作经常和点云打交道,请一定记住这个软件,它将成为你的得力助手!),以及上述网盘中的点云或者你自己的点云,用CloudCompare打开下载的点云看看,建立一个感性认知,一切的故事,将从这里开始。
如何学习、上手点云算法(一):点云基础,3d视觉,点云处理基础,学习,算法
下面是比较理性的认知:
点云(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),i0,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),i0,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),i0,1,2...n}
    具体可见
    open3d::geometry::PointCloud Class Reference
    https://github.com/isl-org/Open3D/blob/main/cpp/open3d/geometry/PointCloud.h#L463
    如何学习、上手点云算法(一):点云基础,3d视觉,点云处理基础,学习,算法
  • PCL
    PCL以点为基础的数据结构,通过模板的方式以点的类型决定点云的类型,如PointXYZ, PointXYZI, PointXYZRGB分别表示三维点、带强度的三维点、带RGB的三维点,详见
    https://pointclouds.org/documentation/namespacepcl.html
    pcl::PointXYZRGB Struct Reference
    pcl::PointCloud< PointT > Class Template Reference

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

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

    • 激光雷达
      1、大型激光雷达扫描仪(如Leica, RIEGL等),常用于需要大范围、高精度但不要求实时性的场景,比如测绘、矿山测量、灾害现场重建。如莱卡HDS8800可达上千米的扫描范围,但价格在百万以上;
      如何学习、上手点云算法(一):点云基础,3d视觉,点云处理基础,学习,算法

      以下是Leica HDS8800扫描得到室外建筑:
      如何学习、上手点云算法(一):点云基础,3d视觉,点云处理基础,学习,算法
      2、小型固态、半固态、机械式激光雷达(Livox, 禾赛, Velodyne等),常用于实时性要求较高的工业机器人、自动驾驶等领域,价格一般在千元-万元级;
      以下是Livox Avia非重复式扫描得到的点云:
      如何学习、上手点云算法(一):点云基础,3d视觉,点云处理基础,学习,算法

    • 深度相机
      如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编译与使用来生成
    如何学习、上手点云算法(一):点云基础,3d视觉,点云处理基础,学习,算法

  • 通过模型采样、人工合成获取
    点云通过表面重建的方式可以生成表面模型如Mesh,反之可以从表面模型上采样得到点云
    如何学习、上手点云算法(一):点云基础,3d视觉,点云处理基础,学习,算法

  • 开源数据集
    Stanford Bunny,点云界的Lenna.jpg
    如何学习、上手点云算法(一):点云基础,3d视觉,点云处理基础,学习,算法
    武大WHU-TLS
    如何学习、上手点云算法(一):点云基础,3d视觉,点云处理基础,学习,算法
    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等开源点云库,技术交流、咨询可私信文章来源地址https://www.toymoban.com/news/detail-841866.html

到了这里,关于如何学习、上手点云算法(一):点云基础的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包