【发布时间】:2017-01-16 14:43:31
【问题描述】:
我看到很多人问类似的问题,但我无法完全匹配我的问题的任何答案
我有标记,我在图像坐标中得到它的 (x,y)。我可以得到变换矩阵和旋转矩阵。现在如何获取 (x,y,z) 坐标?
(如果有人能建议我如何解决我的问题或重定向我将不胜感激)。
编辑:我使用 Alvar 库,我在其中获取标记坐标,并且还可以获得它的姿势(所以我也有 3x3 的旋转矩阵和 3x4 或 4x4 的平移矩阵)
编辑 2:我进行了更多搜索,并研究了允许我获取旋转和平移矩阵的方法。好吧,我假设我可以得到两个矩阵,这取决于输入参数。但是如果我将 3x3 矩阵设置为参数,我将只有旋转矩阵,但如果我放在那里 3x4 或 4x4 矩阵,我会得到:
适用于 4x4
| r0 r1 r2 t1 |
| r3 r4 r5 t2 |
| r6 r7 r8 t3 |
| 0 0 0 1 |适用于 3x4
| r0 r1 r2 t1 |
| r3 r4 r5 t2 |
| r6 r7 r8 t3 |
【问题讨论】:
-
将solvePnP中的对象点乘以旋转和平移的合成变换...
-
好的,我想我明白了,但我想确定一下。我不使用solvePnP。我使用其他库得到 (x,y) 。我在图像坐标(像素)中有(x,y)坐标。然后我应该将此点乘以倒转旋转矩阵。然后我应该减去:R^-1 * t。如果我认为我的原始坐标应该是齐次坐标?我说的对吗?
-
不要变换点,变换对象的基本 3D 点(例如重心)。也许我们谈论不同的事情,你能在你的问题中说你有什么,你指的是哪种旋转和平移以及你是如何计算它们的?
-
二维点是在图像平面上定义的,所以首先你应该标准化的扭曲点坐标(它不依赖于相机矩阵,参见
cv::undistortPoints(...))。然后你可以通过投影矩阵的逆将这个归一化点转换为世界:[R^T|-R^T*t]。 -
@Kornel - 顺便说一句,如果我有 3x3 的旋转矩阵和 3x4 或 4x4 的平移,我不必将坐标更改为齐次? (匹配矩阵的大小)