diff --git a/pytorch3d/ops/__init__.py b/pytorch3d/ops/__init__.py index dfbcec21..7cbaf389 100644 --- a/pytorch3d/ops/__init__.py +++ b/pytorch3d/ops/__init__.py @@ -6,6 +6,7 @@ from .graph_conv import GraphConv from .knn import knn_gather, knn_points from .mesh_face_areas_normals import mesh_face_areas_normals from .packed_to_padded import packed_to_padded, padded_to_packed +from .perspective_n_points import efficient_pnp from .points_alignment import corresponding_points_alignment, iterative_closest_point from .points_normals import ( estimate_pointcloud_local_coord_frames, diff --git a/pytorch3d/ops/perspective_n_points.py b/pytorch3d/ops/perspective_n_points.py index fd5ed686..34b99861 100644 --- a/pytorch3d/ops/perspective_n_points.py +++ b/pytorch3d/ops/perspective_n_points.py @@ -34,11 +34,10 @@ def _define_control_points(x, weight, storage_opts=None): """ storage_opts = storage_opts or {} x_mean = oputil.wmean(x, weight) - x_std = oputil.wmean((x - x_mean) ** 2, weight) ** 0.5 c_world = F.pad(torch.eye(3, **storage_opts), (0, 0, 0, 1), value=0.0).expand_as( x[:, :4, :] ) - return c_world * x_std + x_mean + return c_world + x_mean def _compute_alphas(x, c_world):