swh:1:snp:e19303b5caf9fb6e591d1d985f0767020645282b
Tip revision: 48149026cf02a353ab8abee7a8420d4196a9ad38 authored by Moye-mio on 06 April 2024, 16:36:01 UTC
Update README.md
Update README.md
Tip revision: 4814902
OutlierDetector.cpp
#include "pch.h"
#include "OutlierDetector.h"
#include <pcl/filters/statistical_outlier_removal.h>
using namespace core;
bool COutlierDetecter::run(const PC_t::Ptr& vCloud, int k, float vThres) {
_EARLY_RETURN(vCloud->empty(), "Cloud is empty.", false);
pcl::PointCloud<pcl::PointXYZ>::Ptr pCloud(new pcl::PointCloud<pcl::PointXYZ>);
auto extractPositions = ([=](const PC_t::Ptr& vCloud, pcl::PointCloud<pcl::PointXYZ>::Ptr& voCloud) {
for (const auto& p : *vCloud) {
voCloud->emplace_back(pcl::PointXYZ(p.x, p.y, p.z));
}
}
);
extractPositions(vCloud, pCloud);
pcl::StatisticalOutlierRemoval<pcl::PointXYZ> Detecter;
Detecter.setInputCloud(pCloud);
Detecter.setMeanK(k);
Detecter.setStddevMulThresh(vThres);
Detecter.filter(m_Inliers);
Detecter.setNegative(true);
Detecter.filter(m_Outliers);
std::cout << "Inliers size: " << m_Inliers.size() << ", Outliers size: " << m_Outliers.size() << std::endl;
return true;
}