Spaces:
Running
on
Zero
Running
on
Zero
import torch | |
import numpy as np | |
def compute_relative_world_to_camera(R1, t1, R2, t2): | |
zero_row = torch.tensor([[0, 0, 0, 1]], dtype=torch.float32, device="cuda") #, requires_grad=True | |
E1_inv = torch.cat([torch.transpose(R1, 0, 1), -torch.transpose(R1, 0, 1) @ t1.reshape(-1, 1)], dim=1) | |
E1_inv = torch.cat([E1_inv, zero_row], dim=0) | |
E2 = torch.cat([R2, -R2 @ t2.reshape(-1, 1)], dim=1) | |
E2 = torch.cat([E2, zero_row], dim=0) | |
# Compute relative transformation | |
E_rel = E2 @ E1_inv | |
# # Extract rotation and translation | |
# R_rel = E_rel[:3, :3] | |
# t_rel = E_rel[:3, 3] | |
# E_rel = torch.cat([E_rel, zero_row], dim=0) | |
return E_rel |