核心算法汇总¶
本文档汇总项目中所有关键算法、公式和参数,供快速查阅。
Alpha 混合反转¶
场景:Gemini 可见闪光 logo 移除
\[
\text{original} = \frac{\text{watermarked} - \alpha \times 255}{1 - \alpha}
\]
| 参数 | 值 | 说明 |
|---|---|---|
alpha_threshold |
0.002 | 低于此值的像素不处理 |
max_alpha |
0.99 | 防止除零 |
logo_value |
255.0 | 白色 logo |
NCC 水印检测(3 阶段)¶
场景:自动定位 Gemini 水印位置和尺度
阶段 1:多尺度空间 NCC¶
| 参数 | 值 |
|---|---|
| 搜索区域 | 右下角 256×256 |
| 尺度范围 | 16 ~ 120 px |
| 步长 | 2 |
| 匹配方法 | cv2.TM_CCOEFF_NORMED |
| 尺度权重 | \(\min(1.0, (\text{scale}/96)^{0.5})\) |
阶段 2:梯度 NCC¶
阶段 3:方差分析¶
\[
\text{var\_score} = \max\left(0,\ \min\left(1,\ 1 - \frac{\sigma_{\text{watermark}}}{\sigma_{\text{reference}}}\right)\right)
\]
置信度融合¶
\[
\text{confidence} = \text{spatial} \times 0.50 + \text{gradient} \times 0.30 + \text{variance} \times 0.20
\]
| 参数 | 值 |
|---|---|
| 检测阈值 | 0.35 |
| Logo 尺寸(大图 > 1024px) | 96×96 |
| Logo 尺寸(小图) | 48×48 |
Inpainting 清理¶
场景:alpha 反转后的边缘修复
| 参数 | 值 |
|---|---|
| Mask 方法 | Sobel 梯度 → 归一化 → gamma(√) → 膨胀 |
| 膨胀核 | MORPH_ELLIPSE (5, 5) |
| 二值化阈值 | 30 (uint8) |
| Inpaint radius | 10 |
| Padding | 32 |
| 混合权重 | 0.85 |
| 方法选择 | gaussian / telea / ns |
扩散再生(SDXL)¶
场景:不可见水印移除(SynthID 等)
| 参数 | 值 | 说明 |
|---|---|---|
strength |
0.04 | 去噪强度 |
num_inference_steps |
50 | 总步数 |
effective_steps |
2 | max(1, int(50 × 0.04)) |
guidance_scale |
7.5 | CFG |
prompt |
"" |
空提示 |
| 输入分辨率 | 1024px | SDXL 原生 |
CtrlRegen 管线¶
场景:精细的可控再生(ICLR 2025)
| 参数 | 值 |
|---|---|
| 基础模型 | Realistic_Vision_V4.0_noVAE |
| VAE | sd-vae-ft-mse |
| 编码器 | facebook/dinov2-giant |
| Canny 低阈值 | 100 |
| Canny 高阈值 | 150 |
| ControlNet scale | 1.0 |
| IP-Adapter scale | 1.0 |
| guidance_scale | 2.0 |
| prompt | "best quality, high quality" |
| 分块 tile_size | 512 |
| 分块 overlap | 192 |
色彩匹配¶
| 参数 | 值 |
|---|---|
| 方法 | hm-mkl-hm(两遍直方图匹配 + MKL 传输) |
| 库 | color-matcher |
分块混合权重¶
\[
w_i = \begin{cases}
1.0 & \text{中心区域} \\
\frac{1}{2}\left(1 + \cos\left(\frac{\pi \cdot d}{\text{overlap}}\right)\right) & \text{边缘过渡带}
\end{cases}
\]
其中 \(d\) 为到边缘的距离。
强度预设¶
| 水印类型 | Strength |
|---|---|
| StableSignature | 0.04 |
| DwtEctSVD | 0.04 |
| RivaGAN | 0.04 |
| SSL | 0.04 |
| Hidden | 0.04 |
| 通用默认 | 0.35 |
| StegaStamp | 0.7 |
| TreeRing | 0.7 |
| RingID | 0.7 |
Humanizer¶
| 参数 | 值 | 说明 |
|---|---|---|
grain_intensity |
2.0 ~ 6.0 | 高斯噪声 σ |
chromatic_shift |
1 ~ 3 px | RGB 通道偏移 |
人脸保护¶
| 参数 | 值 |
|---|---|
| 检测器 | YOLOv8n(class 0 = person) |
| 回退 | Haar Cascade + 20% 边距 |
| 椭圆 mask 中心比例 | 40% |
| 高斯模糊核 | max(w, h) // 4 |
C2PA 解析¶
| 格式 | 存储方式 | 移除方式 |
|---|---|---|
| PNG | caBX chunk |
遍历 chunk,跳过 caBX |
| JPEG | APP1 段 | EXIF 清理 |
| AVIF/HEIF | ISOBMFF uuid box |
顶层 box 遍历,跳过 C2PA UUID |
| JPEG-XL | ISOBMFF jumb box |
顶层 box 遍历,跳过 jumb |
C2PA UUID:d8fec3d61b0e483c92975828877ec481