具有精确的移动距离和方向变化如何填充OpenCV透视变换矩阵(disparity-to-depth)?
Having exact movement distances and orientation changes how to fill in OpenCV perspective transformation matrix (disparity-to-depth)?
假设我们有一个 robot\car\NPC\iPhone 带有摄像头视图。我们在 3d space 中控制它的所有动作。这是我们执行的算法:捕获帧; move\rotate 相机(保存位置和旋转差异:X, Y, Z
;aX, aY aZ
);捕获新帧;对 StereoBM
结果执行 StereoBM
. Now We want to perform opencv reprojectImageTo3D
。它需要一个 Q – 4 \times 4
透视变换矩阵。
我想知道平移和旋转差异(6 个浮点值)我们如何在没有任何图像处理的情况下得到 4 \times 4
透视变换矩阵?
如 reprojectImageTo3D
的文档所示,您可以从 stereoRectify
获得 4x4
透视变换 Q
。
但是,如果您想创建自己的矩阵,请查看 here to see how 3D transformations can be written in a 4x4
matrix (though note that they're using the usual mathematical form, which is transposed from what is typical in computer vision), and here 在 C++ 中使用正确转置的 OpenCV 示例。
基本上您需要编写三个单独的旋转矩阵和平移矩阵,然后将它们全部组合(通过乘法)以获得最终的 4x4
变换矩阵。
假设我们有一个 robot\car\NPC\iPhone 带有摄像头视图。我们在 3d space 中控制它的所有动作。这是我们执行的算法:捕获帧; move\rotate 相机(保存位置和旋转差异:X, Y, Z
;aX, aY aZ
);捕获新帧;对 StereoBM
结果执行 StereoBM
. Now We want to perform opencv reprojectImageTo3D
。它需要一个 Q – 4 \times 4
透视变换矩阵。
我想知道平移和旋转差异(6 个浮点值)我们如何在没有任何图像处理的情况下得到 4 \times 4
透视变换矩阵?
如 reprojectImageTo3D
的文档所示,您可以从 stereoRectify
获得 4x4
透视变换 Q
。
但是,如果您想创建自己的矩阵,请查看 here to see how 3D transformations can be written in a 4x4
matrix (though note that they're using the usual mathematical form, which is transposed from what is typical in computer vision), and here 在 C++ 中使用正确转置的 OpenCV 示例。
基本上您需要编写三个单独的旋转矩阵和平移矩阵,然后将它们全部组合(通过乘法)以获得最终的 4x4
变换矩阵。