pytorch3d/pytorch3d/ops/__init__.py
Roman Shapovalov 54b482bd66 Not normalising control points by X.std()
Summary:
davnov134 found that the algorithm crashes if X is an axis-aligned plane. This is because I implemented scaling control points by `X.std()` as a poor man’s version of PCA whitening.
I checked that it does not bring consistent improvements, so let’s get rid of it.

The algorithm still results in slightly higher errors on the axis aligned planes but at least it does not crash. As a next step, I will experiment with detecting a planar case and using 3-point barycentric coordinates rather than 4-points.

Reviewed By: davnov134

Differential Revision: D21179968

fbshipit-source-id: 1f002fce5541934486b51808be0e910324977222
2020-04-23 06:04:54 -07:00

28 lines
883 B
Python

# Copyright (c) Facebook, Inc. and its affiliates. All rights reserved.
from .cubify import cubify
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,
estimate_pointcloud_normals,
)
from .sample_points_from_meshes import sample_points_from_meshes
from .subdivide_meshes import SubdivideMeshes
from .utils import (
convert_pointclouds_to_tensor,
eyes,
get_point_covariances,
is_pointclouds,
wmean,
)
from .vert_align import vert_align
__all__ = [k for k in globals().keys() if not k.startswith("_")]