实现原理比较简单,利用线性特征值来筛选电力线点云。
std::shared_ptr<PointCloud> PointCloud::PowerLineSegmentation(double threshold, double scale, double radius)
{
Eigen::Vector3d max = GetMaxBound();
Eigen::Vector3d min = GetMinBound();
double ratio = (max.z() - min.z()) / scale + min.z();
PointCloud newPcd;
#pragma omp parallel for schedule(static)
for (int i = 0; i < (int)m_points.size(); ++i)
{
if (m_points[i].z() > ratio)
{
#pragma omp critical
{
newPcd.m_points.push_back(m_points[i]);
newPcd.m_colors.push_back(m_colors[i]);
}
}
}
KdTree kdtree;
kdtree.SetGeometry(newPcd);
Eigen::SelfAdjointEigenSolver<Eigen::Matrix3d> es;
std::vector<double> linear(newPcd.m_points.size());
#pragma omp parallel for
for (int i = 0; i < (int)newPcd.m_points.size(); ++i)
{
std::vector<int> indices;
std::vector<double> distance2;
kdtree.Sear

最低0.47元/天 解锁文章
4684

被折叠的 条评论
为什么被折叠?



