使用PCL检测矩形孔

时间:2019-01-13 10:41:02

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

使用PCL,我试图检测和定位大型钢框架中的矩形切口(下图为img): 现在,我使用的是凹面船体类,并且确实从矩形中获取了轮廓。但是,摄像机视图的外边界也随之变化。 我使用了直通滤镜来消除边界,但是这仅在特定情况下有效。 我要问的是,您碰巧知道有什么方法可以带来更好的结果吗?

对于孔,它们并不总是在相同的高度或位置。但是它们是标准尺寸(+/- 1厘米)。大小标准可以消除错误的检测。

enter image description here

这是一个凉亭模拟模型,并使用ROS从模拟Kinect捕获点云。

使用PCL,我使用了SAC平面分割,然后提取了凹壳。如图所示,相机视图的边缘也被视为凹面。 enter image description here

pcl::SACSegmentation<pcl::PointXYZ> segmentation;
segmentation.setOptimizeCoefficients (true);
segmentation.setModelType(pcl::SACMODEL_PLANE);
segmentation.setMethodType(pcl::SAC_RANSAC);
segmentation.setMaxIterations(1000);
segmentation.setDistanceThreshold(0.01);
segmentation.setInputCloud(cloud_ptr);//breytti
segmentation.segment(*inliers, *coefficients);

pcl::ConcaveHull<pcl::PointXYZ> chull;
chull.setInputCloud (cloud_projected);

chull.setAlpha (0.1);
chull.reconstruct (*cloud_hull, hullPolygons);

Eigen::Vector4f centroid;//new object for centroid calculation
pcl::PointXYZ minpt, maxpt;//min max boundary of new cloud
pcl::compute3DCentroid(*cloud_hull, centroid);
pcl::getMinMax3D(*cloud_hull,minpt,maxpt);

总而言之,寻找一种可靠的方法或想法来检测框架中的矩形切口。 谢谢

0 个答案:

没有答案