V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
90safe
V2EX  ›  算法

关于以图搜图的效率

  •  
  •   90safe · 2018-05-30 13:49:49 +08:00 · 2879 次点击
    这是一个创建于 2369 天前的主题,其中的信息可能已经有所发展或是发生改变。

    用感知哈希算法写了个计算 hash 值的函数,然后每张图片对应一个 hash 指纹,在上传比对的时候,除了一口气获取所有图片的 hash,然后再挨个每位数进行比对以外,有什么其他方法吗?这样的话,效率好像有点差。毕竟 hash 有 64 位,还要遍历 64 次看看是否相似。

    7 条回复    2018-05-30 18:43:55 +08:00
    tux
        1
    tux  
       2018-05-30 14:27:16 +08:00
    原来看过一个是把任意图片压缩成 64*64 的大小,然后对比每个点像素,差值最小的一般就是最接近的或者一样的
    Kagari
        2
    Kagari  
       2018-05-30 15:10:00 +08:00 via Android
    https://github.com/soruly/whatanime.ga 类似的项目
    那就缩短 hash 咯,没有那么容易冲突的
    还是说你数据量太小没用上数据库?
    90safe
        3
    90safe  
    OP
       2018-05-30 16:28:48 +08:00
    @Kagari @tux 唔,我的意思是说:如果我有 3 万张图片,那么就有 3 万条指纹信息,我取出 3 万条,然后 for 循环,一条指纹是 64 位,还再需要 for64 次,这样就是 30000 * 64 次循环,上传照片查询一次就得比对 192 万次才行。
    Kagari
        4
    Kagari  
       2018-05-30 18:20:30 +08:00 via Android
    @90safe 我觉得 3w 条扔到数据库里,然后给定数据输出汉明距离大于 x 的速度不慢啊。要不你转成 2 进制发现不相同的值多于 x 位就跳过咯
    dex2jar
        5
    dex2jar  
       2018-05-30 18:22:43 +08:00
    那这个和图片没关系吧。。
    然后为啥 64 位的 hash 得循环 64 次。。
    chenuu
        6
    chenuu  
       2018-05-30 18:36:18 +08:00
    用 map 这种结构?
    tux
        7
    tux  
       2018-05-30 18:43:55 +08:00
    ... 你 hash 不索引的吗?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1173 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 18:35 · PVG 02:35 · LAX 10:35 · JFK 13:35
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.