【发布时间】:2020-11-23 16:56:52
【问题描述】:
我愿意为6个鱼眼相机进行360°全景拼接。
为了找到相机之间的关系,我需要计算单应矩阵。后者通常是通过在图像中找到特征并匹配它们来计算的。
但是,对于我的相机设置我已经知道:
- 相机内在矩阵 K,我通过相机校准计算得出。
- 外在相机参数 R 和 t。相机方向是固定的,在任何时候都不会改变。摄像头位于一个已知直径 d 的圆上,每个摄像头都相对于该圆偏移 60°。
因此,我认为我可以手动计算 Homography Matrix,我认为这会产生比执行特征匹配更准确的方法。
在文献中,我发现了以下公式来计算将图像 2 与图像 1 相关联的单应矩阵:
H_2_1 = (K_2) * (R_2)^-1 * R_1 * K_1
这个公式只考虑了相机之间的旋转角度,而不是我的例子中存在的平移向量。
如何将每个相机的平移 t 插入 H 的计算中?
我已经尝试在不考虑平移的情况下计算 H,但是由于 d>1 米,图像在全景图片中对齐不准确。
编辑:
根据下面弗朗切斯科的回答,我得到了以下问题:
-
校准鱼眼镜头后,我得到一个焦距为
f=620的矩阵K,图像尺寸为1024 x 768。这被认为是大焦距还是小焦距? -
我的相机位于直径为 1 米的圆圈上。下面的解释让我很清楚,由于相机之间的这种“大”平移,我对相对靠近它们的物体产生了显着的重影效果。因此,如果 Homography 模型不能完全表示相机的位置,是否可以使用其他模型,例如 Fundamental/Essential Matrix 进行图像拼接?
【问题讨论】:
-
没有绝对意义上的“大”或“小”,这取决于你想看的场景中的物体有多远。 2 * atan(512/620) ~ 100deg,你确定这些镜头是鱼眼镜头吗?除了简单的单应性之外,当然可以使用其他模型进行缝合。您可能需要查看 panotools 软件
-
@FrancescoCallari 我的相机与下图(上图)upload.wikimedia.org/wikipedia/commons/2/2c/Panotools5618.jpg 的视图相似。我从使用 OpenCV 的鱼眼相机校准示例代码计算的 K 矩阵中获得了这些焦距值,它们不是鱼眼相机所期望的吗?我正在开发一个实时拼接器,我主要使用 OpenCV。你能告诉我还有哪些其他模型可以代表翻译吗?所以我可以对它们进行一些研究,再次感谢!
-
我有一个类似的应用程序。你是否让它与 OpenCV 一起工作?
-
@CaryH 是的,我做到了,但是我不得不坚持使用 Homography 矩阵并忍受我的系统已经设计的重影。翻译不能插在那里。为避免重影,请尝试使用接缝查找和多波段混合等其他方法(在 OpenCV 中可用)。
标签: computer-vision homography image-stitching 360-panorama projective-geometry