Loading...
Searching...
No Matches
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< Pose3D > | Pose3DPtr |
typedef Ptr< PoseCluster3D > | PoseCluster3DPtr |
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_int * | hashtable_int_clone (hashtable_int *hashtbl) |
hashtable_int * | hashtableCreate (size_t size, size_t(*hashfunc)(uint)) |
void | hashtableDestroy (hashtable_int *hashtbl) |
void * | hashtableGet (hashtable_int *hashtbl, KeyType key) |
hashnode_i * | hashtableGetBucketHashed (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_int * | hashtableRead (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. | |