【问题标题】:Opencv4Android,stitching two imagesOpencv4Android,拼接两个图像
【发布时间】:2015-02-23 16:53:26
【问题描述】:

我必须拼接两个图像,我使用openCV4Android。我阅读了有关拼接图像的文档和一些线程,例如:Panorama – Image Stitching in OpenCVHomography between images using OpenCV for AndroidStitch multiple imagesError matching with ORB in Android 等。起初,看起来很简单。但是结果很奇怪!下面,你可以看到我用于测试和结果的两张图片:

这里是“image1”:

这是“image2”:

您可以看到绘制的特征:

这是扭曲image1的结果:

我做错了什么?还是我没听懂好?

【问题讨论】:

    标签: android opencv homography image-stitching opencv4android


    【解决方案1】:

    快速回答:

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

    更多细节:

    大图:

    当您拼接两张图像时,您假设存在一个仿射变换(您的“单应性”),它将一张图像的特征投影到另一张图像上。当您知道这种变换时,您就知道图像的相对位置,并且可以“将它们放在一起”。如果你发现的单应变换不好,那么拼接也不好。

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

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

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

    如果您查看“绘制的特征”,您会发现“Google”的“Go”部分和书签中的一些特征对应,而其他特征则有误。这意味着您的大多数匹配都是错误的,然后可以找到适用于该数据的单应性,但这是错误的。

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

    注意:使用“Panorama – Image Stitching in OpenCV”中使用的图像尝试您的代码

    【讨论】:

    • 看来你是对的!但是有没有更好的方法来找到更好的匹配?当你必须使用至少 80% 重叠的图像时,这是非常糟糕的。
    • 视情况而定。但在这种情况下,你有 10% 之类的东西,这还不够……
    • 你知道找到更好匹配的方法吗?谢谢。
    • 你总是会有一定比例的不匹配。你只需要足够好的匹配。在这种情况下,增加重叠...
    • 首先,感谢您的关注...。我尝试通过 features2d 绘制好的匹配,但它在运行时崩溃。我在这里询问:stackoverflow.com/questions/27699524/…你有关于这个问题有什么建议吗?
    猜你喜欢
    • 2012-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-06
    • 2011-08-26
    • 1970-01-01
    • 1970-01-01
    • 2013-02-02
    相关资源
    最近更新 更多