具有精确的移动距离和方向变化如何填充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, ZaX, 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 变换矩阵。