Spaces:
Running
Running
| 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 |