我必须缝合两张图片并使用openCV4Android
。我阅读了关于缝合图像的文档和一些线索,例如:Panorama – Image Stitching in OpenCV,Homography between images using OpenCV for Android,Stitch multiple images, Error matching with ORB in Android和其他人。首先,它似乎很容易。但结果很奇怪!下面,您可以看到我用于测试和结果的两个图像:
这是“image1”:
这是“image2”:
您可以看到绘制的功能:
这是翘曲image1
:
我做错了什么?或者可能是我不理解?
答案 0 :(得分:1)
我会说你的图像之间没有足够的重叠。如果你看一下你的比赛(你所说的"绘制的功能"),大多数都是错的。作为第一个测试,尝试缝合两个具有80%重叠的图像。
当你缝合两张图像时,你会认为存在一个仿射变换(你的"单应性"),它会将一个图像的特征投影到另一个图像上。当你知道这个变换时,你就知道你的图像的相对位置,你可以把它们放在一起#34;。如果你发现的单应变换是坏的,那么拼接也会很糟糕。
FeatureDetector
)。DescriptorExtractor
)。基本上,这会创建您的功能的表示,以便您可以比较两个功能并查看它们的相似程度。DescriptorMatcher
)功能与第二张图片中的功能相匹配。这意味着对于第一张图像中的每个特征,您尝试在第二张图像中找到最相似的特征。这些是你的"绘制的功能"。如果你看一下你的"绘制的功能",你会发现" Go" " Google"的一部分当其他人错了时,一些在boorkmarks中对应。这意味着你的大多数匹配都很糟糕,然后它就可以找到适用于这些数据的单应性,但这是错误的。
为了获得更好的单应性,你需要更多的"好"火柴。因此,您可能需要在图像之间存在更多重叠。
注意:使用" Panorama – Image Stitching in OpenCV"
中使用的图片尝试使用您的代码