【问题标题】:Compute Homography Matrix based on intrinsic and extrinsic camera parameters基于内在和外在相机参数计算单应矩阵
【发布时间】: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


【解决方案1】:

您不能“插入”翻译:它的存在以及非平凡的旋转在数学上意味着图像之间的关系不是单应性。

但是,如果成像场景距离相机“足够远”,即如果相机之间的平移与场景对象与相机的距离相比较小,并且相机的焦距足够小,那么你可以使用纯旋转诱导的单应性作为近似值。

你的等式是错误的。正确公式如下:

  • 在相机 1 中拍摄一个像素:p_1 = (x, y, 1) 在齐次坐标中
  • 将其反向投影到 3D 空间中的射线中:P_1 = inv(K_1) * p_1
  • 在摄像机 2 的坐标中分解射线:P_2 = R_2_1 * P1
  • 将光线投射到相机 2 的像素中:p_2 = K_2 * P_2
  • 将方程式放在一起:p_2 = [K_2 * R_2_1 * inv(K_1)] * p_1

乘积H = K2 * R_2_1 * inv(K1) 是(近似)单应性。旋转 R_2_1 将点从第 1 帧转换到第 2 帧。它是一个 3x3 矩阵,其列是在第 2 帧中分解的第 1 帧的 x、y、z 轴的分量。如果您的设置为您提供了所有摄像机的旋转对于一个共同的0帧,即R_i_0,则为R_2_1 = R_2_0 * R_1_0.transposed

一般来说,你应该使用上面的单应性作为初始估计,通过匹配点和优化来细化。这是因为 (a) 单应性模型本身只是一个近似值(因为它忽略了平移),并且 (b) 机械设置(即使是校准的)给出的旋转受到误差的影响。使用匹配的像素来优化转换将最大限度地减少图像上重要的错误,而不是抽象旋转空间中的错误。

【讨论】:

  • 非常感谢您的帮助,我根据您的回答编辑了我的帖子添加了 2 个新问题。
  • 如果我们将平移添加到相机外在矩阵,这不是有效的单应性吗?例如,[R|t] 其中R 是旋转矩阵,t 是平移向量?
  • 两个针孔相机相对于彼此旋转平移的视图与单应性无关。除了数学之外,您可以通过注意到在这种情况下您可以拥有具有自遮挡的场景对象来说服自己就是这种情况。例如,场景中的一个盒子可能有一张脸在一台相机中可见,而另一张则看不到。当相机进行纯旋转时,这是不可能的。
猜你喜欢
  • 2019-01-12
  • 2019-11-06
  • 2020-01-09
  • 2017-02-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多