如题,自己收藏的壁纸有约一万张,大体上都是 16:9 比例的图,少部分有一些 16:10 的和 21:9 的。
想要写个东西检查一下里面有没有重复的图像。(重复的图像指比如原图经过压缩生成新图像,分辨率相同但 hash 不同。或者分辨率经过缩放也有可能,毕竟都是网上的图)
这种有什么办法可以查重吗?能否根据图像内容生成一个特征表示这个图像?比如用 4096 个比特描述一张图,然后我设置一个阈值(比如 100 ),两个特征向量的差异小于 100 就认为是同一张图?
1
binux 2021-11-09 05:21:05 +08:00 via Android
搜 GitHub image hash
|
2
LeeReamond OP @binux 排名最高的论文项目看不懂。看了看 python 最高 star 的实现代码,似乎是通过比较全局每个像素和平均值的大小关系,大于平均值就记为 1 ,小于平均值就记为 0 ,这么搞出来个一串的 hash 。这个如果调整过图片亮度之类的会不会就认为是两张图了
|
3
elfive 2021-11-09 06:38:20 +08:00 via iPhone
图片去重,我推荐这个工具软件。
https://www.duplicatecleaner.com/ |
4
zcf0508 2021-11-09 07:33:14 +08:00 via Android
@LeeReamond 求图片 hash 有很多种,你可以搜搜阮一峰关于图片搜索的文章
|
5
binux 2021-11-09 09:27:58 +08:00
@LeeReamond 很多份代码都有多个实现,你直接用就好了
|
6
3dwelcome 2021-11-09 10:13:37 +08:00
这个简单,学 jpeg 压缩原理,DCT 后是可以末尾截断的,多截断一些位数,就变成了图片的模糊 hash 值。
|
7
3dwelcome 2021-11-09 10:27:52 +08:00
再说一下原理,DCT 末尾截断,本质上就是把图片里的高频信号给去掉。
就好比你直接去比较两张壁纸,是不相同的,但是你放到 photoshop 里,高斯模糊一下后,把细节都去掉,壁纸看起来就很相似了。 |