在三维坐标系中找到矩形中的角度点

时间:2013-03-07 17:38:20

标签: c++ 3d openni point-cloud-library

我在3D中有一个点,它构成矩形的2或3边。我如何计算立方角的坐标?有可能吗?

pcl pcl pcl pcl

更新:https://github.com/CPIGroup/3d-Camera-scanDimensions

2 个答案:

答案 0 :(得分:1)

这只是一个想法,而不是一种经过验证的方法。

首先,找到飞机。随机选择3个点,找到通过它们的平面,对4个参数进行标准化。重复1000次左右。最终你会得到1000个4元组的数字。使用clustering analysis方法之一找到2或3组非常接近的4元组。平均每个组。这些大约是你盒子两侧的平面。

现在让它们更精确。对于每个平面,找到靠近它但不靠近其他平面的所有点(对于某些值“close”,也可能使用聚类方法找到)。对于每个这样的点组,使用least squares找到最合适的平面。

如果你有三架飞机,很棒;相交它们,你有一个顶点和三条边。对于两个平面,您只有一条边。无论哪种方式,您现在可以尝试找到其他边缘。为简单起见,请将平面视为XY平面,将已知边视为X轴。你现在需要找到最左边(最右边)的垂直线,这样大多数点都在它的左边(右边)。将所有点投影到X轴。你现在有一个原始问题的一维情况:某个区间有很多随机点,找到间隔。再次使用聚类方法。

答案 1 :(得分:1)

我对此并不熟悉,但可能你可以使用RANSAC? plane detection from pointclouds using RANSAC

上似乎有很多论文

您也可以查看Point Clouds Library(PCL)。这是一个非常令人印象深刻的项目,包含许多有用的功能,包括planar segmentation

一旦检测到飞机,就应该找到更简单的边缘/角落。