Point Cloud Normal Estimation

Functional Description

This operator is used to estimate the surface normal vector for each point in the input point cloud data.

A normal vector is a 3D vector perpendicular to the local surface at a point, representing the orientation of that point.

The operator uses a K-Nearest Neighbors based method: for each point in the point cloud, it finds its K nearest neighbors, then fits a local plane through these neighbors. The normal vector of this plane is used as the estimated normal vector for that point.

Usage Scenarios

  • Feature Extraction: Normal vectors and their distribution are important geometric features that can be used for tasks like point cloud matching, segmentation, and recognition.

  • Plane Fitting and Detection: Normal vector information helps identify and segment planar regions.

  • Surface Analysis: Analyze surface curvature, smoothness, etc., of an object.

  • Robot Grasping: Normal vector information may be needed to determine the graspability of an object’s surface or to calculate grasping poses.

Inputs and Outputs

Input Items

Pointcloud : Input point cloud or list of point clouds, containing only XYZ coordinate information.

Output Items

With Normal Point Cloud : Output point cloud or list of point clouds. In addition to the original XYZ coordinates, each point is appended with its estimated normal vector information.

Parameter Description

  • Computation Load: Normal estimation is calculated pointwise. The more points in the point cloud and the larger the K value, the longer the computation time.

  • Viewpoint Importance: It is crucial to set the correct viewpoint to ensure consistent normal vector directions.

Viewpoint

Parameter Description

Defines a 3D coordinate [X, Y, Z], usually the origin of the camera coordinate system [0, 0, 0], used to adjust the direction of the calculated normal vectors.

Tuning Description

A normal vector has two possible directions (pointing into or out of the surface). After the operator calculates the initial normal vector, it computes the angle between the vector from the current point to the viewpoint and the initial normal vector. If the angle is greater than 90 degrees, the operator reverses the normal vector to ensure that the normal vector generally points towards the viewpoint direction.

Parameter Range

Default: [0,0,0]

Search count

Parameter Description

When estimating the normal vector for each point, this is the number of surrounding neighboring points to find. These neighbors are used to fit a small plane, and the normal vector of that plane becomes the normal vector for the point.

Tuning Description

  • The choice of Search count affects the stability of normal vector estimation and its sensitivity to local details.

  • A smaller Search count is more sensitive to local details and can better reflect normal changes in sharp edges or high-curvature regions, but it is also more sensitive to noise, and the estimated normal vectors may not be smooth enough.

  • A larger Search count considers a wider neighborhood, resulting in smoother estimated normal vectors that are less sensitive to noise. However, it may smooth out some detailed features, making the normal vector transitions at edges less sharp.

    The appropriate Search count needs to be selected based on the density of the point cloud, noise level, and application requirements.

Parameter Range

[0, 1000000], Default: 15