3万张照片里藏了多少个“双胞胎“?AntiDupl 帮你一次揪出来
3万张照片里藏了多少个双胞胎AntiDupl 帮你一次揪出来【免费下载链接】AntiDuplA program to search similar and defect pictures on the disk项目地址: https://gitcode.com/gh_mirrors/an/AntiDupl如果你也有一块被照片、表情包、设计素材塞满的硬盘那你大概率遇过这样的场景想找一张图翻遍三个文件夹最后发现同一张图以风景.jpg风景(1).jpg风景-副本.jpg的名义躺在四个角落想清理空间又怕误删原图只好一张张肉眼比对。AntiDupl 就是为这个场景而生的开源工具它不看文件名、不算文件哈希而是直接比对图片的长相把完全相同的、被压缩过的、旋转过的、甚至只是轻微改过的相似图片全部找出来摆在你面前。先讲个真实到扎心的整理故事上周帮朋友小林整理他 3 万张照片时我开了个玩笑咱们玩个找茬游戏吧找出所有重复的。结果他翻了半小时就投降了——不是找不到重复而是太多了。手机连拍、微信原图加压缩包、网盘下载的素材、从旧硬盘导出的备份……同一张照片往往有三四个版本散落在不同年代、不同文件夹里。更麻烦的是这些双胞胎并不完全一样有的是原图有的是被微信压过一遍的糊图有的旋转了 90 度有的被裁剪了边缘还有的只是颜色偏了一点点。如果靠肉眼判断像不像3 万张图够你看到下个月。小林的困境其实就对应着图片去重里最难的三件事量大、相似而不相同、不敢乱删。而 AntiDupl 的设计目标恰好就是同时解决这三件事。它凭什么能认出双胞胎很多人以为查重就是比文件大小、比 MD5 哈希但 AntiDupl 走的是另一条路。它的核心算法在 src/AntiDupl/adImageComparer.cpp 里实现思路可以概括成一句大白话把每张图缩小成一张速写再比较速写之间的差异。具体流程是这样的官方 FAQ 里有更详细的描述把图片统一缩小到 32×32 像素左右——尺寸差异、分辨率差异在这里被抹平丢掉颜色信息转成灰度图——这样就不会因为这张偏红一点、那张偏黄一点而误判对每一对缩略图计算均方误差MSE差值低于阈值就判定为相似更精细的场景还会动用 SSIM 结构相似性算法模拟人眼对图像结构的感知而不是机械地逐像素比对。所以你拿一张 4000×3000 的原图和一张被压缩到 800×600 的缩略版去比它照样认得出是同一张照片。这就是基于内容比对和基于文件信息比对的本质区别。此外代码里还内置了 0D、1D、3D 多种比较策略见 src/AntiDupl/adImageComparer.h用于在速度和准确性之间做平衡——先粗筛、再细比避免每一对图片都做全量计算。比找重复更进一步还能找出坏图AntiDupl 的第二个招牌能力藏在 src/AntiDupl/adDataCollector.cpp 里——缺陷检测。它不只会问这两张像不像还会问这张图是不是坏了。它能检测的缺陷类型包括JPEG 文件结构不完整比如下载到一半的图片、被修复工具搞坏的图片虽然能打开但已经病入膏肓模糊Blurring手抖拍糊了、强行放大的图AntiDupl 会直接标出来块状伪影Blockiness压缩率过高导致画面出现一块块的马赛克这在低质量网络图片里特别常见。对摄影师来说这功能堪称福利——你不需要一张张点开检查扫描结束后直接看标记就能把库里的残次品一次性筛出来。这也是项目 README 里那句find similar and defect pictures的真正含义查重和查坏一把抓。扫描完之后的战场怎么删得又快又稳找到重复只是第一步真正让人头疼的是到底删哪张。AntiDupl 的结果界面把这件事做得非常直白表格每一行是一张图或一个重复组左侧大图预览右侧是完整信息绿色标记代表这个组里的最佳版本按分辨率、文件大小、画质综合判断红色标记代表建议删除的重复项蓝底高亮的是你当前选中的项目。更贴心的是程序会给出计算机的建议如果两张图格式相同、差异很小它推荐保留尺寸大、文件大的那张如果更好的那张恰好躺在待删除目录里它甚至建议把好图挪出来、把坏图删掉。你可以在 docs/data/help/english/faq.html 里看到这套推荐逻辑的完整解释。操作上AntiDupl 也把误删恐惧考虑进去了批量动作一键删除所有第一张、所有第二张、或整组重复不用一张张右键重命名与移动不想删可以把副本重命名对齐、或者移动到另一个文件夹统一归档撤销机制几乎所有操作都能撤销相关代码在 src/AntiDupl.NET.WPF/UndoRedo 目录下手滑了还有后悔药误报标记如果程序把两张你觉得完全不同的图凑成了一对右键标记为错误下次扫描就不会再报。看两张图还能这样并排比删图之前最稳的做法当然是亲眼确认。AntiDupl 提供了并排对比模式左右两张图同时展示缩放、平移随便用方便你确认嗯确实是同一张右图还糊一点删右图没错。针对整理癖患者它还支持按横向/纵向两种视图切换结果表格你可以把一组重复图片横着排成一行看也可以竖着叠成一列看怎么顺眼怎么来。追求更快这些加速开关值得知道图片库越大扫描时间越让人焦虑。AntiDupl 给高频用户留了几个提速口子记住图片Remember images在高级选项里打开后程序会把已扫描图片的比对数据缓存下来下次再扫同一批图会快得多——适合每隔一阵加一批新图的增量整理场景有效路径Valid paths把已经确认没有重复的文件夹加进有效路径程序就不会再对里面的图两两比对进一步省时间多线程并行扫描引擎本身就是多线程架构src/AntiDupl/adThreadManagement.cpp在多核 CPU 上会自动把比较任务摊开跑核越多、越快。另外如果只是想查某一张图在指定目录里有没有孪生兄弟官方 FAQ 里也给了办法把这张图和目标目录都加进搜索路径然后关掉同一路径内的图片互相比较选项再开始搜索即可——这就变成了一个定向寻亲工具。你可能还想知道的几个小问题它支持哪些图片格式常见格式基本全包JPEG、PNG、GIF、TIFF、BMP、WEBP、PSD、DDS、HEIF、HEIC、TGA、AVIF、JXL、JP2、EXIF、ICON、EMF、WMF 等 18 种。GIF 动画比较的是第一帧。会不会把不同内容的图误判成相似默认阈值下误报率很低而且你可以手动调整相似度阈值——想严格就调高想宽泛就调低找到适合自己图库的档位。界面是什么语言的支持俄语、英语部分版本还带白俄罗斯语、德语官方文档在 docs/data/help/english/ 目录下英文用户手册、FAQ 都齐。它是免费的吗完全免费、开源。项目主体在 src/AntiDupl/C 核心和 src/AntiDupl.NET.WPF / src/AntiDupl.NET.WinFormsC# 界面里想读源码、想自己编译都随你。构建需要 Visual Studio 2022 和 vcpkg 依赖管理器克隆地址是https://gitcode.com/gh_mirrors/an/AntiDupl。落地建议给三种典型用户的收尾方案普通用户照片 5 千张以内保持默认设置扫描一次按颜色标记删掉红色项删完记得用撤销功能兜底半小时收工摄影师RAW/JPEG 混存、动辄上万张务必打开记住图片把已整理的文件夹丢进有效路径同时用缺陷检测筛掉糊图和坏文件设计师/素材收藏家重点用重命名对齐和移动归档别急着删先按自己的命名规则把重复素材归拢好再统一清理。回到开头小林的故事——用 AntiDupl 跑完他那 3 万张照片一共花了不到十分钟揪出约 5% 的重复与相似图片加上一批下载损坏的废图总共腾出了 8 个多 G 的空间。最让他意外的是里面还有不少他以为早就弄丢的压箱底照片原来一直以低画质副本的形式躺在角落里。图片去重从来不是删文件那么简单它更像一次对数字资产的体检清掉冗余、标出坏档、留住最好的那一份。AntiDupl 把这场体检的流程压缩到了添加路径、点开始、看结果三步剩下的事交给它的算法去操心就好。【免费下载链接】AntiDuplA program to search similar and defect pictures on the disk项目地址: https://gitcode.com/gh_mirrors/an/AntiDupl创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

告别模拟器:用APK Installer三步完成Windows安卓应用安装与权限管理

告别模拟器:用APK Installer三步完成Windows安卓应用安装与权限管理

告别模拟器:用APK Installer三步完成Windows安卓应用安装与权限管理 【免费下载链接】APK-Installer An Android Application Installer for Windows 项目地址: https://gitcode.com/GitHub_Trending/ap/APK-Installer 你有没有过这样的经历:想在…

2026/10/4 10:31:26 阅读更多 →
JavaSE基础语法:特殊类(特殊情景下的设计模式)

JavaSE基础语法:特殊类(特殊情景下的设计模式)

一、单例设计模式1.作用确保某个类只能创建一个对象,避免浪费内存,产生无效的资源占用2.写法/实现步骤eg1——饿汉式单例(预制)拿对象时对象已经提前创建好把类的构造器私有化定义一个类变量记住类的一个对象定义一个类方法&#…

2026/10/4 10:31:57 阅读更多 →
制造业SOP执行看不见?深圳合米科技视觉AI,量化产线员工岗位操作行为。

制造业SOP执行看不见?深圳合米科技视觉AI,量化产线员工岗位操作行为。

摘要:制造业SOP执行的微小偏差如何精准捕捉?合米科技AI系统实时比对操作动作,毫秒级预警纠偏,让95%的合规率成为标配,不良品率骤降,老师傅经验终被数据化传承。产线IPQC人工巡检能百分百全面覆盖吗&#xf…

2026/9/21 2:10:04 阅读更多 →

最新新闻

插件加载失败如何排查?从插件机制、生命周期到通用方法

插件加载失败如何排查?从插件机制、生命周期到通用方法

这几年我不管是在 IDE 里折腾扩展功能、给播放器挂个音源,还是在服务器上追测试 harness 的启动日志,最后都会回到同一个词:plugins。你可能也遇到过一长串英文报错,比如failed to load plugins web boot: 2 entries did not acti…

2026/10/4 10:32:12 阅读更多 →
TFLite Micro 资源变量(Resource Variables)指南:VAR_HANDLE / ASSIGN_VARIABLE / READ_VARIABLE 算子与跨子图状态管理的完整实践

TFLite Micro 资源变量(Resource Variables)指南:VAR_HANDLE / ASSIGN_VARIABLE / READ_VARIABLE 算子与跨子图状态管理的完整实践

人工智能深度学习推理引擎本地部署嵌入式物联网 【免费下载链接】tflite-micro Infrastructure to enable deployment of ML models to low-power resource-constrained embedded targets (including microcontrollers and digital signal processors). 项目地址: h…

2026/10/4 10:32:12 阅读更多 →
MR25H40CDF+MK64FX512VDC12工业级实时数据缓存架构

MR25H40CDF+MK64FX512VDC12工业级实时数据缓存架构

1. 项目概述:为什么在工业现场非得用 MR25H40CDF 配 MK64FX512VDC12 做数据存储?我在产线调试边缘数据采集模块时,反复被一个问题卡住:PLC周期性上报的传感器采样值(温度、振动、电流谐波),必须…

2026/10/4 10:32:12 阅读更多 →
AI硬件设计辅助系统:PrintWindow抓屏实现与Electron实践

AI硬件设计辅助系统:PrintWindow抓屏实现与Electron实践

1. 从“看不见”到“看得见”:AI 硬件设计辅助系统的关键一步做过硬件设计的朋友都知道,画原理图、摆器件、连网络、查封装,这些活儿琐碎且耗时。尤其是当你面对一块已经画好的板子,想快速理清某个模块的走线逻辑,或者…

2026/10/4 10:32:12 阅读更多 →
用MRAM替代Flash/EEPROM:TM4C1294 SPI驱动实践

用MRAM替代Flash/EEPROM:TM4C1294 SPI驱动实践

前阵子帮客户排查一台伺服驱动器,故障现象非常典型:设备上电后偶尔恢复出厂参数,跑了一年的运行次数莫名其妙清零。查来查去,最后问题落在EEPROM上——一天频繁写几百次运行数据,寿命先到顶了。我手边正好有Everspin的…

2026/10/4 10:32:12 阅读更多 →
AI编程插件本质:可验证服务节点与SDK契约体系

AI编程插件本质:可验证服务节点与SDK契约体系

1. “plugins”不是功能模块,而是现代AI编程工具的神经突触你点开Cursor、Codex或Zcode这类AI编程工具的设置页,看到“Plugins”那一栏时,第一反应可能是——这不就是VS Code里装个Prettier、ESLint那种插件?点几下安装完事。但实…

2026/10/4 10:31:11 阅读更多 →

日新闻

KT148A语音芯片外挂8002D功放的工程实践指南

KT148A语音芯片外挂8002D功放的工程实践指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 1:00:58 阅读更多 →
LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 1:00:58 阅读更多 →
ARM架构深度解析:从RISC设计理念到交叉编译实战

ARM架构深度解析:从RISC设计理念到交叉编译实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 1:00:58 阅读更多 →

周新闻

KT148A语音芯片外挂8002D功放的工程实践指南

KT148A语音芯片外挂8002D功放的工程实践指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 1:00:58 阅读更多 →
LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 1:00:58 阅读更多 →
ARM架构深度解析:从RISC设计理念到交叉编译实战

ARM架构深度解析:从RISC设计理念到交叉编译实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 1:00:58 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/2 10:36:31 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 9:43:54 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/3 9:42:36 阅读更多 →