gpt4 book ai didi

opencv - 使用 OpenCV (Python) 拼接多个图像

转载 作者:太空宇宙 更新时间:2023-11-03 20:38:54 25 4
gpt4 key购买 nike

您已经看过很多教程如何使用两张照片进行简单的图像拼接,这没问题。
但是当我想从 4-6 张或更多图像制作全景图时该怎么办?

我有接收图像文件列表的代码(图像按顺序从序列中的第一张图像到最后一张)。然后为每个图像计算 SIFT 特征描述符.但是后来我被困住了,对于两个图像,我会使用 FLANN kd-tree 设置一个匹配器并找到图像之间的匹配并计算单应性。类似于本教程http://docs.opencv.org/trunk/doc/py_tutorials/py_feature2d/py_feature_homography/py_feature_homography.html#py-feature-homography

但我没有在最后显示特征点之间的线,而是使用了这个 https://stackoverflow.com/a/20355545/622194从 2 张图像制作全景图的功能。但是当我想将第三张和第四张图像添加到全景图时,我不确定该怎么做。

编辑:

根据答案,我尝试实现我的图像拼接脚本来计算图像序列中相邻图像之间的单应矩阵。所以如果我有 I1 I2 I3 和 I4,我现在有 H_12、H_23 和 H_34。然后我开始使用 H_12 拼接 I1 和 I2。然后我想找到累积单应性以将 I3 拼接到当前全景图。我使用 H_13 = H_12*H_23 并将图像 3 拼接到当前全景图,但在这里我的全景图像中出现了非常明显的间隙,当拼接下一张图像时,间隙甚至更大,图像非常拉伸(stretch)。

任何人都可以告诉我我是否使用了正确的方法,或者有人可以发现错误或看到我做错了什么。

最佳答案

一步一步,假设要拼接四张图片I0, I1, I2, I3,你的目标是计算单应性 H_0, H_1, H_2, H_3;

  1. 计算所有成对单应性H_01H_02H_03H_12H_13H_23,其中单应性 H_01 将图像 I0 变形为 I1,等等...
  2. 选择一张 anchor 图片,例如I1 哪个位置将保持固定,即 H_1 = Identity
  3. 根据最大数量找到与 I1 更好对齐的图像一致的匹配,例如I3
  4. 更新H_3 = H_1 * inv(H_13) = inv(H_13) = H_31
  5. 找到与 I1I3 更匹配的图像,例如 I2 匹配 I3
  6. 更新H_2 = H_3 * H_23
  7. 同上图 I0
  8. 进行束调整以全局优化对齐

参见这篇开创性论文的第 4 部分 Automatic Panoramic Image Stitching using Invariant Features以获得深入的解释。

关于opencv - 使用 OpenCV (Python) 拼接多个图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24563173/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com