python点云拼接

        点云拼接主要是把不同的点云拼接到一起。通常,为了获得一个完整物体的三维点云,我们可能会在不同的视点进行数据采集,然后把采集的点云数据拼接到一起。

        由于视点的不同,所采集到的多个点云的坐标系也会不一致。

        为了解决坐标系不一致的问题,最可能用到点云配准技术,或者提前知道视点间的坐标关系。点云配准请参考以下两篇文章:点云配准(一)— ICP方法_Coding的叶子的博客-CSDN博客点云配准(二)— python open3d ICP方法_Coding的叶子的博客-CSDN博客。

        这里我们将配准好的点云文件直接拿过来用。这两个文件分别是bun001.ply文件和bun002.ply。文件下载地址为python点云拼接样例数据-深度学习文档类资源-CSDN下载。

1 python拼接程序

        程序中points1和points2分别为配准后点云,points3为拼接后点云。点云可视化和读写等基本操作可以参考之前文章。

        这里的拼接程序为最简单的拼接,即两个点云直接叠加。这会导致点云数据量显著增加。因此可以用一些下采样的方法,或者将距离相近的点合并为一个点。这些将在接下来博客中进行分享。

# -*- 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

 
def ply_read(file_path):
    lines = []
    with open(file_path, 'r', encoding='utf-8') as f:
        lines = f.readlines()
    return lines
 
 
#将每一行数据分割后转为数字
def ls2n(line):
    line = line.strip().split(' ')
    return list(map(float, line))
 
def viz_mayavi(points):
    x = points[:, 0]  # x position of point
    y = points[:, 1]  # y position of point
    z = points[:, 2]  # z position of point
    fig = mlab.figure(bgcolor=(0, 0, 0), size=(640, 360))
    mlab.points3d(x, y, z,
                          y,          # Values used for Color
                          mode="point",
                          colormap='spectral', # 'bone', 'copper', 'gnuplot'
                          # color=(0, 1, 0),   # Used a fixed (r,g,b) instead
                          figure=fig,
                          )
    mlab.show()


if __name__ == '__main__': 
    file_path = 'bun001.ply'
    points = ply_read(file_path)
    points = points[10:(10+40256)]
    points1 = np.array(list(map(lambda x: ls2n(x), points)))

    file_path = 'bun002.ply'
    points = ply_read(file_path)
    points = points[24:(24+40097)]
    points2 = np.array(list(map(lambda x: ls2n(x), points)))

    print(points1.shape)
    points3 = np.concatenate((points1, points2), axis=0)
    print(points3.shape)
    viz_mayavi(points3)

2 点云拼接可视化结果

python点云拼接_第1张图片

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,点云拼接,点云配准,python,点云)