【问题标题】:Finding duplicated images with scaling or other small changes?查找具有缩放或其他小变化的重复图像?
【发布时间】:2016-10-11 17:25:58
【问题描述】:

我有一组小尺寸的精灵,通常是 25x20 的大小,不超过 256x256。其中一些精灵通过稍微缩小而被复制,或者有时几个像素被删除/添加到边缘,或者一种颜色发生了变化。

如何找到这些重复项?我的应用程序是用 C++ 编写的,我的图像是 SDL_Surfaces*'es。

我附上了几个示例精灵表,显示了我正在尝试比较和消除重复的精灵类型。

这是一张更清楚地显示了我想要比较的图像,因为我认为有些人感到困惑并认为我想比较“整个精灵表”,而实际上我只想将各个精灵相互比较:

【问题讨论】:

  • 看起来很痛苦。理论上,OpenCV 的模板匹配应该可以工作。 docs.opencv.org/2.4/doc/tutorials/imgproc/histograms/…
  • 嗯,为什么投反对票?网上几乎没有关于如何做到这一点的信息
  • 缺乏在线信息不会使您的帖子好,甚至不适合 SO。在目前的形式中,询问 “我想做 X 我该怎么做” 太宽泛了。
  • 这些不仅是缩放的,而且是旋转的,它们到处都是:你在寻找相似之处
  • 每个像素“岛”都是一个精灵,它们不会旋转

标签: c++ image-processing sdl-2


【解决方案1】:

请阅读我在Open CV tic tac toe X / O detection 上的回答。接受的答案也可能会有所帮助。

我对您的情况的回答:可以使用 OpenCV 中的 Match Shapes 函数来完成(检查Documentation 中的第 3 节)

因此,对于每个图像,获取最大轮廓(您的对象)并使用 ALL 其他图像调用该函数。该函数为与两个轮廓之间的相似性相对应的每对图像返回一个从 0 到 1 的值:值越小,轮廓越相似。您可以设置一定的阈值来消除其他图像(例如消除所有相似度为 0.5 的图像)。反复试验可能是找到最佳阈值的唯一方法。祝你好运!

【讨论】:

    猜你喜欢
    • 2012-09-24
    • 1970-01-01
    • 2016-05-24
    • 2014-01-10
    • 2012-01-24
    • 1970-01-01
    • 1970-01-01
    • 2011-06-05
    • 2020-05-12
    相关资源
    最近更新 更多