void MultiviewRecognizerWithChangeDetection<PointT>::reconstructionFiltering(typename pcl::PointCloud<PointT>::Ptr observation, pcl::PointCloud<pcl::Normal>::Ptr observation_normals, const Eigen::Matrix4f &absolute_pose, size_t view_id) { CloudPtr observation_transformed(new Cloud); pcl::transformPointCloud(*observation, *observation_transformed, absolute_pose); CloudPtr cloud_tmp(new Cloud); std::vector<int> indices; v4r::ChangeDetector<PointT>::difference(observation_transformed, removed_points_cumulated_history_[view_id], cloud_tmp, indices, param_.tolerance_for_cloud_diff_); /* Visualization of changes removal for reconstruction: Cloud rec_changes; rec_changes += *cloud_transformed; v4r::VisualResultsStorage::copyCloudColored(*removed_points_cumulated_history_[view_id], rec_changes, 255, 0, 0); v4r::VisualResultsStorage::copyCloudColored(*cloud_tmp, rec_changes, 200, 0, 200); stringstream ss; ss << view_id; visResStore.savePcd("reconstruction_changes_" + ss.str(), rec_changes);*/ std::vector<bool> preserved_mask(observation->size(), false); for (std::vector<int>::iterator i = indices.begin(); i < indices.end(); i++) { preserved_mask[*i] = true; } for (size_t j = 0; j < preserved_mask.size(); j++) { if (!preserved_mask[j]) { setNan(observation->at(j)); setNan(observation_normals->at(j)); } } PCL_INFO("Points by change detection removed: %d\n", observation->size() - indices.size()); }
Prediction::Prediction(const double &f,const double &s): value(f),low(setNan()),high(setNan()),se(s) { }
Prediction::Prediction(const double &f,const double &l, const double &h): value(f),low(l),high(h),se(setNan()) { }