在开放 CV 中使用单应性从同一场景的同一相机拍摄的两个图像之间的视图映射,除了相机位置不平行

问题描述

我试图理解同一场景的两个图像之间的映射点,但相机位置不同。像这样说

approximate camera position

为草图和手写道歉。取自 cam1

camera1 capture

的示例图像和取自 cam2

camera2 capture

的示例图像。试图在这两个图像之间进行映射。因为使用的两个相机是相同的(罗技相机)。我假设不需要相机校准。因此,在 SIFT 描述符和特征匹配的帮助下,使用来自图像的良好匹配作为具有 RANSAC 的 Homography 的输入。我得到 3*3 矩阵。验证视图映射。我在 cam1 图像中选择了几个对象(比如图像中的 bin),并尝试通过使用 warp_perspective 使用 3 * 3 矩阵在 cam2 图像中映射相同的对象,但输出效果不佳。说这样的事情

view map output

选择了 cam1 图像(即垃圾箱)中对象的左上角和右下角,并尝试为 cam2 图像中的所需对象绘制边界框。 但是在视图映射输出图像中可以看到,边界框不适合垃圾箱。

想了解,我哪里出错了。是否是相机位置影响,这不应该用于单应性或必须使用多个单应性或必须了解相机位置之间的转换。很困惑。谢谢。

解决方法

Homography 将平面转换为平面。仅当所有匹配都位于现实世界中的平面上(例如在平面墙上)或特征点远离两个相机时才能使用它,因此相机之间的转换可能表示为纯旋转。请参阅此 link 以获取进一步说明。

在您的情况下,对象位于不同的深度,因此您需要执行 stereo calibration 个摄像头,然后计算 depth map 才能将像素从一个摄像头映射到另一个摄像头。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...