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

时间:2012-06-01 18:53:47

标签: c image-processing opencv computer-vision

我正在尝试使用两个图像实现alpha混合以进行图像拼接。 我的第一张照片是这个 - > enter image description here

这是我的第二张图片 - > enter image description here

这是我的结果图片 - > enter image description here

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

2 个答案:

答案 0 :(得分:4)

首先,你看过一个新的"拼接" OpenCV 2.3中引入的模块?

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

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

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

  • 光流
  • 模板匹配
  • 功能匹配

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

答案 1 :(得分:2)

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

Here是关于SIFT和全景拼接的解释。