精华内容
下载资源
问答
  • Open3D彩色点云配准测试数据ColoredICPOpen3D彩色点云配准测试数据ColoredICPOpen3D彩色点云配准测试数据ColoredICPOpen3D彩色点云配准测试数据ColoredICPOpen3D彩色点云配准测试数据ColoredICPOpen3D彩色点云配准...
  • 点云配准-pfh粗配.cpp

    2020-12-25 17:50:39
    点云配准算法
  • icp三维点云配准文件

    2020-03-30 16:29:11
    这是在我的描述icp配准的文章中所用到的三维点云文件。其中包含十个三维点云.ply文件,都是使用 intel realsense 深度摄像头拍摄到的点云图片。这十个点云来自于一段连续的录像,这十个点云文件可以用来初步地练习三...
  • 教程:Python Open3d 完成 ICP 点云配准_成畅的博客-CSDN博客 1.第四句读取点云数据时报错: ‘module‘ object has no attribute ‘read_point_cloud‘ 解决办法:把语句换成 o3d.io.read_point_cloud() 2...

    教程:Python Open3d 完成 ICP 点云配准_成畅的博客-CSDN博客

    1.第四句读取点云数据时报错:

    ‘module‘ object has no attribute ‘read_point_cloud‘

    解决办法:把语句换成

    o3d.io.read_point_cloud()

    2.渲染时报错:

    TypeError: update_geometry(): incompatible function arguments. The following argument types are 

    解决办法:重装库或者升级open3d到0.9.0版本,下面这个方法对我的有效。

    pip install open3d-python

    参考:open3d python版本安装及‘module‘ object has no attribute ‘read_point_cloud‘问题_hongge_smile的博客-CSDN博客

    3.为两个点云分别进行outlier removal,运行速度很慢,我给注释掉了。

    4.threshold = 0.05 # 移动范围的阀值,阈值调小点,配准效果会更好一点。

    这个方法非常依赖初值,我用了一个其他LCD的代码运行了得到了一个变换矩阵作为初始值,效果不错。

    展开全文
  • 教程:Python Open3d 完成 ICP 点云配准

    万次阅读 多人点赞 2020-03-30 16:29:30
    Python Open3d 完成 ICP 点云配准 关于Open3d Open3D 是一个在Python和C++平台上的三维数据处理与可视化库。它由 Qian-Yi Zhou,Jaesik Park, 以及 Vladlen Koltun 共同完成。其中 Zhou 博士在中国清华大学取得...

    Python Open3d 完成 ICP 点云配准


    关于Open3d

    Open3D 是一个在Python和C++平台上的三维数据处理与可视化库。它由 Qian-Yi Zhou,Jaesik Park, 以及 Vladlen Koltun 共同完成。其中 Zhou 博士在中国清华大学取得硕士学位,并分别在 USC 和Stanford 取得了博士以及博士后学位,目前在在旧金山的 Forma 公司担任首席研发官。Open3D目前支持 Windows, OSX, 和 Linux 平台。

    三维点云配准配准

    完成配准的演示:
    registration demo

    读取数据

    这里是本次配准用到的数据,可以下载之后跟着我使用:点云数据
    为了完成点云配准,我们需要做的第一步当然是读入我们需要进行配准的两个点云,我们新建一个python文件,将它命名为 display_pcd.py, 并输入以下代码:

    import open3d as o3d
    
    #读取电脑中的 ply 点云文件
    source = o3d.read_point_cloud("plys/6.ply")  #source 为需要配准的点云
    target = o3d.read_point_cloud("plys/0.ply")  #target 为目标点云
    
    #为两个点云上上不同的颜色
    source.paint_uniform_color([1, 0.706, 0])    #source 为黄色
    target.paint_uniform_color([0, 0.651, 0.929])#target 为蓝色
    
    #创建一个 o3d.visualizer class
    vis = o3d.visualization.Visualizer()
    vis.create_window()
    
    #将两个点云放入visualizer
    vis.add_geometry(source)
    vis.add_geometry(target)
    
    #让visualizer渲染点云
    vis.update_geometry()
    vis.poll_events()
    vis.update_renderer()
    
    vis.run()
    

    在以上的代码中,o3d.visualization.visualizer 是一个非常常用的简单的查看点云的类,它接受的输入参数是一个list,这个list里面需要包括你想查看的点云。

    运行以上代码,我们得到配准前的两个点云:
    before_registration_large
    每次visualizer 进行渲染都会根据点云的大小和位置自动初始化一个视角,上面一张图是它自己初始化的,我们通过滚动鼠标放大之后即可以看到下面的图:
    before_registration
    所以这里需要大家自己用鼠标将视角调到一个自己觉得舒适的地方,然后在屏幕中按下 crtl + c, 这样open3d就会保存下你刚刚的视角。当你重新进入visualizer,现实点云的时候,只要按下 ctrl + v 就可以回到之前你保存的视角。

    数据处理

    在进行正式配准之前我们还需要对点云做以下处理:特例去除 (outlier removal)。 目前大部分深度摄像头所拍摄的点云图都带有噪音,以及不存在的点,大多因为生产误差以及摄像头本身就有的噪声,在配准的时候我们不希望包括这些因为误差被记录的点,所以为了提高配准的效率以及准确率,我们要先将这些特例点去除。

    在这里插入图片描述

    我们打开一个新的python文件,将它命名为 outlier_removal.py,并输入以下代码:

    import open3d as o3d
    
    #读取电脑中的 ply 点云文件
    source = o3d.read_point_cloud("plys/6.ply")  #source 为需要配准的点云
    target = o3d.read_point_cloud("plys/0.ply")  #target 为目标点云
    
    #为两个点云上上不同的颜色
    source.paint_uniform_color([1, 0.706, 0])    #source 为黄色
    target.paint_uniform_color([0, 0.651, 0.929])#target 为蓝色
    
    #为两个点云分别进行outlier removal
    processed_source, outlier_index = o3d.geometry.radius_outlier_removal(source,
                                                  nb_points=16,
                                                  radius=0.5)
    
    processed_target, outlier_index = o3d.geometry.radius_outlier_removal(target,
                                                  nb_points=16,
                                                  radius=0.5)
    
    #o3d.geometry.radius_outlier_removal 这个函数是使用球体判断一个特例的函数,它需要
    #两个参数:nb_points 和 radius。 它会给点云中的每个点画一个半径为 radius 的球体,如
    #果在这个球体中其他的点的数量小于 nb_points, 这个算法会将这个点判断为特例,并删除。
    
    
    #显示两个点云
    #o3d.visuzlization_draw_geometries 是一个更加简单的显示点云的函数,它不需要创建
    #一个visualizer类,直接调用这个函数,在参数里放一个包含你想显示的点云的list就行了。
    o3d.visualization.draw_geometries([processed_source,processed_target])
    
    

    运行以上代码,我们获得以下点云,是不是整洁很多呢?
    before registration processed

    开始配准

    ICP (iterative closest point), 是对点云配准目前最常用的方法。其原理就是不断的对一个点云进行转换,并计算其中每个点与另外一个点云集的距离,将它转换成一个 fitness score。然后不断地变换知道将这个总距离降到最低。一般来说icp都是经过全局配准之后运用的,也就是说两个点云要先被粗略地配准,然后icp会完成配准的微调。

    现在我们已经知道如何显示和处理我们的点云了,下一步就是集成我们所学的,并对它们进行配准。我们新创建一个python文件,管他叫做 icp_registration.py,然后输入以下代码。

    import open3d as o3d
    import numpy as np
    
    #读取电脑中的 ply 点云文件
    source = o3d.read_point_cloud("plys/6.ply")  #source 为需要配准的点云
    target = o3d.read_point_cloud("plys/0.ply")  #target 为目标点云
    
    #为两个点云上上不同的颜色
    source.paint_uniform_color([1, 0.706, 0])    #source 为黄色
    target.paint_uniform_color([0, 0.651, 0.929])#target 为蓝色
    
    #为两个点云分别进行outlier removal
    processed_source, outlier_index = o3d.geometry.radius_outlier_removal(source,
                                                  nb_points=16,
                                                  radius=0.5)
    
    processed_target, outlier_index = o3d.geometry.radius_outlier_removal(target,
                                                  nb_points=16,
                                                  radius=0.5)
    threshold = 1.0  #移动范围的阀值
    trans_init = np.asarray([[1,0,0,0],   # 4x4 identity matrix,这是一个转换矩阵,
                             [0,1,0,0],   # 象征着没有任何位移,没有任何旋转,我们输入
                             [0,0,1,0],   # 这个矩阵为初始变换
                             [0,0,0,1]])
    
    #运行icp
    reg_p2p = o3d.registration.registration_icp(
            processed_source, processed_target, threshold, trans_init,
            o3d.registration.TransformationEstimationPointToPoint())
    
    #将我们的矩阵依照输出的变换矩阵进行变换
    print(reg_p2p)
    processed_source.transform(reg_p2p.transformation)
    
    #创建一个 o3d.visualizer class
    vis = o3d.visualization.Visualizer()
    vis.create_window()
    
    #将两个点云放入visualizer
    vis.add_geometry(processed_source)
    vis.add_geometry(processed_target)
    
    #让visualizer渲染点云
    vis.update_geometry()
    vis.poll_events()
    vis.update_renderer()
    
    vis.run()
    
    

    运行以上代码,我们得到
    after registration
    以及

    console: registration::RegistrationResult with fitness = 1.000000, inlier_rmse = 0.093900, and correspondence_set size of 12849
    

    在返回的结果中,
    fitness 算法对这次配准的打分,
    inlier_rmse 表示的是 root of covariance, 也就是所有匹配点之间的距离的总和除以所有点的数量的平方根,可以用以下数学公式表达:
    r m s e = ∑ i = 1 n a i − b i n . rmse = \sqrt{\frac{\sum_{i=1}^{n} a_i - b_i}{n}}. rmse=ni=1naibi .
    其中,a为目标矩阵,b为被配准矩阵,n为b的点数量。
    correspondence_size 代表配准后 点 云 a 点云_a a 点 云 b 点云_b b 中吻合的点的数量。
    通过视觉上看我们配准的结果,以及参数上看配准结果,这次的配准还算挺成功的。


    关于我

    好了,我们这次点云配准就完成了,希望朋友们学到了点什么,如果大家对这篇文章有问题或者有和我想说的话欢迎在下方评论,私信我,或者email dcheng728@gmail.com。 谢谢阅读我的文章!

    展开全文
  • 3D点云配准(二多幅点云配准)

    千次阅读 2019-07-23 18:15:17
    原文首发于公众号「3D视觉工坊」:3D点云配准(二多幅点云配准) 在上一篇文章 点云配准(一 两两配准)中我们介绍了两两点云之间的配准原理。本篇文章,我们主要介绍一下PCL中对于多幅点云连续配准的实现过程,...

    原文首发于公众号「3D视觉工坊」:3D点云配准(二多幅点云配准)

    在上一篇文章 点云配准(一 两两配准)中我们介绍了两两点云之间的配准原理。本篇文章,我们主要介绍一下PCL中对于多幅点云连续配准的实现过程,重点请关注代码行的注释。

    对于多幅点云的配准,它的主要思想是对所有点云进行变换,使得都与第一个点云在统一坐标系中。在每个连贯的、有重叠的点云之间找到最佳的变换,并累积这些变换到全部的点云。能够进行ICP算法的点云需要进行粗略的预匹配,并且一个点云与另一个点云需要有重叠部分

    image

    此处我们以郭浩主编的《点云库PCL从入门到精通》提供的示例demo来介绍一下多幅点云进行配准的过程。

    /* ---[ */ int main (int argc, char** argv)
    {
        // 加载数据
      std::vector

    对于上述过程中的核心函数pairAlign(),我们重点介绍如下:

    /**匹配一对点云数据集并且返还结果 *参数 cloud_src 是源点云 *参数 cloud_src 是目标点云 *参数output输出的配准结果的源点云 *参数final_transform是在来源和目标之间的转换 */ void pairAlign (const PointCloud::Ptr cloud_src, const PointCloud::Ptr cloud_tgt, PointCloud::Ptr output, Eigen::Matrix4f &final_transform, bool downsample = false)
    {
        //下采样
        //为了一致性和高速的下采样
        //注意:为了大数据集需要允许这项
      PointCloud::Ptr src (new PointCloud); //存储滤波后的源点云
      PointCloud::Ptr tgt (new PointCloud); //存储滤波后的目标点云
      pcl::VoxelGrid grid; //滤波处理对象
      if (downsample)
      {
        grid.setLeafSize (0.05, 0.05, 0.05); //设置滤波处理时采用的体素大小
        grid.setInputCloud (cloud_src);
        grid.filter (*src);
        grid.setInputCloud (cloud_tgt);
        grid.filter (*tgt);
      }
      else
      {
        src = cloud_src;
        tgt = cloud_tgt;
      }
        //计算曲面法线和曲率
      PointCloudWithNormals::Ptr points_with_normals_src (new PointCloudWithNormals);
      PointCloudWithNormals::Ptr points_with_normals_tgt (new PointCloudWithNormals);
      pcl::NormalEstimation

    image

    思考:

    对于小型或者中型数量的点云数据(点个数<100,000),我们选择ICP来进行迭代配准,可是利用对应点的特征计算和匹配较为耗时,如果对于两个大型点云(都超过100000)之间的刚体变换的确定,有什么好办法可以解决呢?

    主要参考:郭浩主编的<点云库PCL从入门到精通>

    上述内容,如有侵犯版权,请联系作者,会自行删文。

    星球成员,可免费提问,并邀进讨论群

    image

    展开全文
  • Open3d之彩色点云配准

    2021-02-10 11:14:46
    本教程演示了一种同时使用几何和颜色进行配准的ICP变体。它实现了这篇文章的算法[Park2017],实现了颜色信息锁定与切平面的...为了掩饰不同颜色点云之间的对齐,draw_registration_result_original_color使用原本的颜色..

    本教程演示了一种同时使用几何形状和颜色进行配准的ICP变体。它实现了这篇文章的算法 [Park2017] ,实现了颜色信息将沿切线平面锁定对齐。这个算法与之前的ICP配准速度相当,但是实现了更高的精度和鲁棒性。本教程使用的符号来自ICP配准

    辅助可视化函数

    为了演示彩色点云间配准的对齐,draw_registration_result_original_color使用原本的颜色可视化源点云。

    # -*- coding: UTF-8 -*-
    import copy
    import numpy as np
    import open3d as o3d
    
    
    def draw_registration_result_original_color(source, target, transformation):
        source_temp = copy.deepcopy(source)
        source_temp.transform(transformation)
        o3d.visualization.draw_geometries([source_temp, target],
                                          zoom=0.5,
                                          front=[-0.2458, -0.8088, 0.5342],
                                          lookat=[1.7745, 2.2305, 0.9787],
                                          up=[0.3109, -0.5878, -0.7468])

    输入

    下面的代码从两个文件中读取源点云和目标点云。使用单位矩阵作为配准的初始化。

    print("1. 加载两点云并可可视化它们间的位姿关系")
    source = o3d.io.read_point_cloud("../../test_data/ColoredICP/frag_115.ply")
    target = o3d.io.read_point_cloud("../../test_data/ColoredICP/frag_116.ply")
    
    # 可视化初始的配准
    current_transformation = np.identity(4)
    draw_registration_result_original_color(source, target, current_transformation)
    

    点到面的ICP

    我们首先运行 Point-to-plane ICP 作为一个基准算法.下面的可视化结果展示了未对齐的绿色三角形纹理.这是因为几何约束不能够防止两个平面的滑动.

    # 点到面的ICP
    current_transformation = np.identity(4)
    print("2. 在原始点云上应用点到平面ICP配准来精准对齐,距离阈值0.02。")
    
    result_icp = o3d.pipelines.registration.registration_icp(source, target, 0.02, current_transformation,
                                                             o3d.pipelines.registration.TransformationEstimationPointToPlane())
    print(result_icp)
    draw_registration_result_original_color(source, target, result_icp.transformation)
    

    彩色点云配准

    彩色点云配准的核心函数是 registration_colored_icp .在[Park2017]这篇论文中,它使用的是具有联合优化目标的ICP迭代(细节请看 Point-to-point ICP):

    E(T)=(1-\delta )E_{C}(T)+\delta E_{G}(T)
    其中的T是被估计旋转矩阵.E_{C}E_{G}分别是光度学和几何学术语. \delta ∈ [ 0 , 1 ] 是通过经验决定的权重变量.
    这里的几何项 E_{G}和 Point-to-plane ICP 的目标是相等的.

    其中 K 是当前迭代的对应集,n_{p}是对应点 p 的法线.
    颜色项E_{C}​ 测量的是 q 点的颜色(用 C_{q}表示)与其在点p的切平面的投影上的颜色之间的差.

    其中的C_{p}是在p的切平面上连续定义的预计算函数. 函数f(.)将3D点投影到切平面.更多细节请参看 [Park2017].
    为了进一步提高效率, [Park2017]提供了多尺度的配准方案,这已在以下脚本中实现:

    # 彩色点云配准
    # 在以下论文中实现
    # J. Park, Q.-Y. Zhou, V. Koltun,
    # Colored Point Cloud Registration Revisited, ICCV 2017
    voxel_radius = [0.04, 0.02, 0.01]
    max_iter = [50, 30, 14]
    current_transformation = np.identity(4)
    print("3. 彩色点云配准")
    for scale in range(3):
        iter = max_iter[scale]
        radius = voxel_radius[scale]
        print([iter, radius, scale])
    
        print("3-1. 下采样的点云的体素大小: %.2f" % radius)
        source_down = source.voxel_down_sample(radius)
        target_down = target.voxel_down_sample(radius)
    
        print("3-2. 法向量估计.")
        source_down.estimate_normals(o3d.geometry.KDTreeSearchParamHybrid(radius=radius * 2, max_nn=30))
        target_down.estimate_normals(o3d.geometry.KDTreeSearchParamHybrid(radius=radius * 2, max_nn=30))
    
        print("3-3. 应用彩色点云配准")
        result_icp = o3d.pipelines.registration.registration_colored_icp(
            source_down, target_down, radius, current_transformation,
            o3d.pipelines.registration.TransformationEstimationForColoredICP(),
            o3d.pipelines.registration.ICPConvergenceCriteria(relative_fitness=1e-6,
                                                              relative_rmse=1e-6,
                                                              max_iteration=iter))
        current_transformation = result_icp.transformation
        print(result_icp)
    # 可视化
    draw_registration_result_original_color(source, target,
                                            result_icp.transformation)

     

     使用 voxel_down_sample 创造了三层多分辨率的点云.使用顶点法线估计来计算的法线.核心的配准函数 registration_colored_icp 在每一层从粗糙到精细都有调用.lambda_geometricregistration_colored_icp 中可选的参数,用于确定 \lambda E_{G}(T)+(1-\lambda) E_{C}​ 中的 δ ∈ [ 0 , 1 ]。
    输出的是两组紧密对齐的点云,注意看上面的绿色三角形. 

     

    展开全文
  • Probreg is a library that implements point cloud registration algorithms with probablistic model. The point set registration ...Open3D interface Rigid and non-rigid transformation Algorithms Maximum
  • Open3D 多幅点云配准

    2021-09-06 07:23:49
    多幅点云配准
  • Open3D是一个开源库,支持快速开发和处理3D数据。Open3D在c++和Python中公开了一组精心选择的数据结构和算法。后端是高度优化的,并且是为并行化而设置的。本系列学习计划有B...
  • Open3D是一个开源库,支持快速开发和处理3D数据。Open3D在c++和Python中公开了一组精心选择的数据结构和算法。后端是高度优化的,并且是为并行化而设置的。本系列学习计划有B...
  • 亲测代码程序可运行使用,...代码执行功能有:可视化函数、输入点云、point-to-plane ICP、彩色点云配准,详情请见代码。 ''' Author: dongcidaci Date: 2021-09-13 15:49:49 LastEditTime: 2021-09-13 16:03:58 L.
  • 3D点云配准历史

    2021-07-21 15:46:17
    先上一张基于自己理解绘制的点云配准的发展脉络图Figure 1, 从图中我们可以先直观的感受一下点云配准的发展: 前期以传统方法为主, 2018年及之后基于深度学习的配准方法居上。但是需要注意两点: (1) Figure 1中列出了...
  • Open3d点云全局配准

    千次阅读 2021-02-11 10:42:10
    ICP配准和彩色点云配准都被称为局部配准方法,因为它们依赖于粗对准作为初始化。本教程展示了另一类配准方法,称为全局配准。这一系列算法在初始化时不需要对齐。它们通常产生不太紧密的对齐结果,并用作局部方法的...
  • Open3d学习计划——高级篇 4(多视角配准配准) 多视角配准是在全局空间中对齐多个几何形状的过程。比较有代表性的是,输入是一组几何形状 {Pi}\lbrace P_i\rbrace{Pi​}(可以是点云或者RGBD图像)。输出是一组刚性...
  • Open3d学习计划——高级篇 2(彩色点云配准

    千次阅读 热门讨论 2020-08-30 17:25:23
    Open3d学习计划——高级篇 2(彩色点云配准) 本教程演示了一种同时使用几何和颜色进行配准的ICP变体。它实现了这篇文章的算法 [Park2017] 。它实现了颜色信息锁定与切平面的对齐(The color information locks the ...
  • 之前已经介绍过了基于BnB算法的点云配准应用。熟悉点云配准近年来发展趋势的同学应该知道,目前CVPR,ICCV这些会议,比较主流的方法还是基于深度学习来建立点云的对应关系,尤其以基于PointNet变种网络的方法居多。...
  • 多视角配准是在全局空间中对齐多个几何形状的过程。比较有代表性的是,输入是一组几何形状{ P i } \...Open3d通过姿态图估计提供了多视角配准的接口。具体的技术细节请参考[Choi2015]. 输入 教程代码的第一部分...
  • Open3d学习计划——高级篇 3(点云全局配准

    千次阅读 热门讨论 2020-09-14 17:23:15
    Open3d学习计划——高级篇 3(点云全局配准) ICP配准和彩色点云配准都被称为局部点云配准方法,因为他们都依赖一个粗糙的对齐作为初始化。本篇教程将会展现另一种被称为全局配准的配准方法.这种系列的算法不要求一...
  • open3d c++ 点云ICP配准

    2021-03-26 14:01:22
    使用C++运行open3d,进行ICP配准测试 #include <opencv2/opencv.hpp> #include <iostream> #include <Eigen/Dense> #include <iostream> #include <memory> #include "Open3D/...
  • matlab中点云变换矩阵的表示形式
  • 三维计算机视觉(八)--点云配准

    万次阅读 2018-01-09 16:48:07
    点云配准有手动配准依赖仪器的配准,和自动配准点云的自动配准技术是通过一定的算法或者统计学规律利用计算机计算两块点云之间错位,从而达到两块点云自动配准的效果,其实质就是把不同的坐标系中测得到的数据...
  • 亲测代码程序可运行使用,open3d版本0.13.0。 open3d数据资源下载:GitHub - Cobotic/Open3D: Open3D: A Modern Library for 3D Data Processing 代码执行功能有:点云输入、可视化、姿态图、得到合并的点云,详情...
  • 关于通过Python-open3d处理点云的问题,mark一下:csdn上除了官方文档的教程实现外,暂未查到相关的开发应用,资料还比较少。 点云处理杂乱无序零件点云; 1.通过AABB方式实现点云背景过滤,将目标点云通过o3d....
  • 点云配准 Registration

    2020-12-21 19:28:53
    PCL里有很多ICP可以用is an ICP variant that implements the generalized iterative closest point algorithm as described by Alex Segal et al.provides a base implementation of the Iterative Closest Point ...
  • Open3D是一个开源库,支持快速开发和处理3D数据。Open3D在c++和Python中公开了一组精心选择的数据结构和算法。后端是高度优化的,并且是为并行化而设置的。本系列学习计划有B...
  • 其中,PCL、Open3D和CGAL是开源软件库,Open3D是intel实感推出不久的,跟PCL比会有一些新奇的东西,个人主要使用PCL;CloudCompare和Meshlab是带软件操作界面的开发库,建议新手开始玩用CloudCompare和Meshlab比较...
  • 读研期间做的文献复原,关键点提取、建立特征描述符、匹配特征点、RANSAC去除误匹配、坐标配准全部流程都走了一遍,用bunny数据做的测试,每一步都有画图,结果精度还不错。有没做好的地方欢迎指正。
  • open3d完成点云ICP配准

    2021-12-07 23:22:29
    完成点云配准之后的效果图演示 这里直接放上完整的代码 import open3d as o3d import numpy as np #读取电脑中的 ply 点云文件 source = o3d.io.read_point_cloud("plys/2.ply") #source 为需要配准的点云 target =...
  • CVPR2020:训练多视图三维点云配准

    千次阅读 2020-06-29 08:31:01
    CVPR2020:训练多视图三维点云配准 Learning Multiview 3D Point Cloud Registration 源代码和预训练模型:https://github.com/zgojcic/3D_multiview_reg 论文地址: ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 563
精华内容 225
关键字:

open3d点云配准