首页 > 其他分享 >NumPy_数据处理详解—矩阵运算

NumPy_数据处理详解—矩阵运算

时间:2023-05-19 18:12:53浏览次数:45  
标签:matrix point tr np 详解 数据处理 rotation NumPy points

示例

根据 出版的图书进行代码桥写

代码示例

#!/usr/bin/python3
# -*- coding: utf-8 -*- 

import pandas as pd
import numpy  as np
import open3d as o3d 

def get_from_eye(rotation,trans):
    ## 单位矩阵-对角线元素为1,非对角线元素全为0的矩的正方矩阵 np.identity
    ## 二维矩阵-对角线元素为1,非对角线元素全为0的矩的N*M矩阵 np.eye 可以移动对角线
    tr_matrix = np.eye(4,dtype=np.float32)
    tr_matrix[0:3,0:3]= rotation
    tr_matrix[:3,3]= trans 
    return tr_matrix   

def get_from_zero(rotation,trans):
    ## 生成全为0数组的函数
    tr_matrix = np.zeros((4,4),dtype=np.float32)
    tr_matrix[0:3,0:3]= rotation
    tr_matrix[:3,3]= trans 
    tr_matrix[3,3]= 1
    return tr_matrix   

def generate_points_matrix(point):
    std_points  = np.zeros((point.shape[0],4),dtype=np.float32)
    std_points[:,:3]= point[:,:3]
    ## 生成全为1数组的函数
    std_points[:,3]= np.ones(point.shape[0])
    return std_points

def trans_points_matrix(pcd_file,rotation,trans,out_pcd_file):  
    orig_pcd = o3d.t.io.read_point_cloud(pcd_file)  
    points_xyz = orig_pcd.point.numpy
    intensity = orig_pcd["intensity"].numpy
    exp_points = generate_points_matrix(points_xyz)
    exp_tr_matrix = get_from_zero(rotation,trans)
    new_points = np.dot( np.linalg.inv(exp_tr_matrix),exp_points.T).T
    ##输出点云
    out_pcd = o3d.t.geometry.PointCloud()
    out_pcd.point["positions"] = o3d.core.Tensor(new_points[:,:3],dtype=o3d.core.Dtype.Float32)
    out_pcd.point["intensity"] = o3d.core.Tensor(intensity,dtype=o3d.core.Dtype.Float32)
    o3d.t.io.write_point_cloud(out_pcd_file,out_pcd,write_ascii=False,compressed=False) 

if __name__ == '__main__':
    rotation_data = np.array([1.1,3,4,5,6,7,8,9,2])
    rotation_matrix = rotation_data.reshape(3,-1)
    trans_data = np.array([30,20,10])
    
    ##生成连续数列或者等差数列的函数
    point_wxp = np.array(range(60)).reshape((-1,6))
    ## .reshape 和 resize 共享内存方式-报错的处理方式
    point_wxp = np.arange(60,dtype=np.float32).reshape((-1,6))

    #sig_matrix = get_from_eye(rotation_matrix,trans_data)
    sig_matrix = get_from_zero(rotation_matrix,trans_data)
    print(sig_matrix)
    print(np.linalg.inv(sig_matrix))
    exp_point = generate_points_matrix(point_wxp)
    print(exp_point)

标签:matrix,point,tr,np,详解,数据处理,rotation,NumPy,points
From: https://www.cnblogs.com/ytwang/p/17415952.html

相关文章

  • 【Linux】详解六种配置Linux环境变量的方法(以centos为例)
    本文时间2023-05-19作者:sugerqube漆瓷本文重理解,!!忽略环境变量加载原理!!本文目标:理解六大环境变量配置,选择合适的配置文件进行配置配置环境的理由以shell编程为例现在我们想要运行名为"sugerqube.sh"的脚本需要运行的命令是./sugerqube.sh即在命令行输入脚本的地址注:.......
  • Media Queries详解
     MediaQueries直译过来就是“媒体查询”,在我们平时的Web页面中head部分常看到这样的一段代码: <linkhref="css/reset.css"rel="stylesheet"type="text/css"media="screen"/> <linkhref="css/style.css"rel="stylesheet"typ......
  • Java Semaphore 信号量详解
    Semaphore基本使用场景Semaphore的基本使用场景是限制一定数量的线程能够去执行.举个简单的例子:一个单向隧道能同时容纳10个小汽车或5个卡车通过(1个卡车等效与2个小汽车),而隧道入口记录着当前已经在隧道内的汽车等效比重.比如1个小汽车和1个卡车,则隧道入口显示3.若隧道......
  • JSON.parse和JSON.stringify方法详解
    1.JSON.parse()用于从一个字符串中解析出json对象<!--作者:zhangfan页面名称:JSON.parse()、JSON.stringify()使用方法--><template><divid="product-list-one"><button@click="jsonParse()">执行jsonParse</button></div><......
  • JVM堆详解
     1、在JVM堆空间可以分为三个大区:新生代、老年代、永久代。2、新生代可以划分为三个区,Eden区,两个幸存区。 在JVM运行时,可以通过配置一下参数改变整改JVM堆的配置1.JVM运行时堆的大小-Xms堆的最小值-Xmx堆空间的最大值2.新生代堆空间大小调整-XX:NewSize新生......
  • 关于Apple设备私有的apple-touch-icon属性详解
    以前我们用过favicon在浏览器给网站进行身份标识,用法如下:1.<linkhref="http://image.feeliu.com/web/favicon.ico"rel="shortcuticon"/>2.<linkhref="http://image.feeliu.com/web/favicon.ico"rel="Bookmark"/> 现今移动设备越来越多,苹......
  • c++ 输入文件流ifstream用法详解[转]
    目录文章目录输入流的继承关系:成员函数Publicmemberfunctions1,(constructor)2,ifstream::open3,ifstream::is_open4,ifstream::close5,ifstream::rdbuf6,ifstream::operator=Publicmemberfunctionsinheritedfromistream7,std::istream::operator>>8,istream::gcount9,istr......
  • C#中BitConverter.ToUInt16、BitConverter.ToUInt32原理与用法详解
    一、基础知识a、1字节=8位(1Byte=8bit) 二进制表示:11111111 十进制表示:255计算机内部约定用多少字节来规范数值,比如红绿蓝三色在计算机中只分配了一个字节,一个字节有八位,每一位只能储存1或0,计算机只认识二进制(0与1),所以就是2的八次方,计算机中约定从0开始计数,所......
  • 工程监测无线中继采集仪的寄存器(参数)汇总详解
    工程监测无线中继采集仪的寄存器(参数)汇总详解 一、寄存器(参数)汇总无线中继采集发送仪有很多参数(寄存器),对于一些简单的应用,用户无需关心这些参数,使用默认参数值即可。仅列出较为常用的参数,当需要配置设备完成复杂、特殊的应用时,请查看“无线中继采集发送仪寄存器汇总说明”。......
  • mysql 存储过程详解
    前言在项目开发中,经常会遇到这样一种场景,当修改A表的一条数据时,需要关联修改B表、C表甚至其他更多表的数据,为什么会这样呢?在真实的业务场景中,往往一张表的数据关联的业务是多样的,举例来说,用户在页面上完成一个订单,对服务端来说,与这个订单相关的业务还有很多,比如生成一条出库记......