python三维点云投影(二)

python点云投影样例,投影知识和理论分析见:三维点云投影(一)_Coding的叶子的博客-CSDN博客。

数据来源:modelnet40点云样例数据-深度学习文档类资源-CSDN下载。

一、python代码

# -*- coding: utf-8 -*-
"""
Created on Tue Apr 12 22:34:18 2022

@author: Administrator
"""

from mayavi import mlab
import numpy as np

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()

#定义平面方程Ax+By+Cz+D=0
#以z=0平面为例,即在xy平面上的投影A=0, B=0, C=1(任意值), D=0
#para[0, 0, 1, 0]
def point_project(points, para):
    x = points[:, 0]  # x position of point
    y = points[:, 1]  # y position of point
    z = points[:, 2]  # z position of point
    d = para[0]**2 + para[1]**2 + para[2]**2
    t = -(para[0]*x  + para[1]*y + para[2]*z + para[3])/d
    x = para[0]*t + x
    y = para[1]*t + y
    z = para[2]*t + z
    return np.array([x, y, z]).T

#矩阵写法
#定义平面方程Ax+By+Cz+D=0
#以z=0平面为例,即在xy平面上的投影A=0, B=0, C=1(任意值), D=0
#para[0, 0, 1, 0]
def point_project_array(points, para):
    para  = np.array(para)
    d = para[0]**2 + para[1]**2 + para[2]**2
    t = -(np.matmul(points[:, :3], para[:3].T) + para[3])/d
    points = np.matmul(t[:, np.newaxis], para[np.newaxis, :3]) + points[:, :3]
    return points
    
    
if  __name__ == '__main__':
    points = np.loadtxt('airplane_0001.txt', delimiter=',')
    #显示原始点云
    #viz_mayavi(points)

    #定义平面方程Ax+By+Cz+D=0
    #以z=0平面为例,即在xy平面上的投影A=0, B=0, C=1(任意值), D=0
    project_pane = [0, 0, 1, 0]
    points_new = point_project_array(points, project_pane)
    viz_mayavi(points_new)
    

二、图片展示结果

投影图片:

python三维点云投影(二)_第1张图片

原始图片:

python三维点云研究计划_Coding的叶子的博客-CSDN博客_python 三维点云将按照以下目录持续进行更新……点云格式介绍、点云可视化、点云投影、生成鸟瞰图、生成前视图、点云配准、点云分割、三维目标检测、点云重建、深度学习点云算法……https://blog.csdn.net/suiyingy/article/details/124017716python三维点云投影(一)_Coding的叶子的博客-CSDN博客三维点云投影,理论推导+python源码https://blog.csdn.net/suiyingy/article/details/124111743

 更多三维、二维感知算法和金融量化分析算法请关注“乐乐感知学堂”微信公众号,并将持续进行更新。

你可能感兴趣的:(三维点云,python,点云,投影,python)