繁体   English   中英

Opencv4Android,拼接两个图像

[英]Opencv4Android,stitching two images

我必须缝合两个图像,然后使用openCV4Android 。我阅读了有关缝合图像的文档和一些主题,例如: Panorama – OpenCV中的图像缝合, 使用OpenCV for Android的图像之间的同形缝合多个图像Android中与ORB的错误匹配起初看起来很简单。但是结果很奇怪!下面,您可以看到两个用于测试和结果的图像:

这是“ image1”:

在此处输入图片说明

这是“ image2”:

在此处输入图片说明

您可以看到绘制的特征:

在此处输入图片说明

这是image1扭曲的结果:

在此处输入图片说明

我做错了什么?或者可能是我听不懂?

快速回答:

我会说您的图像之间没有足够的重叠。 如果您查看匹配项(您将其称为“绘制特征”),则大多数错误。 作为第一个测试,请尝试拼接两个具有80%重叠的图像。

更多细节:

大图:

拼接两个图像时,假定存在一个仿射变换(您的“单应性”),可以将要素从一个图像投影到另一个图像上。 当您知道此变换后,便知道图像的相对位置,可以将它们“放在一起”。 如果您发现的单应变换不正确,那么缝合也将不正确。

那么,我们如何找到单应变换?

  • 首先,您可以通过FeatureDetector检测两个图像上的特征。
  • 然后,您使用DescriptorExtractor描述它们。 基本上,这将创建您的要素的表示形式,以便您可以比较两个要素并查看它们之间的相似程度。
  • 您(使用DescriptorMatcher )将第一张图像中的特征与第二张图像中的特征进行匹配。 这意味着对于第一张图像中的每个功能,您都尝试在第二张图像中找到最相似的功能。 这些是您的“绘制特征”。
  • 从这些匹配中,您可以使用称为“ RANSAC”的算法来查找与您的数据相对应的单应性变换。 这个想法是,您尝试从所有“绘制的特征”中找到一组在几何上有意义的匹配项。

但是为什么它在这里不起作用?

如果您查看“绘制的功能”,您会看到“ Google”的“执行”部分中只有少数几个与布洛克标记中的一些相对应,而其他则有误。 这意味着您的大多数匹配都不正确,然后可以找到适用于此数据的单应性,但这是错误的。

为了获得更好的单应性,您将需要更多的“好”匹配。 因此,您可能需要在图像之间有更多的重叠。

注意:尝试将代码与“ 全景– OpenCV中的图像拼接 ”中使用的图像一起使用

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM