mirror of
https://github.com/facebookresearch/pytorch3d.git
synced 2025-08-04 04:42:49 +08:00
Summary: Implementation of ball query from PointNet++. This function is similar to KNN (find the neighbors in p2 for all points in p1). These are the key differences: - It will return the **first** K neighbors within a specified radius as opposed to the **closest** K neighbors. - As all the points in p2 do not need to be considered to find the closest K, the algorithm is much faster than KNN when p2 has a large number of points. - The neighbors are not sorted - Due to the radius threshold it is not guaranteed that there will be K neighbors even if there are more than K points in p2. - The padding value for `idx` is -1 instead of 0. # Note: - Some of the code is very similar to KNN so it could be possible to modify the KNN forward kernels to support ball query. - Some users might want to use kNN with ball query - for this we could provide a wrapper function around the current `knn_points` which enables applying the radius threshold afterwards as an alternative. This could be called `ball_query_knn`. Reviewed By: jcjohnson Differential Revision: D30261362 fbshipit-source-id: 66b6a7e0114beff7164daf7eba21546ff41ec450
39 lines
1.4 KiB
Python
39 lines
1.4 KiB
Python
# Copyright (c) Facebook, Inc. and its affiliates.
|
|
# All rights reserved.
|
|
#
|
|
# This source code is licensed under the BSD-style license found in the
|
|
# LICENSE file in the root directory of this source tree.
|
|
|
|
from .ball_query import ball_query
|
|
from .cameras_alignment import corresponding_cameras_alignment
|
|
from .cubify import cubify
|
|
from .graph_conv import GraphConv
|
|
from .interp_face_attrs import interpolate_face_attributes
|
|
from .knn import knn_gather, knn_points
|
|
from .laplacian_matrices import cot_laplacian, laplacian, norm_laplacian
|
|
from .mesh_face_areas_normals import mesh_face_areas_normals
|
|
from .mesh_filtering import taubin_smoothing
|
|
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 .points_to_volumes import (
|
|
add_pointclouds_to_volumes,
|
|
add_points_features_to_volume_densities_features,
|
|
)
|
|
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("_")]
|