c++ - 在 3D 坐标系中查找矩形中的角度点

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

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

pcl pcl pcl pcl

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

最佳答案

这只是一个想法,还没有经过验证的方法。

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

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

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

关于c++ - 在 3D 坐标系中查找矩形中的角度点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15277999/

相关文章:

c++ - 以下递归程序的最后一行是如何工作的?

3d - 将 3d 4x4 旋转矩阵转换为 2d

.net - 3D 世界中最通用的轴方向是什么?

c++ - 应该如何编写 binding.gyp 以使用 OpenNI 构建 Node.js 插件?

opencv - OpenNI RGB 图像到 OpenCV BGR IplImage 的转换?

ubuntu - 使用kinect时需要root权限

c++ - 是否可以组合对称代码段?

c++ - 使用Levenshtein距离算法建议匹配的字符串太慢

3d - 如何在 A 型框架中启用加法混合?

c++ - 我如何将多态属性与 boost::spirit::qi 解析器一起使用?