Python 由单应矩阵求本质矩阵

Python 由单应矩阵求本质矩阵,python,opencv,homography,Python,Opencv,Homography,在我的Python/OpenCV代码中,我使用随机同音字来模拟视点变化(我正在评估兴趣点检测器,希望避免搜索图像对) 有没有可能计算出一幅图像与其扭曲版本之间的极线和基本矩阵?我仅有的信息是我应用的单应性 还有其他一些帖子和我的问题有点相关:,,但我不知道如何做单应矩阵->基本矩阵 如果我想做的没有意义,请告诉我为什么 谢谢我认为您不需要基本矩阵:“基本矩阵包含与基本矩阵相同的信息,此外还包含关于两个摄像头的本质的信息,以便我们可以在像素坐标中关联两个摄像头。” 可以帮助您了解如何从单应性计算极

在我的Python/OpenCV代码中,我使用随机同音字来模拟视点变化(我正在评估兴趣点检测器,希望避免搜索图像对)

有没有可能计算出一幅图像与其扭曲版本之间的极线和基本矩阵?我仅有的信息是我应用的单应性

还有其他一些帖子和我的问题有点相关:,,但我不知道如何做单应矩阵->基本矩阵

如果我想做的没有意义,请告诉我为什么


谢谢

我认为您不需要基本矩阵:“基本矩阵包含与基本矩阵相同的信息,此外还包含关于两个摄像头的本质的信息,以便我们可以在像素坐标中关联两个摄像头。”

可以帮助您了解如何从单应性计算极线。首先,您需要找到几个点来输入cv.findFundamentalMat。这些点可以从单应矩阵计算-只需取八个或更多随机点(
pts1
)并将单应矩阵应用于它们(
pts2

最后,您可以从相应的图像中找到epilines参数:

epilines1 = cv.computeCorrespondEpilines(pts2.reshape(-1,1,2), 2, F)
epilines2 = cv.computeCorrespondEpilines(pts1.reshape(-1,1,2), 1, F)

您认为可以通过这种方式生成立体图像对的假设是有缺陷的。

您需要两个具有不同投影中心的图像(即相机必须移动)

应用于现有图像的二维单应不会更改投影中心。可以模拟围绕摄影机中心的三维旋转,而不是平移

直观地说,要定义极线几何体,您需要一个基线。基线通过两个摄影机中心。如果有两个具有相同摄影机中心的图像,则不定义基线。您无法从这些图像中获得视差或深度信息。设置中既没有定义基本矩阵,也没有定义基本矩阵

从数学上看,考虑到你的投影矩阵P的1D零空间在均匀坐标

中给出了相机中心C。
C=null(P)

现在对于扭曲的图像,您仍然有

H*P*C = H*0 = 0
同一个摄像机中心

P*C = 0
H*P*C = H*0 = 0