OpenCV  4.10.0
Open Source Computer Vision
Loading...
Searching...
No Matches
Classes | Typedefs | Functions
cv::ppf_match_3d Namespace Reference

Classes

class  ICP
 This class implements a very efficient and robust variant of the iterative closest point (ICP) algorithm. The task is to register a 3D model (or point cloud) against a set of noisy target data. The variants are put together by myself after certain tests. The task is to be able to match partial, noisy point clouds in cluttered scenes, quickly. You will find that my emphasis is on the performance, while retaining the accuracy. This implementation is based on Tolga Birdal's MATLAB implementation in here: http://www.mathworks.com/matlabcentral/fileexchange/47152-icp-registration-using-efficient-variants-and-multi-resolution-scheme The main contributions come from: More...
 
class  Pose3D
 Class, allowing the storage of a pose. The data structure stores both the quaternions and the matrix forms. It supports IO functionality together with various helper methods to work with poses. More...
 
class  PoseCluster3D
 When multiple poses (see Pose3D) are grouped together (contribute to the same transformation) pose clusters occur. This class is a general container for such groups of poses. It is possible to store, load and perform IO on these poses. More...
 
class  PPF3DDetector
 Class, allowing the load and matching 3D models. Typical Use: More...
 

Typedefs

typedef uint KeyType
 
typedef Ptr< Pose3DPose3DPtr
 
typedef Ptr< PoseCluster3DPoseCluster3DPtr
 

Functions

Mat addNoisePC (Mat pc, double scale)
 
void computeBboxStd (Mat pc, Vec2f &xRange, Vec2f &yRange, Vec2f &zRange)
 
int computeNormalsPC3d (const Mat &PC, Mat &PCNormals, const int NumNeighbors, const bool FlipViewpoint, const Vec3f &viewpoint)
 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.
 
void destroyFlann (void *flannIndex)
 
void getRandomPose (Matx44d &Pose)
 
hashtable_inthashtable_int_clone (hashtable_int *hashtbl)
 
hashtable_inthashtableCreate (size_t size, size_t(*hashfunc)(uint))
 
void hashtableDestroy (hashtable_int *hashtbl)
 
void * hashtableGet (hashtable_int *hashtbl, KeyType key)
 
hashnode_ihashtableGetBucketHashed (hashtable_int *hashtbl, KeyType key)
 
int hashtableInsert (hashtable_int *hashtbl, KeyType key, void *data)
 
int hashtableInsertHashed (hashtable_int *hashtbl, KeyType key, void *data)
 
void hashtablePrint (hashtable_int *hashtbl)
 
hashtable_inthashtableRead (FILE *f)
 
int hashtableRemove (hashtable_int *hashtbl, KeyType key)
 
int hashtableResize (hashtable_int *hashtbl, size_t size)
 
int hashtableWrite (const hashtable_int *hashtbl, const size_t dataSize, FILE *f)
 
void * indexPCFlann (Mat pc)
 
Mat loadPLYSimple (const char *fileName, int withNormals=0)
 Load a PLY file.
 
static uint next_power_of_two (uint value)
 Round up to the next highest power of 2.
 
Mat normalizePCCoeff (Mat pc, float scale, float *Cx, float *Cy, float *Cz, float *MinVal, float *MaxVal)
 
void queryPCFlann (void *flannIndex, Mat &pc, Mat &indices, Mat &distances)
 
void queryPCFlann (void *flannIndex, Mat &pc, Mat &indices, Mat &distances, const int numNeighbors)
 
Mat samplePCByQuantization (Mat pc, Vec2f &xrange, Vec2f &yrange, Vec2f &zrange, float sample_step_relative, int weightByCenter=0)
 
Mat samplePCUniform (Mat PC, int sampleStep)
 
Mat samplePCUniformInd (Mat PC, int sampleStep, std::vector< int > &indices)
 
Mat transformPCPose (Mat pc, const Matx44d &Pose)
 
Mat transPCCoeff (Mat pc, float scale, float Cx, float Cy, float Cz, float MinVal, float MaxVal)
 
void writePLY (Mat PC, const char *fileName)
 Write a point cloud to PLY file.
 
void writePLYVisibleNormals (Mat PC, const char *fileName)
 Used for debbuging pruposes, writes a point cloud to a PLY file with the tip of the normal vectors as visible red points.