diff --git a/examples/xyz_centers13.txt b/examples/xyz_centers13.txt new file mode 100644 index 0000000000000000000000000000000000000000..26df025c9cfe9d3858d349c28782216797f12001 --- /dev/null +++ b/examples/xyz_centers13.txt @@ -0,0 +1,13 @@ +-1.000000 -0.000000 -0.000000 +-0.707107 -0.707107 -0.000000 +-0.707107 -0.000000 -0.707107 +-0.707107 0.707107 0.000000 +-0.000000 -1.000000 -0.000000 +-0.000000 -0.707107 -0.707107 +-0.000000 -0.000000 -1.000000 +0.000000 0.707107 -0.707107 +0.000000 1.000000 0.000000 +0.707107 -0.707107 0.000000 +0.707107 0.000000 -0.707107 +0.707107 0.707107 0.000000 +1.000000 0.000000 0.000000 diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 664c569194d97a50480ccf26879fc5472ad01cd1..567fc3f5ab049f0cb6d07c6bddfc9e9db000c83d 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -8,6 +8,8 @@ include_directories(${PCL_INCLUDE_DIRS}) link_directories(${PCL_LIBRARY_DIRS}) add_definitions(${PCL_DEFINITIONS}) +SET(CMAKE_BUILD_TYPE "RELEASE") + # add the necessary include directories INCLUDE_DIRECTORIES(.) # application source files diff --git a/src/finddd_descriptor.cpp b/src/finddd_descriptor.cpp index eedbcfd3d8789748891bb6d64fced86ab9a61fe1..c4a52d71336b3fa4fcec54ec517a033453ab6503 100755 --- a/src/finddd_descriptor.cpp +++ b/src/finddd_descriptor.cpp @@ -279,7 +279,6 @@ FindddAlgorithm::FindddAlgorithm(FindddConfig new_cfg) // Main function to compute FINDDD descriptors void FindddAlgorithm::compute_ndescs_integral_spatial_interpolation(pcl::PointCloud<pcl::PointXYZ>& cloud, DescriptorSet &descriptor_set) { - clock_t start=clock(); if(this->verbose_level_>=2) { diff --git a/src/finddd_descriptor.hpp b/src/finddd_descriptor.hpp index ee4e2a889161bd95db15ceb0747e27fe04ae8ae4..258522b67435fa426f7ddd8441852a1e148e9f1d 100644 --- a/src/finddd_descriptor.hpp +++ b/src/finddd_descriptor.hpp @@ -306,42 +306,46 @@ protected: float num; getline(ifs, line); std::istringstream iss(line); + int i=0; do { iss >> num; this->pca_mean_.push_back(num); - }while(iss); + }while(!iss.eof()); } int dout=0; while (ifs.good()) { float num; - this->pca_matrix_.push_back(std::vector<float>()); getline(ifs, line); - std::istringstream iss(line); - do + //line.erase(line.find_last_not_of(" \n\r\t")+1); + if(line.size()>0) { - iss >> num; - this->pca_matrix_.back().push_back(num); - }while(iss); - if(dout==0) dout=this->pca_matrix_.back().size(); - else if(dout!=this->pca_matrix_.back().size()) - { - if(this->verbose_level_>=1) - std::cout<<"Not consistent PCA data."<<std::endl; - exit(-1); + this->pca_matrix_.push_back(std::vector<float>()); + std::istringstream iss(line); + do + { + iss >> num; + this->pca_matrix_.back().push_back(num); + }while(!iss.eof()); + if(dout==0) dout=this->pca_matrix_.back().size(); + else if(dout!=this->pca_matrix_.back().size()) + { + if(this->verbose_level_>=1) + std::cout<<"Not consistent PCA data. Previous PCA matrix row width: "<<dout<<". Current PCA matrix row width: "<<this->pca_matrix_.back().size()<<std::endl; + exit(-1); + } } } if(this->pca_mean_.size() != this->pca_matrix_.size()) { if (this->verbose_level_>=1) - std::cout<<"Not consistent PCA data."<<std::endl; + std::cout<<"Not consistent PCA data: mean vector size: "<<this->pca_mean_.size()<<" PCA matrix size: "<<this->pca_matrix_.size()<<"x"<<pca_matrix_[0].size()<<std::endl; exit(-1); } //matrix correctly loaded, transposing for ease of use later std::vector< std::vector<float> > PCA_t; PCA_t.resize(this->pca_matrix_[0].size(), std::vector<float>(this->pca_matrix_.size())); - for(int i=0;i<this->pca_matrix_[0].size();i++) for(int j=0;j<this->pca_matrix_.size();j++) {