如何在点云中找到任何对象的角点并以英寸/厘米/米为单位找到角点之间的距离?

Posted

技术标签:

【中文标题】如何在点云中找到任何对象的角点并以英寸/厘米/米为单位找到角点之间的距离?【英文标题】:How to find corner points of any object in point cloud and find distance between corner points in inch/cm/m? 【发布时间】:2015-10-27 06:49:03 【问题描述】:

我们正在创建一个应用程序,用于使用 Project tango Device 计算任何窗户/门的测量值。为此,我们需要遵循以下提到的步骤: 1. 捕获图像(普通 2D 图像)。存储此图像。 2. 抓图的同时也抓点云。将点云存储在 PCD 文件中。 3. 通过在图像上绘制一个矩形来指示窗口/门在画布上显示的图像中的位置。见图片。 4. 绘制矩形时,使用存储的 PointCloud 数据自动计算窗户/门的宽度和高度。

我们已经成功完成了 1、2 和 3。

对于 4,我们有两个问题: A. 确定点云中对应绘制矩形的点,即窗/门。我们认为这涉及确定窗户/门所在的平面,例如假设沿深度的轴(即从相机到对象)是 Z 轴,那么我们需要确定与 PointCloud 中窗户/门所在平面相对应的 Z 值。如何才能做到这一点?请问有人可以提出一种可行且有效的方法吗?

B.一旦我们确定了与绘制的矩形相对应的子点云,找到沿 X 和 Y 轴的最小和最大点之间的距离,分别确定宽度和高度。如何才能做到这一点?

感谢任何有关演示代码或应用参考的帮助。enter image description here

enter image description here

【问题讨论】:

【参考方案1】:

找到点云的轮廓。使用迭代 ransac 将线条拟合到轮廓。相交线得到角点

对于 3d,计算表面法线。然后计算曲率,它是表面法线的微分。这些是角点。

PCL(点云库)具备所有这些功能。

【讨论】:

以上是关于如何在点云中找到任何对象的角点并以英寸/厘米/米为单位找到角点之间的距离?的主要内容,如果未能解决你的问题,请参考以下文章

如何像matlab一样检测opencv中的角点?

图像配准----RANSAC

使用 OpenCV C++ 从黑白图像中提取四边形的角(极端角点)

如何使用Bresenham创建任意厚度的线?

图像的角点简介

OpenCV亚像素级的角点检测