首页 > 其他分享 >Open3D初探

Open3D初探

时间:2024-08-24 15:16:33浏览次数:10  
标签:法线 算法 Open3D pcl 初探 点云 该库

 

       pcl点云库作为点云算法的入门基础,点云从业者对此都应该比较熟悉了,pcl库的下载以及源码的编译再到具体教程,网上的例子铺天盖地,这也间接说明了该库的受欢迎程度很高,该库的优势在于开源,算法覆盖面也是很广,上手也较为轻松,没有特别复杂的编程语言,也易于移植。但是缺点也很明显,算法概而不精,譬如效率效果都是较大的问题,所以在日常使用中本人也仅仅是对该库的算法理论逻辑部分进行提取,然后再加工优化。当然另外一个缺点可能是很多库的共性,迭代更新慢,很多好的新方法或者工具未能及时进行集成,我们在做商业软件时,很多核心算法几乎也是开发人员一点点去实现,所以这个库似乎也很"鸡肋",虽然pcl库存在诸多问题,但又无可奈何,点云算法作为一个还在发展中的行业,可用的算法库也很少,譬如点云数据常用的主流算法库如pcl、vcg、cgal等,似乎也没有太多的选择。最近在关注一些新技的时候,open3d出现的频率逐渐高了起来,所以最近对该库也进行了极其简单的熟悉。

     该库初步给我的感觉就是知识面不如pcl广,网上的学习资源也不如pcl丰富,编译以及库的配置似乎也没有成熟的方案以及教程,当然一些大神也给了一些相对详尽的教程,OPen3D由于支持python模块(机器学习),估计这也是它难以编译成功的原因之一吧,本人对Open3D尝试进行了编译。

    源码的下载地址:

    https://github.com/isl-org/Open3D/releases/tag/v0.18.0

    由于源码里有Python的部分,如果只想编译c++部分的,剩下的都不选中吧,不然cmake各种报错,又是配置工具又是配置环境的也很麻烦(关键是我不会,open3d有个ml模块,也就是机器学习模块,该部分需要支持Python);

     

 

     构建好了,然后就可以使用vs打开,打开如下:

      

 

     一个库复杂与否我们先来看他的数据结构。

    

 

    继续跳到类里面看看。

     

     给人的感觉不像是一个简单的数据类型; 继续往下看,找到成员变量:

     

     点的信息似乎有点少,记录的是点坐标、法线、颜色信息、协方差矩阵,这种设计模式最大的问题是不支持属性的拓展,例如强度信息、回波信息、gps时间、ID号或者后期计算的其它信息等,当然自己也可以更改进行追加。

     然后在看成员函数:

     

    以上成员函数都是关于点云数据基础信息的一些操作倒是很正常。

    但是再往下看,法线其把点云处理的算法全部在该点类型里进行了实现,下面开始都是处理点云的一些方法了,这种设计似乎有点“另类”;

    其实现的具体的算法如下:

RemoveNonFinitePoints 去重复点
VoxelDownSample 格网采样
VoxelDownSampleAndTrace 大概意思在格网采样的基础上加上范围限制
UniformDownSample 此方法跟格网采样的区别在于该方法的点是重新内插出来的(这些方法pcl都有)
RandomDownSample 随机采样
FarthestPointDownSample 具体解释需要看源码
Crop 裁剪点云
RemoveRadiusOutliers 去噪(根据空间范围)
RemoveStatisticalOutliers 去噪(统计方法)
EstimateNormals 计算法线
OrientNormalsToAlignWithDirection 法向一致性处理
EstimatePerPointCovariances 计算每个点的协方差矩阵(为计算法线服务)
ComputeMeanAndCovariance 计算每个点在其局部邻域内的重心以及协方差矩阵(为计算法线服务)
ComputeConvexHull 计算凸包
ClusterDBSCAN 聚类
SegmentPlane 分割平面
DetectPlanarPatches 平面检测

   发现该数据类型并没有大量的使用模板,然后方法也全在数据类型的内部进行实现的,这种设计确实是做到了低耦合,好与不好这里不做评价,大家自行判断。此次只是了解到了Open3D的皮毛,后续有时间会进一步挖掘,期待下一次能有大的更新。

标签:法线,算法,Open3D,pcl,初探,点云,该库
From: https://www.cnblogs.com/z-web-2017/p/18377663

相关文章

  • Open3D mesh 裁剪
    目录一、概述1.1常用裁剪方法1.2应用场景二、代码实现2.1 轴对齐包围盒(AABB)裁剪2.2有向包围盒(OBB)裁剪2.3 平面裁剪Open3D点云算法汇总及实战案例汇总的目录地址:Open3D点云算法与点云深度学习案例汇总(长期更新)-CSDN博客一、概述        在三......
  • Open3D 计算点云的面状指数
    目录一、概述1.1原理1.2实现步骤步骤1:确定邻域点步骤2:计算协方差矩阵步骤3:特征值分解步骤4:计算面状指数步骤5:可视化与应用1.3应用领域二、代码实现2.1关键函数2.2完整代码三、实现效果3.1原始点云3.2面状指数可视化Open3D点云算法汇总及实战案例汇总的......
  • 敦煌智旅:Serverless 初探,运维提效 60%
    作者:百潼行业新趋势在后疫情时代,文旅行业开始复苏,在行业的发展趋势中,我们看到了一个充满机遇和挑战的未来。通过不断创新和适应市场需求,文旅行业继续不断发展壮大,为消费者提供更加丰富多样的旅游体验。与此同时,文旅行业也朝着科技融合,创新颠覆的趋势发展。科技带动产业向“新消......
  • Docker+Win11:显示Docker中的GUI,解决报错“[Open3D WARNING] GLFW Error: X11: Failed
        在本系列博文中,我将Pytorch部署在Win11为宿主的Docker中,并成功的调用GPU进行了训练。这为我提供了很多便利。    今天在进行3D相关的深度学习研究时我遇到了一些问题:[Open3DWARNING]GLFWError:X11:Failedtoopendisplay:0[Open3DWARNING]Faile......
  • 【JavaSec】类的动态加载初探
    0x02类的动态加载文章目录0x02类的动态加载什么是类加载?动态类加载方法:类加载:继承关系:调用关系:下面尝试使用URLClassLoader进行尝试http协议:jar协议:http读取方法:file读取方法:使用defineClass类加载方法Unsafe类加载什么是类加载?即虚拟机加载.class文件在......
  • 初探 Rust 语言与环境搭建
    1.Rust简介Rust的历史起源:Rust语言最初由Mozilla研究员GraydonHoare于2006年开始设计,并于2009年首次公开。开发:Rust是Mozilla实验室的一个项目,目的是创建一种能够保证内存安全同时又不牺牲性能的系统编程语言。发布:Rust1.0稳定版于2015年发布,标志着语言......
  • 【JavaSec】JDK动态代理初探
    JDK动态代理初探文章目录JDK动态代理初探静态代理动态代理静态代理用户接口:publicinterfaceIUser{voidshow();voidcreate();voidupdate();}用户实现类:/***实现类*/publicclassUserImplimplementsIUser{publicUserI......
  • C# WindowForm界面初探,窗体访问,绑定数据源,重载构造函数
    今日份主要内容C#WindowForm界面初探Winform项目模板,目录解析窗体对象控件对象界面设计基础1.控件?控件的本质是类,控件是构建用户界面(UserInterface)的基础,通过控件组合设计出符合需求的界面效果。相当于html的标签。基本要求:界面效果,布局交互(事件,委托)2.学习控件......
  • GPU编程初探
    GPU(GraphicProcessingUnit),图像处理处理器,俗称显卡,主要处理图像、显示等任务(数据运算)CPU:逻辑运算GPGPU(GeneralPurposecomputingonGraphicProcessingUnit),通用GPU,主要处理通用计算任务。GPU性能指标:核心数GPU显存容量GPU计算峰值显存带宽CPU与GPU架构差异CPU+GPU......
  • 初探MIPS PWN
    MIPSPWN调试环境配置&工具安装(Ubuntu22.04)安装qemuqemu是一个支持跨平台虚拟化的虚拟机,有usermode和systemmode两种配置方式。其中qemu在systemmode配置下模拟出整个计算机,可以在qemu之上运行一个操作系统。qemu的systemmode与常见的VMware和Virtualbox等虚拟机......