def test_perspective(self): cameras = SfMPerspectiveCameras() P = cameras.get_projection_transform() vertices = torch.randn([3, 4, 3], dtype=torch.float32) v1 = P.transform_points(vertices) v2 = sfm_perspective_project_naive(vertices) self.assertClose(v1, v2)
def test_perspective_kwargs(self): cameras = SfMPerspectiveCameras(focal_length=5.0, principal_point=((2.5, 2.5),)) P = cameras.get_projection_transform( focal_length=2.0, principal_point=((2.5, 3.5),) ) vertices = torch.randn([3, 4, 3], dtype=torch.float32) v1 = P.transform_points(vertices) v2 = sfm_perspective_project_naive(vertices, fx=2.0, fy=2.0, p0x=2.5, p0y=3.5) self.assertClose(v1, v2, atol=1e-6)
def test_perspective_scaled(self): focal_length_x = 10.0 focal_length_y = 15.0 p0x = 15.0 p0y = 30.0 cameras = SfMPerspectiveCameras( focal_length=((focal_length_x, focal_length_y),), principal_point=((p0x, p0y),), ) P = cameras.get_projection_transform() vertices = torch.randn([3, 4, 3], dtype=torch.float32) v1 = P.transform_points(vertices) v2 = sfm_perspective_project_naive( vertices, fx=focal_length_x, fy=focal_length_y, p0x=p0x, p0y=p0y ) v3 = cameras.transform_points(vertices) self.assertClose(v1, v2) self.assertClose(v3[..., :2], v2[..., :2])