通过两个图像之间的姿势,如何将一个点从一个场景投射到另一个场景?

use*_*977 2 c opencv computer-vision

如果您有两个图像的完整相对3D值查看同一场景(相对x,y,z),以及它们之间的外在/内在参数,如何将点从一个场景投影到另一个场景,在opencv?

eta*_*ion 5

一般来说,你不能这样做.有无数个3D点(3d中的一条线)被映射到图像空间中的一个点,而在另一个图像中,这条线不会被映射到单个点,而是一条线(参见关于极线的维基百科文章)几何).您可以使用基本矩阵计算该点必须在的线.

如果您有深度贴图,请将该点重新投影到3D中 - 使用相机校准opencv页面顶部的公式,尤其是这一个(它是您需要的唯一一个):
相机方程式
u和v是你的像素坐标,第一个矩阵是你的相机矩阵(对于你当前看的图像),第二个矩阵是包含外在参数的矩阵,你知道Z(从你的深度图),X和Y是你正在寻找的 - 你可以解决这些参数,然后使用相同的方程将点投射到你的另一个相机.您可以使用opencv中的PerspectiveTransform函数为您完成工作,但是我无法从头脑中告诉您如何构建投影矩阵.