Add affiliation in README.md; improve redundancy in get_plucker_coordinates

This commit is contained in:
jensen
2025-03-24 13:47:29 +00:00
parent 42cf6ae756
commit 38ebede502
3 changed files with 8 additions and 24 deletions
+2
View File
@@ -13,6 +13,8 @@
[Vikram Voleti](https://voletiv.github.io/), [Aaryaman Vasishta](https://www.aaryaman.net/), [Chun-Han Yao](https://chhankyao.github.io/), [Mark Boss](https://markboss.me/)
<br>
[Philip Torr](https://eng.ox.ac.uk/people/philip-torr/), [Christian Rupprecht](https://chrirupp.github.io/), [Varun Jampani](https://varunjampani.github.io/)
<br><br>
[Stability AI](https://stability.ai/), [University of Oxford](https://www.robots.ox.ac.uk/~vgg/), [University of California, Berkeley](https://bair.berkeley.edu/)
</div>
# Overview
+1 -4
View File
@@ -1213,14 +1213,11 @@ def get_value_dict(
)
w2c[:, :3, 3] *= translation_scaling_factor
c2w[:, :3, 3] *= translation_scaling_factor
value_dict["plucker_coordinate"], _ = get_plucker_coordinates(
value_dict["plucker_coordinate"] = get_plucker_coordinates(
extrinsics_src=w2c[0],
extrinsics=w2c,
intrinsics=curr_Ks.float().clone(),
mode="plucker",
rel_zero_translation=True,
target_size=(H // F, W // F),
return_grid_cam=True,
)
value_dict["c2w"] = c2w
+5 -20
View File
@@ -99,9 +99,7 @@ def cam2world(X, pose):
return X_hom @ pose_inv.transpose(-1, -2)
def get_center_and_ray(
img_h, img_w, pose, intr, zero_center_for_debugging=False
): # [HW,2]
def get_center_and_ray(img_h, img_w, pose, intr): # [HW,2]
# given the intrinsic/extrinsic matrices, get the camera center and ray directions]
# assert(opt.camera.model=="perspective")
@@ -115,7 +113,7 @@ def get_center_and_ray(
center_3D = cam2world(center_3D_cam, pose) # [B,HW,3]
ray = grid_3D - center_3D # [B,HW,3]
return center_3D_cam if zero_center_for_debugging else center_3D, ray, grid_3D_cam
return center_3D, ray, grid_3D_cam
def get_plucker_coordinates(
@@ -123,11 +121,7 @@ def get_plucker_coordinates(
extrinsics,
intrinsics=None,
fov_rad=DEFAULT_FOV_RAD,
mode="plucker",
rel_zero_translation=True,
zero_center_for_debugging=False,
target_size=[72, 72], # 576-size image
return_grid_cam=False, # save for later use if want restore
target_size=[72, 72],
):
if intrinsics is None:
intrinsics = get_default_intrinsics(fov_rad).to(extrinsics.device)
@@ -150,8 +144,6 @@ def get_plucker_coordinates(
), "Intrinsics should be expressed in resolution-independent normalized image coordinates."
c2w_src = torch.linalg.inv(extrinsics_src)
if not rel_zero_translation:
c2w_src[:3, 3] = c2w_src[3, :3] = 0.0
# transform coordinates from the source camera's coordinate system to the coordinate system of the respective camera
extrinsics_rel = torch.einsum(
"vnm,vmp->vnp", extrinsics, c2w_src[None].repeat(extrinsics.shape[0], 1, 1)
@@ -168,18 +160,11 @@ def get_plucker_coordinates(
img_w=target_size[1],
pose=extrinsics_rel[:, :3, :],
intr=intrinsics,
zero_center_for_debugging=zero_center_for_debugging,
)
if mode == "plucker" or "v1" in mode:
rays = torch.nn.functional.normalize(rays, dim=-1)
plucker = torch.cat((rays, torch.cross(centers, rays, dim=-1)), dim=-1)
else:
raise ValueError(f"Unknown Plucker coordinate mode: {mode}")
rays = torch.nn.functional.normalize(rays, dim=-1)
plucker = torch.cat((rays, torch.cross(centers, rays, dim=-1)), dim=-1)
plucker = plucker.permute(0, 2, 1).reshape(plucker.shape[0], -1, *target_size)
if return_grid_cam:
return plucker, grid_cam.reshape(-1, *target_size, 3)
return plucker