将点的位置从一个视角转换为另一个视角

时间:2012-09-27 09:14:58

标签: opencv transform javac perspective

我正在尝试将使用自由移动的相机(局部空间)拍摄的点的位置转换为同一场景(全局空间)的图像中的位置。点的位置在局部空间中给出,我需要在全局空间中计算它。我在整个场景中分布了标记,以便在全局和局部空间中都有相应的点来计算透视变换。

我尝试通过在JavaCV(cvGetPerspectiveTransform(localMarker,globalMarker,mmat))的帮助下比较gloabl和local space中相应标记的点来计算透视变换矩阵。然后我借助透视变换矩阵(cvPerspectiveTransform(localFieldPoints,globalFieldPoints,mmat))转换局部空间中点的位置。

我虽然这足以解决我的问题,但它并不能很好地解决问题。我还注意到,当我在视频的一个特定图像中计算不同标记的透视变换矩阵时,我得到了不同的透视变换矩阵。如果我理解一切正确,这不应该发生,因为这里的视角总是相同的,所以我应该总是得到相同的透视变换矩阵,不应该吗?

因为我对这一切都很陌生,这是我的第一次尝试,我只是想知道我使用的方法是否正确或是否应该以不同的方式完成?也许我只是错过了什么?

编辑:

同样,我有一张我看过的完整场景的图像和一张在场景中自由移动的卡马拉的视频。现在我拍摄视频的每个图像并将其与整个场景的图像进行比较(我使用不同的相机来制作图像和视频,因此相机内在函数实际上并不相同。这可能是问题吗?

Perspective Transform Screenshot

在严格的一面,我有场景的图像,在左边的一个图像的视频。左视频图像中的红色圆圈是给定点。在透视变换的帮助下,右图中的红色正方形是计算出的点。如您所见,计算出的点不在正确的位置。

我对“我得到不同的透视变换矩阵”的意思是,当我在标记“0E3E”的帮助下计算透视变换矩阵时,我得到的矩阵不同于使用标记“0272”。

0 个答案:

没有答案
相关问题