Table of Contents

Class PpfMatch3dInvoke

Namespace
Emgu.CV.PpfMatch3d
Assembly
Emgu.CV.dll

Entry points to the Open CV Surface Matching module

public static class PpfMatch3dInvoke
Inheritance
PpfMatch3dInvoke
Inherited Members

Methods

ComputeNormalsPC3d(Mat, Mat, int, bool, float[])

Compute the normals of an arbitrary point cloud computeNormalsPC3d uses a plane fitting approach to smoothly compute local normals. Normals are obtained through the eigenvector of the covariance matrix, corresponding to the smallest eigen value. If PCNormals is provided to be an Nx6 matrix, then no new allocation is made, instead the existing memory is overwritten.

public static int ComputeNormalsPC3d(Mat pc, Mat pcNormals, int numNeighbors, bool flipViewpoint, float[] viewpoint)

Parameters

pc Mat

Input point cloud (CV_32F family). Point clouds with 3 or 6 elements per row are expected. In the case where the normals are provided, they are also rotated to be compatible with the entire transformation

pcNormals Mat

Output point cloud

numNeighbors int

Number of neighbors to take into account in a local region

flipViewpoint bool

Should normals be flipped to a viewing direction?

viewpoint float[]

viewpoint

Returns

int

Returns 0 on success

LoadPLYSimple(string, int, IOutputArray)

Load a PLY file.

public static void LoadPLYSimple(string fileName, int withNormals, IOutputArray result)

Parameters

fileName string

The PLY model to read

withNormals int

Wheather the input PLY contains normal information, and whether it should be loaded or not

result IOutputArray

The data loaded from the ply model

SamplePCByQuantization(Mat, float[], float[], float[], float, int, IOutputArray)

Sample a point cloud using uniform steps

public static void SamplePCByQuantization(Mat pc, float[] xRange, float[] yRange, float[] zRange, float sampleStepRelative, int weightByCenter, IOutputArray result)

Parameters

pc Mat

Input point cloud (CV_32F family). Point clouds with 3 or 6 elements per row are expected. In the case where the normals are provided, they are also rotated to be compatible with the entire transformation

xRange float[]

X components (min and max) of the bounding box of the model

yRange float[]

Y components (min and max) of the bounding box of the model

zRange float[]

Z components (min and max) of the bounding box of the model

sampleStepRelative float

The point cloud is sampled such that all points have a certain minimum distance. This minimum distance is determined relatively using the parameter sampleStepRelative.

weightByCenter int

The contribution of the quantized data points can be weighted by the distance to the origin. This parameter enables/disables the use of weighting.

result IOutputArray

Sampled point cloud

TransformPCPose(Mat, Mat, IOutputArray)

Transforms the point cloud with a given a homogeneous 4x4 pose matrix (in double precision)

public static void TransformPCPose(Mat pc, Mat pose, IOutputArray result)

Parameters

pc Mat

Input point cloud (CV_32F family). Point clouds with 3 or 6 elements per row are expected. In the case where the normals are provided, they are also rotated to be compatible with the entire transformation

pose Mat

4x4 pose matrix, but linearized in row-major form.

result IOutputArray

Transformed point cloud