上一节中介绍了点云配准的基础知识。本节将采用python open3d来进行点云配准。

open3d安装和点云配准介绍,请参考:

Open3d读写ply点云文件_Coding的叶子的博客-CSDN博客1 Open3d 安装Open3d是由Intel发布的一个开源库,支持快速开发和处理3D数据。Open3D在c++和Python中公开了一组精心选择的数据结构和算法。后端是高度优化的,并且是为并行化而设置的。Open3d直接使用pip安装即可。解决下载慢的问题,请切换下载源。设置方式请参考:python pip_Coding的叶子的博客-CSDN博客。pip install open3dply点云格式介绍请参考:点云格式介绍(二)_Codin...https://blog.csdn.net/suiyingy/article/details/124296483     点云配准(一)— ICP方法_Coding的叶子的博客-CSDN博客点云配准——ICP方法介绍https://blog.csdn.net/suiyingy/article/details/124336448

如上一节中介绍,点云配准的ICP方法分为两大类,点到点和点到平面。open3d 中提供了这两种方法,分别用到o3d.pipelines.registration.TransformationEstimationPointToPoint和o3d.pipelines.registration.TransformationEstimationPointToPlane。本节仅介绍点到点的使用方式,点到面的后续再进行补充。

配准样例数据下载地址:python点云配准样例数据-深度学习文档类资源-CSDN下载。

下载下来的点云文件有bun000.ply和bun045.ply,open3d读写ply点云文件请参考:。

这里用bun000.ply的点云作为原始点云,对应代码中的points1,结果显示中绿色部分点云;bun045.ply作为目标点云,对应代码中的points2,结果显示中蓝色部分点云。代码中points3是points1配准到points2上的结果,对应结果显示张绿色部分的点云。

参考代码

# -*- coding: utf-8 -*-
"""
Created on Sat Apr 16 08:51:41 2022@author: https://blog.csdn.net/suiyingy
"""
from mayavi import mlab
import numpy as np
import open3d as o3ddef ply_read(file_path):lines = []with open(file_path, 'r') as f:lines = f.readlines()return lines#将每一行数据分割后转为数字
def ls2n(line):line = line.strip().split(' ')return list(map(float, line))def viz_mayavi_3(points1, points2,   points3):x = points1[:, 0]# x position   of pointy = points1[:, 1]# y position   of pointz = points1[:, 2]# z position   of pointfig = mlab.figure(bgcolor=(0, 0, 0), size=(640, 360))mlab.points3d(x, y, z, z, mode="point", color=(0, 1,  0), figure=fig)x = points2[:, 0]# x position   of pointy = points2[:, 1]# y position   of pointz = points2[:, 2]# z position   of pointmlab.points3d(x, y, z, z, mode="point", color=(1, 0,  0), figure=fig)x = points1[:, 0]# x position   of pointy = points1[:, 1]# y position   of pointz = points1[:, 2]# z position   of pointmlab.points3d(x, y, z, z, mode="point", color=(0, 0,  1), figure=fig)mlab.show()if __name__ == '__main__':file_path = 'bun000.ply'points = ply_read(file_path)points = points[24:(24+40256)]points1 = np.array(list(map(lambda x: ls2n(x), points)))file_path = 'bun045.ply'points = ply_read(file_path)points = points[24:(24+40097)]points2 = np.array(list(map(lambda x: ls2n(x), points)))threshold = 0.2 #距离阈值trans_init = np.array([[1.0, 0.0, 0.0, 0.0],[0.0, 1.0, 0.0,   0.0],[0.0, 0.0, 1.0, 0],[0.0, 0.0, 0.0,   1.0]])#计算两个重要指标,fitness计算重叠区域(内点对应关系/目标点数)。越高越好。#inlier_rmse计算所有内在对应关系的均方根误差RMSE。越低越好。source = o3d.geometry.PointCloud()source.points = o3d.utility.Vector3dVector(points1)target = o3d.geometry.PointCloud()target.points = o3d.utility.Vector3dVector(points2)print("Initial alignment")print(source)icp = o3d.pipelines.registration.registration_icp(source, target, threshold, trans_init,o3d.pipelines.registration.TransformationEstimationPointToPoint())print(icp)source.transform(icp.transformation)print(icp.transformation)points3 = np.array(source.points)viz_mayavi_3(points1, points2, points3)

配准效果图

python三维点云研究计划_Coding的叶子的博客-CSDN博客_3d点云 python将按照以下目录持续进行更新……点云格式介绍、点云可视化、点云投影、生成鸟瞰图、生成前视图、点云配准、点云分割、三维目标检测、点云重建、深度学习点云算法……https://blog.csdn.net/suiyingy/article/details/124017716点云配准(一)— ICP方法_Coding的叶子的博客-CSDN博客点云配准——ICP方法介绍https://blog.csdn.net/suiyingy/article/details/124336448 更多三维、二维感知算法和金融量化分析算法请关注“乐乐感知学堂”微信公众号,并将持续进行更新。

点云配准(二)— python open3d ICP方法相关推荐

  1. 点云配准 3- icp-交互式ICP点云配准

    一.声明 本人作为初学者,才开始接触点云配准这一块,如有错误地方,望大家指出,我将及时修改,共同进步.其次这一部分主要是点云数据配准的第一个程序,也是官方代码比较直观的一次icp配准实验. 二.数据来 ...

  2. 点云配准的传统算法ICP与NDT概述

    公众号致力于分享点云处理,SLAM,三维视觉,高精地图相关的文章与技术,欢迎各位加入我们,一起交流一起进步,有兴趣的可联系微信:920177957.本文来自点云PCL博主的分享,未经作者允许请勿转载, ...

  3. Open3d系列 | 1. Open3d实现点云数据读写、点云配准、点云法向量计算

    如有错误,恳请指出. 从这一篇博客开始,开始利用Open3d来处理点云数据.之后将围绕点云数据的多种处理方式来记录笔记.本篇博客的内容包括点云的文件格式介绍,点云数据的读取,以及点云的配准与点云的法向 ...

  4. 教程:Python Open3d 完成 ICP 点云配准

    Python Open3d 完成 ICP 点云配准 关于Open3d Open3D 是一个在Python和C++平台上的三维数据处理与可视化库.它由 Qian-Yi Zhou,Jaesik Park, ...

  5. GICP:基于体素泛化ICP方式的准确快速点云配准方法

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 标题: Voxelized GICP for Fast and Accurate 3D Point C ...

  6. CVPR2020:训练多视图三维点云配准

    CVPR2020:训练多视图三维点云配准 Learning Multiview 3D Point Cloud Registration 源代码和预训练模型:https://github.com/zgo ...

  7. 三维重建10:点云配准和点云匹配

    点云的配准一般分为等价集合和律属集合两种配准,其中等价集合配准叫做匹配过程,律属集合配准被称为Alignment. 点云的匹配一般使用ICP方法(  ICP:Iterative Closest Poi ...

  8. 点云配准——经典配准算法及配准效果对比

    目录 点云配准基础知识 什么是点云配准? 点云配准的步骤 粗配准 精配准 点云配准的经典算法 ICP算法 NDT算法 3DSC算法 PFH FPFH 完全配准效果对比 点云配准基础知识 什么是点云配准 ...

  9. python点云快速配准_分享一个V-SLAM中点云配准算法改进的方法

    近年来,随着自主导航的广泛应用,视觉同时定位与地图构建(Visual simultaneous localization and mapping, V-SLAM)通过自身携带的视觉传感器对周围环境进行 ...

最新文章

  1. git clone 代码下载速度慢的解决方法
  2. 16进制魔术数字 0xdeadbeef Leet英文转写形式 简介
  3. jQueryui autocomplete使用示例
  4. FFmpeg 中AVPacket的使用
  5. 2020-12-1(带你理解32位二进制搜索范围是4GB)
  6. cordova 蓝牙_Ionic通过Cordova插件使用设备能力
  7. boost::geometry::geometry_id用法的测试程序
  8. c语言调用函数计算分段函数值,输入x,计算并输出下列分段函数f(x)的值(保留2位小数) c语言...
  9. 怎样写 OpenStack Neutron 的 Extension (四)
  10. Tree Cutting HDU - 5909
  11. Intellij IDEA 那些隐藏好用的小技巧
  12. 设计模式的C语言应用-责任链模式-第三章
  13. 字符编码方式及大端小端
  14. 最新:2021年度泰晤士世界大学学科排名公布
  15. Python爬取天气信息
  16. Windows设置redis开启自动启动
  17. kali 安装chrome浏览器
  18. Android动画学习之帧动画二
  19. 使用拦截器或者AOP实现权限管理(OA系统中实现权限控制)
  20. 电容的电抗|X|,总阻抗|Z|和等效电阻R

热门文章

  1. pytorch - swa_model模型保存的问题
  2. 夜间(低光照)目标检测数据集整理:人脸检测,行人检测
  3. 黑马程序员 java中关于异常的学习日志
  4. mediaplayer 状态
  5. 校园IP网络广播系统方案
  6. 安卓端gis_基于Android的移动GIS系统的应用与实现
  7. android概述和环境搭建
  8. 微信小程序模板消息php,微信小程序模板消息实现(PHP+小程序)
  9. undefined reference to `cv::imread(std::__cxx11::basic_string<char, std::char_traits<char>, std::all
  10. USACO COWXOR