获得飞机的角点

时间:2015-10-13 06:40:10

标签: c++ point-cloud-library point-clouds

基于本教程: http://pointclouds.org/documentation/tutorials/planar_segmentation.php

我按照教程

中的说明对我的飞机进行了分段
pcl::ModelCoefficients::Ptr coefficients (new pcl::ModelCoefficients);
pcl::PointIndices::Ptr inliers (new pcl::PointIndices);   // Create the segmentation object  
pcl::SACSegmentation<pcl::PointXYZ> seg;   // Optional  
seg.setOptimizeCoefficients (true);   // Mandatory   
seg.setModelType(pcl::SACMODEL_PLANE);
seg.setMethodType (pcl::SAC_RANSAC);  
seg.setDistanceThreshold (0.01);
seg.setInputCloud (cloud);   
seg.segment (*inliers, *coefficients);

if (inliers->indices.size() == 0) {
   PCL_ERROR ("Could not estimate a planar model for the given dataset.");
   return (-1);  
}

std::cerr << "Model coefficients: " << coefficients->values[0] << " " 
                      << coefficients->values[1] << " "
                      << coefficients->values[2] << " " 
                      << coefficients->values[3] << std::endl;

现在,我想知道是否有办法获得角点。或者,如果PCL中有这样的方法吗?

如果没有,我该如何解决这个问题。

1 个答案:

答案 0 :(得分:1)

当您在点云中分割平面时,您会发现位于同一平面上的点;输出不一定是矩形或正方形;所以角落可能根本不存在。

你可以做的是创建一个多边形,但迭代点的外部点,构建一个多边形。看看2D hull PCL tutorial关于如何从一组平面上的点构建船体。

之后,您可以根据前一个和下一个向量估计多边形每个点的角度。注意角度大于180°的凹多边形!