| 17 | } |
| 18 | |
| 19 | void GrorPre::issKeyPointExtration(pcl::PointCloud<pcl::PointXYZ>::Ptr cloud, pcl::PointCloud<pcl::PointXYZ>::Ptr ISS, pcl::PointIndicesPtr ISS_Idx, double resolution) |
| 20 | { |
| 21 | double iss_salient_radius_ = 6 * resolution; |
| 22 | double iss_non_max_radius_ = 4 * resolution; |
| 23 | //double iss_non_max_radius_ = 2 * resolution;//for office |
| 24 | //double iss_non_max_radius_ = 9 * resolution;//for railway |
| 25 | double iss_gamma_21_(0.975); |
| 26 | double iss_gamma_32_(0.975); |
| 27 | double iss_min_neighbors_(4); |
| 28 | int iss_threads_(1); //switch to the number of threads in your cpu for acceleration |
| 29 | |
| 30 | pcl::search::KdTree<pcl::PointXYZ>::Ptr tree(new pcl::search::KdTree<pcl::PointXYZ>()); |
| 31 | pcl::ISSKeypoint3D<pcl::PointXYZ, pcl::PointXYZ> iss_detector; |
| 32 | |
| 33 | iss_detector.setSearchMethod(tree); |
| 34 | iss_detector.setSalientRadius(iss_salient_radius_); |
| 35 | iss_detector.setNonMaxRadius(iss_non_max_radius_); |
| 36 | iss_detector.setThreshold21(iss_gamma_21_); |
| 37 | iss_detector.setThreshold32(iss_gamma_32_); |
| 38 | iss_detector.setMinNeighbors(iss_min_neighbors_); |
| 39 | iss_detector.setNumberOfThreads(iss_threads_); |
| 40 | iss_detector.setInputCloud(cloud); |
| 41 | iss_detector.compute(*ISS); |
| 42 | ISS_Idx->indices = iss_detector.getKeypointsIndices()->indices; |
| 43 | ISS_Idx->header = iss_detector.getKeypointsIndices()->header; |
| 44 | |
| 45 | } |
| 46 | |
| 47 | void GrorPre::fpfhComputation(pcl::PointCloud<pcl::PointXYZ>::Ptr cloud, double resolution, pcl::PointIndicesPtr iss_Idx, pcl::PointCloud<pcl::FPFHSignature33>::Ptr fpfh_out) |
| 48 | { |
nothing calls this directly
no test coverage detected