allenk/GeminiWatermarkTool
GitHub: allenk/GeminiWatermarkTool
一款跨平台的 Gemini 可见水印移除工具,通过逆向 Alpha 混合算法和 AI 降噪精确还原原始图像,支持 GUI 和 CLI 两种操作模式。
Stars: 1724 | Forks: 146
# Gemini Watermark Tool
Gemini Watermark Tool 通过**数学上精确的逆向 Alpha 混合**从图像中移除 Gemini 可见水印。提供**命令行工具**和**图形桌面应用程序**两种版本。
- **快速且离线**:单一可执行文件,**零依赖**
- **GUI + CLI**:支持拖放的桌面应用,或用于自动化的命令行工具
- **AI 降噪**:基于 GPU 加速的 FDnCNN 神经网络进行残留清理 (NCNN + Vulkan)
- **智能检测**:三阶段 NCC 算法配合置信度评分 — 自动跳过无水印图像
- **批量处理**:处理整个目录,支持缩略图预览和进度跟踪
- **跨平台**:Windows / Linux / macOS / Android (CLI)
## 🖥️ GUI 应用程序 — 重大更新
桌面 GUI 为单图和批量操作提供了交互式工作流。

### 单图编辑

- 拖放或打开任何受支持的图像
- 自动检测水印尺寸 (48×48 / 96×96) 或手动选择
- **自定义水印模式**:交互式绘制搜索区域,通过 8 个锚点调整大小,使用 WASD 键微调位置
- **多尺度引导检测 (Snap Engine)**:由粗到精的 NCC 模板匹配自动锁定绘制区域内的精确水印位置 — 支持 32–320px 的可变尺寸,并可调节搜索范围滑块
- 实时前后对比 (按 **V**)
- 一键处理 (**X**) 和撤销 (**Z**)
- 缩放、平移 (Space/Alt + 拖动, 鼠标滚轮) 以及适应窗口
### 软件修复清理 (v0.2.3 新增)

逆向 Alpha 混合在数学上是精确的 —— 但前提是图像在水印处理后未被调整大小、重新压缩或处理过。实际上,许多图像会经过后处理,这会破坏像素级的精确数学关系,导致移除后留下微弱的残留瑕疵。
**软件修复** 通过在逆向混合步骤后应用轻量级清理通道来解决这个问题。它利用从水印自身的 Alpha 通道导出的梯度加权蒙版,仅针对残留像素,而保持图像其余部分不变。
提供三种内置方法:
| Method | Description | Best for |
|--------|-------------|----------|
| **NS** | 基于 Navier-Stokes 的修复 —— 将周围像素流传播到受损区域 | 通用清理,效果平滑 |
| **TELEA** | 快速行进法 —— 基于距离加权从边界像素向内填充 | 快速处理,适合微小残留 |
| **Soft Inpaint** | 梯度加权高斯混合 —— 使用水印 Alpha 作为软蒙版进行加权混合 | 保留照片内容中的精细纹理 |
清理控件会在 **Custom** 模式下的 Detected Info 面板中自动显示。您可以调整 **method** (方法)、**strength** (强度,0–100%) 和 **inpaint radius** (修复半径,1–25 px) 来微调结果。
### AI 降噪 — FDnCNN 神经网络 (v0.2.5 新增)

**AI 降噪** 使用 GPU 加速的神经网络 ([FDnCNN](https://github.com/cszn/KAIR)) 来清理传统修复方法难以处理的水印残留 —— 特别是调整大小后的图像在逆向 Alpha 混合后留下的微弱闪烁边缘和角落瑕疵。
与需要二值蒙版来识别 *哪些* 像素受损的 NS/TELEA 不同,AI 降噪会检查每个点周围 41×41 像素的邻域,并从训练数据中学习“正常”图像内容的样子。结合来自 Alpha 图的梯度蒙版混合,它仅修复瑕疵像素,同时保留干净的背景细节。
| Parameter | Range | Default | Description |
|-----------|-------|---------|-------------|
| **Strength** | 0–300% | 120% | 控制蒙版覆盖范围 —— 超过 100% 的值会将修复扩展到较弱的梯度边缘 |
| **Sigma** | 1–150 | 50 | 噪声水平估计 —— 值越高降噪越激进 |
**技术细节:**
- **模型**:FDnCNN Color,20 层 Conv+ReLU,FP16 (~1.3 MB 嵌入在可执行文件中)
- **推理**:[NCNN](https://github.com/Tencent/ncnn) 配合 Vulkan GPU 加速,自动 CPU 回退
- **流水线**:来自 Alpha 图的梯度蒙版 → 对填充的 ROI 进行 NCNN 推理 → 逐像素蒙版混合
- **性能**:在现代 GPU 上每个区域 < 5 ms,在 CPU 上约 20 ms
如果可用,AI 降噪是**推荐的默认选项**。GPU 设备名称显示在控件下方。如果 GPU 初始化失败,工具会自动回退到 NS 修复。
### 批量处理

- **拖放**多个文件或**整个文件夹**以进入批量模式
- 缩略图图谱预览,带文件名标签和状态覆盖 (OK / SKIP / FAIL)
- **检测阈值滑块** (0–100%,5% 步进,推荐 25%) — 自动跳过无水印图像
- 覆盖原始文件前的确认对话框
- 非阻塞处理,带进度条和可滚动结果日志
- 完成后缩略图刷新以显示处理结果
### 键盘快捷键
| Key | Action |
|-----|--------|
| X | 处理图像 |
| V | 与原图对比 |
| Z | 恢复到原图 |
| C (按住) | 隐藏覆盖层 |
| W A S D | 移动自定义水印区域 |
| Space / Alt | 平移 (按住 + 拖动) |
| Scroll | 缩放到光标 |
| Ctrl +/- | 放大 / 缩小 |
| Ctrl 0 | 适应窗口 |
| Ctrl+W | 关闭 / 退出批量模式 |
### 渲染后端
GUI 支持多种渲染后端以实现最大兼容性:
| Backend | Description | Use Case |
|---------|-------------|----------|
| **D3D11** (默认) | 带 WARP 回退的 Direct3D 11 | 最适合 Windows — 适用于 Hyper-V, Docker, RDP |
| **OpenGL** | OpenGL 3.3 Core | 跨平台,需要 GPU 驱动 |
**为什么选择 D3D11?**
- 原生 Windows API — 无需额外驱动
- **WARP 回退** — 无 GPU 时进行软件渲染
- 适用于 **Hyper-V**、**Docker**、**Remote Desktop** 和其他虚拟化环境
- 在 Windows 沙箱配置中稳定性更好
```
# 自动选择 (Windows 上为 D3D11,其他平台为 OpenGL)
GeminiWatermarkTool
# 强制指定 backend
GeminiWatermarkTool --backend=d3d11
GeminiWatermarkTool --backend=opengl
```
## CLI — 新功能
除 GUI 外,命令行功能也得到了显著增强。
### 简单模式 — 现支持多文件
```
# 一次处理多个文件(新功能!)
GeminiWatermarkTool img1.jpg img2.png img3.webp
```
水印检测在简单模式中**默认启用** —— 自动跳过无法检测到水印的图像,以防止意外损坏。
```
# 强制处理(跳过检测)
GeminiWatermarkTool --force image.jpg
# 自定义检测阈值(默认值:25%)
GeminiWatermarkTool --threshold 0.40 image.jpg
```
### 标准模式
```
# 指定输出文件的单文件处理
GeminiWatermarkTool -i input.jpg -o output.jpg
# 批量目录处理
GeminiWatermarkTool -i ./watermarked_images/ -o ./clean_images/
```
## 水印检测
批量处理无水印图像会导致不必要的像素损坏。该工具现在使用**三阶段 NCC (归一化互相关)** 算法在处理前检测水印,确保仅修改带水印的图像:
1. **空间 NCC** — 将图像区域与已知 Alpha 图进行关联 (50% 权重,在 0.25 处设置断路器以快速跳过明显的非匹配项)
2. **梯度 NCC** — Sobel 边缘匹配以检测星形结构模式 (30% 权重)
3. **统计方差** — 纹理衰减分析,用于区分真实水印与白色/平坦区域 (20% 权重)
综合置信度评分决定是否存在水印。默认阈值为 **25%** —— 低于此分数的图像将被跳过。这消除了困扰简单基于相关性的方法的、由白色背景或外观相似内容引起的误报。
| Flag | Effect |
|------|--------|
| `--force` | 跳过检测,无条件处理所有图像 |
| `--threshold 0.40` | 设置自定义置信度阈值 (0.0–1.0) |
| `--no-banner` | 隐藏 ASCII 标志 (用于脚本和 AI 代理) |
| `--banner` | 强制显示 ASCII 标志 |
检测在简单/拖放模式中**默认启用**,在标准 (`-i` / `-o`) 模式中**默认禁用**。在 GUI 中,可通过滑块调整阈值 (0–100%,5% 步进),推荐默认值为 25%。
## 演示

## 并排对比

最适用于:**幻灯片、文档、UI 截图、图表、Logo**。
**请关注底部示例 (文字密集的幻灯片)。**
生成式修复通常会破坏文字:边缘扭曲、间距错误、笔画凭空产生。
GeminiWatermarkTool 反转混合方程以恢复像素,保持文字清晰锐利。
## ⚠️ 关于 SynthID (隐形水印)
### 什么是 SynthID?
SynthID 是 Google DeepMind 嵌入在 AI 生成图像中的**隐形水印**技术。与可见水印不同:
- 人眼**不可见**
- 在生成过程中**集成** (而非事后添加)
- 对常见图像操作**极度鲁棒**
### 为什么无法移除 SynthID?
我们的广泛研究揭示了一个基本事实:
SynthID 在生成过程中充当**统计偏差**。每个像素的选择都通过 **Tournament Sampling** 受到 Google 私钥的微妙影响。水印和视觉内容是**密不可分**的。
```
Visible Watermark: Image + Overlay = Result ✓ Removable (this tool)
SynthID: Biased Generation = Image ✗ Cannot separate
```
### 潜在移除方法
| Approach | Trade-off | Feasibility |
|----------|-----------|-------------|
| **极端量化** (二值化) | 图像变成不可用的骨架 | ✓ 有效 |
| **AI 重绘** (Stable Diffusion 等) | 风格发生显著变化 | ✓ 有效 |
| **白盒对抗攻击** | 需要检测器模型 | ✗ 不可用 |
**结论**:在保留图像质量的同时移除 SynthID **目前不可行**。
📄 **[完整 SynthID 研究报告 →](report/synthid_research.md)**
- [SynthID 图像水印研究报告](https://allenkuo.medium.com/synthid-image-watermark-research-report-9b864b19f9cf)
## 下载
从 [Releases](https://github.com/allenk/GeminiWatermarkTool/releases) 页面下载最新版本。
| Platform | File | Architecture |
|----------|------|--------------|
| Windows | `GeminiWatermarkTool-Windows-x64.exe` | x64 |
| Linux | `GeminiWatermarkTool-Linux-x64` | x64 |
| macOS | `GeminiWatermarkTool-macOS-Universal` | Intel + Apple Silicon |
| Android | `GeminiWatermarkTool-Android-arm64` | ARM64 |
### 首次运行 — 操作系统安全提示
下载的二进制文件未经过代码签名,因此您的操作系统可能会在首次启动时显示安全警告。对于在应用商店之外分发的开源软件,这是正常现象。
## ⚠️ 免责声明
## CLI — 快速入门
不需要 GUI?CLI 专为**极致简单**而设计 —— 拖一次,放一次,搞定。
### 拖放 — 最简单的方法
1. 下载 `GeminiWatermarkTool-Windows-x64.exe`
2. 将图像文件拖放到可执行文件上
3. ✅ 搞定!水印已原地移除 —— 无需终端,无需参数

### 命令行
```
# 简易模式 - 仅提供文件名
GeminiWatermarkTool watermarked.jpg
# 指定输出文件(保留原始文件)
GeminiWatermarkTool -i watermarked.jpg -o clean.jpg
# 批处理 - 整个目录
GeminiWatermarkTool -i ./input_folder/ -o ./output_folder/
```
支持的格式:`.jpg`, `.jpeg`, `.png`, `.webp`, `.bmp`
## 命令行选项
| Option | Short | Description |
|--------|-------|-------------|
| `--input ` | `-i` | 输入图像文件或目录 |
| `--output ` | `-o` | 输出图像文件或目录 |
| `--remove` | `-r` | 移除水印 (默认行为) |
| `--force` | `-f` | 强制处理 (跳过水印检测) |
| `--threshold ` | 显式水印区域 (见下方区域语法) |
| `--fallback-region ` | 标准检测失败时的搜索区域 |
| `--snap` | 在区域内启用多尺度吸附搜索 |
| `--snap-max-size ` | 最大吸附搜索尺寸,32–320 (默认:160) |
| `--snap-threshold ` | 接受吸附的最小置信度,0.0–1.0 (默认:0.60) |
| `--denoise ` | 移除后清理:`ai`, `ns`, `telea`, `soft`, `off` |
| `--sigma ` | AI 降噪噪声水平,1–150 (默认:50) |
| `--strength ` | 降噪强度 %,0–300 (默认:AI 为 120,其他为 85) |
| `--radius ` | NS/TELEA/Soft 的修复半径,1–25 (默认:10) |
**区域语法:**
| Format | Description |
|--------|-------------|
| `x,y,w,h` | 绝对坐标 |
| `br:mx,my,w,h` | 右下角 (边距_x, 边距_y, 宽度, 高度) |
| `bl:mx,my,w,h` | 左下角 |
| `tr:mx,my,w,h` | 右上角 |
| `tl:mx,my,w,h` | 左上角 (同绝对坐标) |
| `br:auto` | 根据图像尺寸使用 Gemini 默认位置 |
**示例:**
```
# 标准移除及 AI denoise 清理
GeminiWatermarkTool -i input.jpg -o clean.jpg --denoise ai
# 批量 AI denoise(所有文件)
GeminiWatermarkTool -i ./photos/ -o ./clean/ --denoise ai
# 检测失败时的回退策略:通过 snap 搜索右下角区域
GeminiWatermarkTool -i ./photos/ -o ./clean/ \
--fallback-region br:auto --snap --denoise ai
# 调整过大小的 watermark:将 snap 搜索扩展至 320px
GeminiWatermarkTool -i ./photos/ -o ./clean/ \
--fallback-region br:80,80,200,200 --snap --snap-max-size 320 --denoise ai
# 强制处理指定区域(所有图像的 watermark 位于相同位置)
GeminiWatermarkTool -i ./photos/ -o ./clean/ \
--force --region 500,800,160,160 --snap --denoise ai --sigma 75
```
## 水印尺寸检测
该工具根据图像尺寸自动检测适当的水印尺寸:
| Image Size | Watermark | Position |
|------------|-----------|----------|
| W ≤ 1024 **或** H ≤ 1024 | 48×48 | 右下角,32px 边距 |
| W > 1024 **且** H > 1024 | 96×96 | 右下角,64px 边距 |
使用 `--force-small` 或 `--force-large` 覆盖自动检测。
## 系统要求
| Platform | Requirements |
|----------|--------------|
| Windows | Windows 10/11 x64 |
| Linux | x64, glibc 2.35+ (Ubuntu 22.04+, Debian 12+) |
| macOS | macOS 11.0+ (Intel 或 Apple Silicon) |
| Android | ARM64, Android 10+ (API 29+) |
所有二进制文件均为静态链接,无外部运行时依赖。
## 故障排除
### "处理后图像看起来没有变化"
水印是半透明的。如果原始背景与水印颜色相似,差异可能很细微。尝试在水印区域 (右下角) 以 100% 缩放查看。
### "检测到错误的水印尺寸"
使用 `--force-small` 或 `--force-large` 手动指定:
```
GeminiWatermarkTool -i image.jpg -o output.jpg --force-small
```
### "文件访问被拒绝"
确保输出路径可写且文件未在另一个程序中打开。
## 限制
- 仅移除 **Gemini 可见水印** (右下角的半透明 Logo)
- **不能**移除 **SynthID 隐形水印** — [查看原因](report/synthid_research.md)
- 为 Gemini 当前的水印模式设计 (截至 2025 年)
## 从源代码构建
### 前置条件
| Tool | Version | Notes |
|------|---------|-------|
| CMake | 3.21+ | 支持 CMakePresets |
| C++ Compiler | C++20 | MSVC 2022, GCC 12+, Clang 14+ |
| vcpkg | Latest | 包管理器 |
| Ninja | Latest | 推荐的构建系统 |
### 设置 vcpkg
```
# 克隆 vcpkg
git clone https://github.com/microsoft/vcpkg.git
cd vcpkg
# Bootstrap
./bootstrap-vcpkg.sh # Linux/macOS
.\bootstrap-vcpkg.bat # Windows
# 设置环境变量
export VCPKG_ROOT="$HOME/vcpkg" # Linux/macOS (add to .bashrc)
$env:VCPKG_ROOT = "C:\vcpkg" # Windows PowerShell
```
### 使用 CMake Presets 构建
项目使用 `CMakePresets.json` 进行跨平台配置。
```
# 使用子模块克隆(NCNN 源码)
git clone --recursive https://github.com/allenk/GeminiWatermarkTool.git
# 或者如果已经克隆:
git submodule update --init --recursive
# 列出可用的预设
cmake --list-presets
```
#### Windows
```
cmake --preset windows-x64-Release
cmake --build --preset windows-x64-Release
```
#### Linux
```
cmake --preset linux-x64-Release
cmake --build --preset linux-x64-Release
```
#### macOS (通用二进制)
macOS 需要为每种架构单独构建:
```
# 构建 x64
cmake -B build-x64 -G Ninja \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_TOOLCHAIN_FILE=$VCPKG_ROOT/scripts/buildsystems/vcpkg.cmake \
-DVCPKG_TARGET_TRIPLET=x64-osx \
-DCMAKE_OSX_ARCHITECTURES=x86_64
cmake --build build-x64
# 构建 arm64
cmake -B build-arm64 -G Ninja \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_TOOLCHAIN_FILE=$VCPKG_ROOT/scripts/buildsystems/vcpkg.cmake \
-DVCPKG_TARGET_TRIPLET=arm64-osx \
-DCMAKE_OSX_ARCHITECTURES=arm64
cmake --build build-arm64
# 创建 Universal Binary
lipo -create build-x64/GeminiWatermarkTool build-arm64/GeminiWatermarkTool \
-output GeminiWatermarkTool
```
#### Android
需要 Android NDK:
```
export ANDROID_NDK_HOME="/path/to/android-ndk"
cmake --preset android-arm64-Release
cmake --build --preset android-arm64-Release
```
### 构建预设
| Preset | Platform | Backend | Notes |
|--------|----------|---------|-------|
| `windows-x64-Release` | Windows | D3D11 + OpenGL | 默认,包含 AI 降噪 |
| `windows-x64-OpenGL-Release` | Windows | 仅 OpenGL | 包含 AI 降噪 |
| `linux-x64-Release` | Linux | OpenGL | 包含 AI 降噪 |
| `mac-universal-Release` | macOS | OpenGL | Intel + Apple Silicon,包含 AI 降噪 |
| `android-arm64-Release` | Android | — | 仅 CLI,包含 AI 降噪 |
所有预设默认启用 `ENABLE_AI_DENOISE=ON`。要在不带 AI 的情况下构建,请手动设置 `-DENABLE_AI_DENOISE=OFF`。
### 手动构建 (不带预设)
```
cmake -B build -G Ninja \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_TOOLCHAIN_FILE=$VCPKG_ROOT/scripts/buildsystems/vcpkg.cmake \
-DVCPKG_TARGET_TRIPLET=x64-linux
cmake --build build
```
## 项目结构
```
gemini-watermark-tool/
├── CMakeLists.txt # Main build configuration
├── CMakePresets.json # Cross-platform build presets
├── vcpkg.json # Dependencies manifest
├── src/
│ ├── core/ # Core engine (CLI + GUI shared)
│ │ ├── watermark_engine.hpp/cpp
│ │ ├── watermark_detector.hpp/cpp
│ │ ├── blend_modes.hpp/cpp
│ │ ├── ai_denoise.hpp/cpp # NCNN FDnCNN denoiser
│ │ ├── ai_denoise_model.cpp # Embedded model weights (isolated TU)
│ │ ├── ncnn_shim.hpp # Vulkan loader shim for NCNN
│ │ └── types.hpp
│ ├── cli/ # CLI application
│ │ └── cli_app.hpp/cpp
│ ├── utils/ # Utilities
│ │ ├── ascii_logo.hpp
│ │ └── path_formatter.hpp
│ ├── main.cpp # Entry point (CLI/GUI dispatcher)
│ └── gui/ # Desktop GUI (ImGui + SDL3)
│ ├── gui_app.hpp/cpp # GUI entry point
│ ├── app/
│ │ ├── app_state.hpp # Application state
│ │ └── app_controller.hpp/cpp # Logic controller
│ ├── widgets/
│ │ ├── main_window.hpp/cpp # Main window + menus
│ │ └── image_preview.hpp/cpp # Image viewer + batch view
│ ├── backend/
│ │ ├── render_backend.hpp/cpp # Backend interface + factory
│ │ ├── opengl_backend.hpp/cpp # OpenGL 3.3 implementation
│ │ └── d3d11_backend.hpp/cpp # Direct3D 11 implementation (Windows)
│ └── resources/
│ └── style.hpp # Theme and layout constants
├── external/
│ └── ncnn/ # NCNN source (git submodule)
│ └── model-convert/output/ # Converted FDnCNN model headers
├── report/
│ └── synthid_research.md # SynthID research documentation
└── resources/
├── app.ico # Windows application icon
└── app.rc.in # Windows resource template
```
## 依赖项
所有依赖项均通过 vcpkg 管理并静态链接:
| Package | Purpose |
|---------|---------|
| OpenCV | 图像 I/O 和像素操作 |
| fmt | 现代字符串格式化 |
| CLI11 | 命令行参数解析 |
| spdlog | 日志框架 |
| SDL3 | 窗口管理和输入 (GUI) |
| Dear ImGui | 即时模式 GUI 框架 (GUI) |
| ImPlot | 绘图控件 (GUI) |
| glad | OpenGL 加载器 (GUI) |
| nativefiledialog-extended | 原生文件对话框 (GUI) |
| WIL | Windows 实现库 (D3D11 后端,仅 Windows) |
| NCNN | 神经网络推理运行时 (AI 降噪,git submodule) |
| volk | 用于动态分发的 Vulkan 元加载器 (AI 降噪,vcpkg) |
## 工作原理
### Gemini 水印分析
Gemini 使用 **Alpha 混合**应用可见水印:
```
watermarked = α × logo + (1 - α) × original
```
### Alpha 重构
通过统计分析和比较与 Alpha 相关的值,我们可以重构出正确或非常接近的 Alpha 贴图。
### 移除算法 (逆向 Alpha 混合)
求解原始像素:
```
original = (watermarked - α × logo) / (1 - α)
= (watermarked - alpha_map) / (1 - α)
```
这种数学反演可产生对原始像素的精确还原。
### 残留清理 (软件修复 + AI 降噪)
当图像在水印处理后经过调整大小或重新压缩时,精确的数学关系不再完美成立。有两种方法可用于清理残留瑕疵:
**软件修复** (NS / TELEA / 高斯):
```
1. Compute gradient magnitude from watermark alpha channel
2. Build soft weight mask: stronger where alpha gradient is high
3. Apply selected inpainting method (NS / TELEA / Gaussian blend)
4. Blend result using weight mask — only affected pixels are modified
```
**AI 降噪** (FDnCNN,推荐):
```
1. Compute gradient mask from alpha map (locate sparkle edges)
2. Run FDnCNN inference on padded ROI (Vulkan GPU or CPU)
Input: [R, G, B, sigma/255] → Output: denoised clean image
3. Per-pixel masked blend: mask × denoised + (1-mask) × original
→ Only edge artifacts repaired, clean background untouched
```
## 法律免责声明
本工具仅供**个人和教育用途**。
移除水印可能因您所在的司法管辖区和图像的预期用途而产生法律影响。用户需自行确保其对本工具的使用符合适用法律、服务条款和知识产权。
作者不纵容或鼓励将本工具用于版权侵权、虚假陈述或任何其他非法目的。
**本软件按“原样”提供,不附带任何形式的明示或暗示保证。在任何情况下,作者均不对因使用本软件而产生的任何索赔、损害或其他责任负责。**
## 许可证
MIT License
## 作者
**Allen Kuo** ([@allenk](https://github.com/allenk))
## 相关链接
- [移除 Gemini AI 水印:深入探讨逆向 Alpha 混合](https://allenkuo.medium.com/removing-gemini-ai-watermarks-a-deep-dive-into-reverse-alpha-blending-bbbd83af2a3f)
- [SynthID 图像水印研究报告](https://allenkuo.medium.com/synthid-image-watermark-research-report-9b864b19f9cf)
- [SynthID 研究报告](report/synthid_research.md) — 为什么隐形水印无法被移除
## 第三方许可证
本项目包含以下开源组件:
| Component | License | Usage |
|-----------|---------|-------|
| [NCNN](https://github.com/Tencent/ncnn) | BSD-3-Clause | 神经网络推理运行时 (Vulkan GPU + CPU) |
| [FDnCNN model weights](https://github.com/cszn/KAIR) (KAIR) | MIT | 预训练降噪模型 (嵌入式 FP16 权重) |
| [volk](https://github.com/zeux/volk) | MIT | 用于动态分发的 Vulkan 元加载器 |
这些组件的完整许可证文本可在其各自的仓库中找到。
macOS — "Apple cannot check it for malicious software"
**选项 A (推荐):** 右键单击二进制文件 → **打开** → 在对话框中点击 **打开**。您只需执行一次此操作。 **选项 B (终端):** ``` xattr -dr com.apple.quarantine GeminiWatermarkTool chmod +x GeminiWatermarkTool ```Windows — SmartScreen "Windows protected your PC"
**选项 A:** 点击 **更多信息** → **仍要运行**。 **选项 B (PowerShell):** ``` Unblock-File .\GeminiWatermarkTool.exe ```Linux — 无安全提示
Linux 不会隔离下载的二进制文件。只需确保文件具有可执行权限: ``` chmod +x GeminiWatermarkTool ./GeminiWatermarkTool ```
不需要 GUI?CLI 专为**极致简单**而设计 —— 拖一次,放一次,搞定。
### 拖放 — 最简单的方法
1. 下载 `GeminiWatermarkTool-Windows-x64.exe`
2. 将图像文件拖放到可执行文件上
3. ✅ 搞定!水印已原地移除 —— 无需终端,无需参数

### 命令行
```
# 简易模式 - 仅提供文件名
GeminiWatermarkTool watermarked.jpg
# 指定输出文件(保留原始文件)
GeminiWatermarkTool -i watermarked.jpg -o clean.jpg
# 批处理 - 整个目录
GeminiWatermarkTool -i ./input_folder/ -o ./output_folder/
```
支持的格式:`.jpg`, `.jpeg`, `.png`, `.webp`, `.bmp`
## 命令行选项
| Option | Short | Description |
|--------|-------|-------------|
| `--input 如果这个工具对您有帮助,请考虑给它一个 ⭐
标签:AI去噪, Android工具, Bash脚本, CLI, FDnCNN, Gemini, GUI, NCC算法, NCNN, Snap Engine, Vulkan, WiFi技术, 反水印工具, 图像修复, 图像处理, 图片编辑, 批处理, 数字取证, 桌面应用, 模板匹配, 水印移除, 神经网络, 网络安全, 自动化脚本, 逆向混合, 隐私保护