pytorch3d.transforms转换类函数和三角函数运算

pytorch3d.transforms转换类函数:
from pytorch3d.transform import (axis_angle_to_matrix, matrix_to_axis_angle,
                                 quaternion_to_matrix, matrix_to_quaternion,
                                 rotation_6d_to_matrix, matrix_to_rotation_6d)

# axis_angle_to_matrix: 轴角表示 -> 矩阵表示
# matrix_to_axis_angle: 矩阵表示 -> 轴角表示
# quaternion_to_matrix: 四元数表示 -> 矩阵表示
# matrix_to_quaternion: 矩阵表示 -> 四元数表示
# rotation_6d_to_matrix: 6d(自由度)旋转表示 -> 矩阵表示
# matrix_to_rotation_6d: 矩阵表示 -> 6d(自由度)旋转表示

# 官网文档:https://pytorch3d.readthedocs.io/en/latest/index.html

轴角三角函数运算:

import torch
import numpy as np
# 轴角的正弦(sin),反正弦(arcsin),余弦(cos),反余弦(arccos)函数计算

# 正弦函数torch.sin(input_tensor, out=None)
a = torch.Tensor([0, 30, 45, 60, 90])

# 通过乘 np.pi/180 转化为弧度
a_pi = a * np.pi / 180
print(a_pi)  # tensor([0.0000, 0.5236, 0.7854, 1.0472, 1.5708])

# 求sin即正弦值
a_sin = torch.sin(a_pi)
print(a_sin)  # tensor([0.0000, 0.5000, 0.7071, 0.8660, 1.0000])

# 求反正弦arcsin,torch.arcsin(input_tensor, out=None)
a_pi_recon = torch.arcsin(a_sin)
print(a_pi_recon)  # tensor([0.0000, 0.5236, 0.7854, 1.0472, 1.5708])

# 除以np.pi/180 转化为轴角表示
a_recon = a_pi_recon // (np.pi/180)  # 对张量列表逐元素除法,所以是 //
print(a_recon)  # tensor([ 0., 30., 44., 59., 90.])

# 求cos即余弦, torch.cos(input_tensor, out=None)
a_cos = torch.cos(a_pi)  # 先转化为弧度表示,再求余弦值
print(a_cos)  # tensor([ 1.0000e+00,  8.6603e-01,  7.0711e-01,  5.0000e-01, -4.3711e-08])
# 科学计数法: a*e+b == a * (10 ** b);

# 求反余弦,即torch.arccos(input_tensor, out=None)
a_pi_recon2 = torch.arccos(a_cos)
print(a_pi_recon2)  # tensor([0.0000, 0.5236, 0.7854, 1.0472, 1.5708])

# 转化回轴角表示
a_recon2 = a_pi_recon2 // (np.pi/180)
print(a_recon2)  # tensor([ 0., 30., 45., 60., 90.])

# 总结:其实所有三角函数的格式都一样,可以举一反三;
# 正弦: torch.sin(input_tensor, out=None); 反正弦: torch.arcsin(input_tensor, out=None)
# 余弦: torch.cos(input_tensor, out=None); 反余弦: torch.arccos(input_tensor, out=None)
# 正切: torch.tan(input_tensor, out=None)
# 双曲正弦: torch.sinh(input_tensor, out=None)
# 双曲余弦: torch.cosh(input_tensor, out=None)
# 双曲正切: torch.tanh(input_tensor, out=None)
# 求张量(逐元素)绝对值: torch.abs(input_tensor, out=None)
# 对张量向上(逐元素)取整: torch.ceil(input_tensor)

# 注意:在对轴角求三角函数前需 * (np.pi/180) 转化为弧度!!!

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值