如何在opencv中找到图像之间的重叠区域?

我正在尝试使用两个图像实现alpha混合以进行图像拼接。 我的第一张照片是 – > 在此处输入图像描述

这是我的第二张图片 – > 在此处输入图像描述

这是我的结果图片 – > 在此处输入图像描述

你可以看到结果不合适。我想我首先必须找到之间的重叠区域,然后在重叠部分上实现alpha混合。

首先,您是否看到OpenCV 2.3中引入了一个新的“拼接”模块?

它提供了一组用于拼接管道的构建块,包括混合和“找到重叠”(例如注册)步骤。 这是一个文档: http : //docs.opencv.org/modules/stitching/doc/stitching.html和拼接应用程序的示例: stitching_detailed.cpp

我建议您研究此示例的代码,以便更好地理解详细信息。

关于重叠的发现,计算机视觉中有几种常见的方法:

  • 光流
  • 模板匹配
  • 特征匹配

对于你的情况,我推荐最后一个 – 它在照片上效果很好。 这种方法已经在OpenCV中实现 – 探索OpenCv源代码并了解cv::detail::BestOf2NearestMatcher工作原理。

我认为最常见的方法是SIFT,在两个图像中找到几个关键点,然后扭曲它们以获得结果。 看到这个

以下是关于SIFT和全景拼接的说明。