如何从 3d 对象文件中获取 3d 坐标

How to get 3d coordinates from a 3d object file.

本文关键字:3d 获取 坐标 文件 对象      更新时间:2023-10-16

我正在使用 3 个 ArUco 标记卡在 3D 头部模型上,以便在 C++ 中使用 OpenCV 进行姿势估计。我的姿态估计算法为我提供了相对于相机的平移,但我现在想知道标记相对于模型坐标系的坐标。因此,我使用3D扫描仪扫描了头部模型,并随身携带了对象文件和纹理文件。我的问题是获取标记相对于头部模型的坐标的最简单或最佳方法是什么。我应该使用OpenGL,Blender还是其他软件?寻找一些指示或建议。

听起来您有关于相机的标记坐标作为坐标系,因此坐标在"眼睛空间"或相机空间中。这是当您拥有相机位于原点的坐标时。

本文有一个精彩的图表,解释了不同的空间以及如何转换为不同的空间: http://antongerdelan.net/opengl/raycasting.html

如果你想要这些相同的坐标,但在模型空间中,你需要矩阵来让你进入那个空间。

在这种情况下,您将从眼睛/相机空间 ->模型空间出发,因此您需要将这些坐标乘以逆视图矩阵,然后再乘以逆模型矩阵。然后,您的坐标将位于模型空间中。

但是,当您使用物理相机而不是软件相机(例如在OpenGL中(时,这要困难得多。 为此,您需要使用 OpenCV 来获取相机的固有和外在参数。 有关更多详细信息,请参阅本教程: https://docs.opencv.org/3.1.0/dc/dbb/tutorial_py_calibration.html