DWT/DCT 水印移除器 — 检测并干扰 Stable Diffusion 隐形水印
检测并干扰 Stable Diffusion 使用的 CompVis invisible-watermark 库签名(dwtDct)。文件全程留在本机。
Drop a PNG or JPEG image
DWT/DCT invisible watermarks are detected and disrupted in your browser. Nothing is uploaded.
预期用途
- Intended for personal privacy protection: removing metadata and watermarks from files you own before sharing online. Not intended for: academic dishonesty, platform ToS circumvention, or misrepresenting content origin.
- 完整的 dwtDct 检测需要 invisible-watermark WASM 库。当前检测只是 Phase 1 的占位实现。
- 干扰处理是通用的,可能无法完全去除水印信号。请把输出视为「尽力而为的清洗结果」。
Stable Diffusion 以及众多衍生模型会在每张生成的图像中嵌入一段隐形水印。它不是可见的 logo,也不是一块元数据 —— 而是一条 48 位消息,使用离散小波变换(DWT)与离散余弦变换(DCT)编码进像素数据的频域系数中。实现来自 CompVis 的 invisible-watermark 库,该库默认打包在大多数 SD 流水线中,包括 Automatic1111、ComfyUI 以及 Stability AI 的官方发布版本。
当 SD 图像流水线写入 PNG 或 JPEG 时,dwtDct 编码器会把一段 48 位负载(包含固定签名或可配置消息)转换为小波系数的扰动。这些扰动肉眼不可见,但匹配的解码器可以检测出来。开源的 invisible-watermark Python 包以及 Hugging Face 的水印检测 Demo 都使用同一库来判断图像是否源自 Stable Diffusion。
本工具针对的就是这种水印。在 Phase 2,编译为 WASM 的 dwtDct 解码器会读取概率分并从图像中解码 48 位消息。在 Phase 1,通用的人类化管线(微模糊、分数级重采样、亮度扰动)提供尽力而为的干扰处理。目标是让你掌控自己的图像是否携带 Stable Diffusion 的来源签名 —— 完全在浏览器内完成,没有任何文件被上传。
使用方法
拖入一张 PNG 或 JPEG 图像
把任意 PNG 或 JPEG 拖入拖放区。文件在浏览器中读取,绝不离开你的设备。检测器会查找由 CompVis invisible-watermark 库嵌入的 DWT/DCT 水印签名。
查看检测结果
工具会报告检测概率、任何已解码的水印字符串以及证据列表。完整的 dwtDct 检测需要 invisible-watermark WASM 库(Phase 2)。在当前阶段,应用通用的人类化管线作为尽力而为的干扰处理。
下载清理后的图像
干扰处理会施加微模糊、重采样以及亮度扰动,以削弱频域中的水印信号。文件名会加上 `-dwt-dct-clean` 后缀。
常见问题
什么是 dwtDct 水印?
dwtDct(Discrete Wavelet Transform / Discrete Cosine Transform,离散小波变换 / 离散余弦变换)是 CompVis invisible-watermark 库使用的水印方法,该库与 Stable Diffusion 以及众多下游工具一起打包发布。它把一段 48 位消息嵌入生成图像的频域系数中。变体包括 dwtDctSvd 与 RivaGAN。
哪些模型会使用这种水印?
Stable Diffusion XL 以及许多社区微调模型默认通过 CompVis 库嵌入 dwtDct 水印。基于 SD 流水线构建的模型 —— 包括部分 NovelAI、Automatic1111 和 ComfyUI 工作流 —— 也可能携带该水印,不过水印是可配置的,可以关闭。
我能读到解码后的水印字符串吗?
在 Phase 2(带 WASM 支持)中,工具会解码 48 位消息以还原原始水印负载。当前的 Phase 1 占位版本只报告检测元数据,并施加一次通用干扰处理。
我的图像会被上传吗?
不会。检测与干扰都在你的浏览器中运行。图像字节由 JavaScript 读取、解析并重写。不发起任何网络请求,没有服务器看到内容,会话之间也不存储任何数据。
限制说明
- Phase 1 阶段的 WASM 依赖完整的 dwtDct 检测与解码需要从 CompVis 仓库编译出的 invisible-watermark WASM 库。这被规划在 Phase 2。当前,工具应用通用的人类化管线作为干扰的替代方案。
- 仅支持 PNG 和 JPEG工具处理 PNG 与 JPEG 输入。WebP、AVIF 及其他格式暂不支持。
- 只有通用干扰没有基于 WASM 的检测,干扰处理就无法针对具体的 DWT/DCT 频带。人类化管线是通用的模糊 + 重采样 + 扰动流程,可能削弱水印信号,但并未针对 dwtDct 进行优化。
平台说明
- macOS
- 没有任何原生 macOS 工具能检测或移除 dwtDct 水印。Preview.app 不显示任何隐形水印指示。如果你配置好了 Python 环境,可以通过命令行使用 invisible-watermark Python 库。
- Windows
- Windows 没有内建的隐形水印感知能力。任何声称能检测 dwtDct 水印却无法访问 CompVis 库的工具都只是启发式判断。
- Linux
- 命令行替代方案:`invisible-watermark` Python 包可以检测并解码 dwtDct 水印。若需脚本化干扰,本工具中的人类化管线以纯函数模块的形式暴露 —— 详见开源版本中的 `src/lib/ai-cleanup/image-effects.ts`。
- Web
- 完全在客户端运行。文件被读入 Uint8Array,执行启发式检测,再由人类化管线生成 Blob URL 供下载。无上传、无服务器往返、无遥测。