代码之家  ›  专栏  ›  技术社区  ›  Elliot Nelson

使用ImageMagick获取图像的模糊散列

  •  0
  • Elliot Nelson  · 技术社区  · 6 年前

    我有很多图片,我用一个特定的模糊因子(比如10%)来比较它们,寻找匹配的图片。工作正常。

    但是,有时我想将所有图像与所有其他图像(例如1000个图像)进行比较。做5000多个ImageMagick比较太慢了。

    对所有文件进行散列并将散列值进行5000次比较是闪电般的快速,但当然只有当图像相同时才有效(没有模糊因子)。

    我想知道是否有办法产生一个身份证或指纹-或者一系列的身份证-在那里我可以非常迅速地确定哪些图像彼此足够接近,然后支付ImageMagick比较成本只为那些可能的匹配。现有的算法/方法的想法或名称是非常受欢迎的。

    1 回复  |  直到 6 年前
        1
  •  1
  •   Eric Yang    6 年前

    有很多图像哈希算法。pHash是我脑海中浮现的那个。 http://www.phash.org/ . 这一个工作与基本的转换,一个人可能想做的图像。如果你想变得更复杂,自己滚动,你可以使用一个预先训练好的图像分类器,如图像网( https://www.learnopencv.com/keras-tutorial-using-pre-trained-imagenet-models/ ),去掉最后一层,并使用倒数第二层作为向量。对于小的图像,你可以很容易地做一个最近的邻居。如果你有更多,你可以使用烦恼( https://github.com/spotify/annoy )使近邻搜索更有效率