Opencv 变换的基本矩阵

Opencv 变换的基本矩阵,opencv,computer-vision,Opencv,Computer Vision,我有两幅图像,它们具有已知的对应2D点、摄像机的内在参数和摄像机之间的3D变换。我想计算从一幅图像到另一幅图像的2D重投影误差 为此,我考虑从变换中得到一个基本矩阵,这样我就可以计算点与相应的极线之间的点到线距离。如何得到基本矩阵 我知道E=R*[t]和F=K^(-t)*E*K^(-1),其中E是基本矩阵,[t]是平移向量的斜对称矩阵。但是,如果运动是纯旋转(t=[0]),则返回空矩阵。我知道在这种情况下,单应比基本矩阵更好地解释运动,因此我可以比较平移向量的范数和一个小阈值,以选择基本矩阵或单

我有两幅图像,它们具有已知的对应2D点、摄像机的内在参数和摄像机之间的3D变换。我想计算从一幅图像到另一幅图像的2D重投影误差

为此,我考虑从变换中得到一个基本矩阵,这样我就可以计算点与相应的极线之间的点到线距离。如何得到基本矩阵

我知道
E=R*[t]
F=K^(-t)*E*K^(-1)
,其中
E
是基本矩阵,
[t]
是平移向量的斜对称矩阵。但是,如果运动是纯旋转(
t=[0]
),则返回空矩阵。我知道在这种情况下,单应比基本矩阵更好地解释运动,因此我可以比较平移向量的范数和一个小阈值,以选择基本矩阵或单应。有更好的方法吗?

“我想计算从一幅图像到另一幅图像的2D重投影误差。”

然后去计算一下。您的设置是经过校准的,因此除了已知的三维几何图形之外,您不需要任何其他东西。忘记极线误差吧,如果相机的运动(接近)是纯旋转,那么极线误差也可能是未定义的


以已知大小和形状的对象(例如棋盘)为例,从一个摄影机视图计算出其在三维空间中的位置(对于棋盘,您可以在其物理模型和投影之间拟合单应性,然后将其分解为[R | t])。然后根据摄像机的校准参数,将现在定位的3D形状投影到另一台摄像机中,并将投影与对象的实际图像进行比较。

如果旋转和平移都不为空,则单应性无法正确模拟运动。抱歉,我没有,但这是针对房间的图片。不过,结构应该不重要。哦!对不起,我没有正确阅读你的问题。。我删除了我的评论我在场景中有一些已知的3D结构,但我也有未知深度的2D点,当我计算重投影误差以检查[R | t]变换的质量时,我也想考虑这些点。我对后者很感兴趣。那么,你真的没有比束调整更好的了,用你校准的设置和已知的3d结构作为起点。我如何进行束调整来计算重投影误差?我已经知道3D变换了。或者你认为你知道:-)你捆绑在已知的3D结构上,再加上那些3D点,你在未知深度有2d投影