Преобразование облака точек в PCL - понимание значений преобразования - PullRequest
0 голосов
/ 10 июня 2019

я скачал сканы Standford Bunny с здесь

есть файл conf, содержащий преобразования сканов, который выглядит следующим образом:

camera -0.0172 -0.0936 -0.734 -0.0461723 0.970603 -0.235889 0.0124573 bmesh bun000.ply 0 0 0 0 0 0 1 bmesh bun045.ply -0.0520211 -0.000383981 -0.0109223 0.00548449 -0.294635 -0.0038555 0.955586

что я хочу сделать, это перенести эти 2 скана в одну и ту же систему координат, используя библиотеку облаков точек, но я не понимаю значения этих преобразований

Я нашел уроки по матричным преобразованиям 4x4, возможно ли создать матрицу 4x4 из этих значений? или это что-то совершенно другое?

1 Ответ

0 голосов
/ 20 июня 2019

Я не уверен в своем ответе, судя по формату, я думаю, что это position_x position_y position_z quaternion_x quaternion_y quaternion_z quaternion_w, но, пожалуйста, проверьте код, указанный ниже

from transforms3d.quaternions import quat2mat   
import numpy as np

# Create Identity transformation for 4x4
T = np.eye(4)

# Caution quat2mat uses w, x, y, z! Need to reorder your quaternion
T[:3, :3] = quat2mat([0.0124573, -0.0461723, 0.970603, -0.235889])

# Insert position x, y, z
T[:3, 3] = [-0.0172, -0.0936, -0.734]

# Print Result
print(T)                                                                     
# [[-0.99542587 -0.08375279  0.04596522 -0.0172    ]
#  [-0.09550694  0.8844491  -0.45675838 -0.0936    ]
#  [-0.00239911 -0.45905911 -0.88840249 -0.734     ]
#  [ 0.          0.          0.          1.        ]]
...