有大佬能描述一下用于查重的提取图像特征的算法吗?

2021-11-09 05:09:36 +08:00
 LeeReamond

如题,自己收藏的壁纸有约一万张,大体上都是 16:9 比例的图,少部分有一些 16:10 的和 21:9 的。

想要写个东西检查一下里面有没有重复的图像。(重复的图像指比如原图经过压缩生成新图像,分辨率相同但 hash 不同。或者分辨率经过缩放也有可能,毕竟都是网上的图)

这种有什么办法可以查重吗?能否根据图像内容生成一个特征表示这个图像?比如用 4096 个比特描述一张图,然后我设置一个阈值(比如 100 ),两个特征向量的差异小于 100 就认为是同一张图?

979 次点击
所在节点    问与答
7 条回复
binux
2021-11-09 05:21:05 +08:00
搜 GitHub image hash
LeeReamond
2021-11-09 05:32:34 +08:00
@binux 排名最高的论文项目看不懂。看了看 python 最高 star 的实现代码,似乎是通过比较全局每个像素和平均值的大小关系,大于平均值就记为 1 ,小于平均值就记为 0 ,这么搞出来个一串的 hash 。这个如果调整过图片亮度之类的会不会就认为是两张图了
elfive
2021-11-09 06:38:20 +08:00
图片去重,我推荐这个工具软件。
https://www.duplicatecleaner.com/
zcf0508
2021-11-09 07:33:14 +08:00
@LeeReamond 求图片 hash 有很多种,你可以搜搜阮一峰关于图片搜索的文章
binux
2021-11-09 09:27:58 +08:00
@LeeReamond 很多份代码都有多个实现,你直接用就好了
3dwelcome
2021-11-09 10:13:37 +08:00
这个简单,学 jpeg 压缩原理,DCT 后是可以末尾截断的,多截断一些位数,就变成了图片的模糊 hash 值。
3dwelcome
2021-11-09 10:27:52 +08:00
再说一下原理,DCT 末尾截断,本质上就是把图片里的高频信号给去掉。

就好比你直接去比较两张壁纸,是不相同的,但是你放到 photoshop 里,高斯模糊一下后,把细节都去掉,壁纸看起来就很相似了。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/814021

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX