我必须缝合两个图像并且我使用openCV4Android
。我阅读了有关缝合图像的文档和一些线程,例如:全景 - OpenCV 中的图像拼接,使用 Android 的OpenCV的图像之间的单应性,缝合多个图像,与 Android 中的 ORB 匹配错误和其他。起初,这似乎很容易。但结果很奇怪!下面,您可以看到我用于测试和结果的两张图像:
这是“图像1”:
这是“image2”:
您可以看到绘制的特征:
这是翘曲的结果image1
:
我做错了什么?或者可能是我没有理解好?
我必须缝合两个图像并且我使用openCV4Android
。我阅读了有关缝合图像的文档和一些线程,例如:全景 - OpenCV 中的图像拼接,使用 Android 的OpenCV的图像之间的单应性,缝合多个图像,与 Android 中的 ORB 匹配错误和其他。起初,这似乎很容易。但结果很奇怪!下面,您可以看到我用于测试和结果的两张图像:
这是“图像1”:
这是“image2”:
您可以看到绘制的特征:
这是翘曲的结果image1
:
我做错了什么?或者可能是我没有理解好?
我会说你的图像之间没有足够的重叠。如果你查看你的匹配项(你称之为“绘制的特征”),它们中的大多数都是错误的。作为第一个测试,尝试拼接两个具有 80% 重叠的图像。
当您拼接两张图像时,您假设存在一个仿射变换(您的“单应性”),它将把一张图像的特征投影到另一张图像上。当您知道这种变换时,您就知道图像的相对位置,并且可以“将它们放在一起”。如果您发现的单应变换不好,那么拼接也会不好。
FeatureDetector
两个图像上的特征(使用您的 )。DescriptorExtractor
)。基本上,这会创建您的特征的表示,以便您可以比较两个特征并查看它们的相似程度。DescriptorMatcher
您将第一张图像中的特征与第二张图像中的特征进行匹配(使用您的)。这意味着对于第一张图像中的每个特征,您都尝试在第二张图像中找到最相似的特征。这些是您的“绘制特征”。如果您查看您的“绘制的特征”,您会发现“Google”的“Go”部分只有少数几个和书签中的一些对应,而其他的却是错误的。这意味着您的大多数匹配都是错误的,然后可以找到适用于该数据的单应性,但这是错误的。
为了获得更好的单应性,您需要更多的“好”匹配。因此,您可能需要在图像之间有更多的重叠。
注意:使用“全景图 - OpenCV 中的图像拼接”中使用的图像尝试您的代码