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

4
我正在尝试实现两张图片的alpha混合以进行图像拼接。第一张图片如下所示-> enter image description here 这是我的第二张图片-> enter image description here 这是我的结果图片-> enter image description here 您可以看到结果不太好。我认为我首先需要找到它们之间的重叠区域,然后在重叠部分实现alpha混合。
2个回答

4
首先,您看到了OpenCV 2.3中引入的新的“拼接”模块吗?
它提供了一组构建拼接流程的模块,包括混合和“查找重叠区域”(例如注册)步骤。这是文档:http://docs.opencv.org/modules/stitching/doc/stitching.html,这里有一个拼接应用的示例:stitching_detailed.cpp 我建议您学习此示例代码以更好地理解细节。
关于查找重叠区域,计算机视觉中有几种常见方法:
- 光流法 - 模板匹配 - 特征匹配
对于您的情况,我推荐最后一种方法 - 它在照片上效果非常好。而且这种方法已经在OpenCV中实现 - 探索OpenCV源代码,看看cv::detail::BestOf2NearestMatcher如何工作。

"图像配准"是计算机视觉领域的另一个术语,可能会很有用;它指的是将多个重叠的图像对齐的过程。 - Nate Kohl
我真的非常好奇你会如何在这里使用光流?光流应该在图像序列上工作... - CTZStef

1

我认为最常见的方法是SIFT,找到两张图片中的一些关键点,然后进行变形以获得结果。请参见this

这里有关于SIFT和全景拼接的解释。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接