(
points: Float[Tensor, "*#batch dim"],
intrinsics: Float[Tensor, "*#batch dim dim"],
epsilon: float = 1e-5,
infinity: float = 1e8,
)
| 47 | |
| 48 | |
| 49 | def project_camera_space( |
| 50 | points: Float[Tensor, "*#batch dim"], |
| 51 | intrinsics: Float[Tensor, "*#batch dim dim"], |
| 52 | epsilon: float = 1e-5, |
| 53 | infinity: float = 1e8, |
| 54 | ) -> Float[Tensor, "*batch dim-1"]: |
| 55 | points = points / (points[..., -1:] + epsilon) |
| 56 | points = points.nan_to_num(posinf=infinity, neginf=-infinity) |
| 57 | points = einsum(intrinsics, points, "... i j, ... j -> ... i") |
| 58 | return points[..., :-1] |
| 59 | |
| 60 | |
| 61 | def project( |
no outgoing calls
no test coverage detected