コード例 #1
0
ファイル: flann_example.c プロジェクト: Soumali1987/FLANN
int main(int argc, char** argv)
{
    int rows = 9000;
    int cols = 128;
    int tcount = 1000;

    printf("Reading input data file.\n");
    float* dataset = read_points("dataset.dat", rows, cols);
    printf("Reading test data file.\n");
    float* testset = read_points("testset.dat", tcount, cols);
    
    int nn = 3;
    int* result = (int*) malloc(tcount*nn*sizeof(int));
    float* dists = (float*) malloc(tcount*nn*sizeof(float));
    
    struct FLANNParameters p = DEFAULT_FLANN_PARAMETERS;
    p.algorithm = KDTREE;
    p.trees = 8;
    p.log_level = LOG_INFO;
    
    float speedup;
    printf("Computing index.\n");
    flann_index_t index_id = flann_build_index(dataset, rows, cols, &speedup, &p);
    flann_find_nearest_neighbors_index(index_id, testset, tcount, result, dists, nn, &p);
    
    write_results("results.dat",result, tcount, nn);
    
    flann_free_index(index_id, &p);
    free(dataset);
    free(testset);
    free(result);
    free(dists);
    
    return 0;
}
コード例 #2
0
void NearestNeighborFLANN::setData(PointCloud3D* data) {
	assert(data != 0);

	if (index_id != 0) { // clean up if previous versions exist
		flann_free_index(index_id, &parameters);
	}

	dimension = 3; //we work with a 3D points...
	rows = data->getSize();
	cols = dimension;

	dataMatrix = new float[rows * cols];

	// convert data
	int matrixIndex = 0;
	for (int rowIndex = 0; rowIndex < rows; ++rowIndex) {
		dataMatrix[matrixIndex + 0] = static_cast<float> ((*data->getPointCloud())[rowIndex].getX());
		dataMatrix[matrixIndex + 1] = static_cast<float> ((*data->getPointCloud())[rowIndex].getY());
		dataMatrix[matrixIndex + 2] = static_cast<float> ((*data->getPointCloud())[rowIndex].getZ());
		matrixIndex += 3;
	}

	// create underlying data structure
	index_id = flann_build_index(dataMatrix, rows, cols, &speedup, &parameters);

}
コード例 #3
0
void NearestNeighborFLANN::setData(vector<vector<double> >* data) {
	assert(data != 0);

	if (index_id != 0) { // clean up if previous versions exist
		flann_free_index(index_id, &parameters);
	}

	dimension = (*data)[0].size();
	rows = data->size();
	cols = dimension;

	dataMatrix = new float[rows * cols];

	// convert data
	int matrixIndex = 0;
	for (int rowIndex = 0; rowIndex < rows; ++rowIndex) {
		for (int j = 0; j < dimension; ++j) {
			dataMatrix[matrixIndex + j] = static_cast<float> ( (*data)[rowIndex][j] );
		}
		matrixIndex += dimension;
	}

	// create underlying data structure
	index_id = flann_build_index(dataMatrix, rows, cols, &speedup, &parameters);
}
コード例 #4
0
ファイル: Registration.cpp プロジェクト: jinghuaguo/magic3d
 Registration::~Registration()
 {
     if (mFlannIndex != NULL)
     {
         flann_free_index(mFlannIndex, &mSearchPara);
     }
     if (mDataSet != NULL)
     {
         delete []mDataSet;
     }
 }
コード例 #5
0
ファイル: flann_example.c プロジェクト: Adil-Ibragimov/flann
int main(int argc, char** argv)
{
	float* dataset;
	float* testset;
	int nn;
	int* result;
	float* dists;
	struct FLANNParameters p;
	float speedup;
	flann_index_t index_id;

    int rows = 9000;
    int cols = 128;
    int tcount = 1000;

    /*
     * The files dataset.dat and testset.dat can be downloaded from:
     * http://people.cs.ubc.ca/~mariusm/uploads/FLANN/datasets/dataset.dat
     * http://people.cs.ubc.ca/~mariusm/uploads/FLANN/datasets/testset.dat
     */
    printf("Reading input data file.\n");
    dataset = read_points("dataset.dat", rows, cols);
    printf("Reading test data file.\n");
    testset = read_points("testset.dat", tcount, cols);
    
    nn = 3;
    result = (int*) malloc(tcount*nn*sizeof(int));
    dists = (float*) malloc(tcount*nn*sizeof(float));
    
    p = DEFAULT_FLANN_PARAMETERS;
    p.algorithm = FLANN_INDEX_KDTREE;
    p.trees = 8;
    p.log_level = FLANN_LOG_INFO;
	p.checks = 64;
    
    printf("Computing index.\n");
    index_id = flann_build_index(dataset, rows, cols, &speedup, &p);
    flann_find_nearest_neighbors_index(index_id, testset, tcount, result, dists, nn, &p);
    
    write_results("results.dat",result, tcount, nn);
    
    flann_free_index(index_id, &p);
    free(dataset);
    free(testset);
    free(result);
    free(dists);
    
    return 0;
}
コード例 #6
0
NearestNeighborFLANN::~NearestNeighborFLANN() {
	flann_free_index(index_id, &parameters);
}