我有 3D 点,它们构成矩形的 2 或 3 边。如何计算立方体角的坐标?可能吗?
这只是一个想法,而不是经过验证的方法。
首先,找到飞机。随机选择 3 个点,找到一个通过它们的平面,对 4 个参数进行归一化。重复 1000 次左右。你最终会得到 1000 个 4 元组的数字。使用其中一种聚类分析方法来查找 2 或 3 组非常接近的 4 元组。平均每个组。这些大约是您盒子侧面的平面。
现在让它们更精确。对于每个平面,找到靠近它但不靠近其他平面的所有点(对于“关闭”的某些值,也许也可以使用聚类方法找到)。对于每一组这样的点,使用最小二乘法找到一个最佳拟合平面。
如果您有三架飞机,那就太好了;相交它们,你有一个顶点和三个边。对于两个平面,你只有一个边。无论哪种方式,您现在都可以尝试找到其他边缘。为简单起见,将您的平面视为 XY 平面,将已知边视为 X 轴。您现在需要找到最左边(最右边)的垂直线,这样大部分点都在它的左边(分别是右边)。将所有点投影到 X 轴。你现在有一个原始问题的一维案例:在某个区间上有很多随机点,找到区间。再次使用聚类方法。
我对此不是很有经验,但是您可以使用 RANSAC 吗?似乎有很多关于使用 RANSAC 从点云进行平面检测的论文
您也可能想看看点云库(PCL)。这是一个非常令人印象深刻的项目,具有许多有用的功能,包括平面分割
一旦检测到平面,就应该找到边缘/角落,这应该简单得多。