揭秘 Gemini AI 去水印原理:基于数学的反向 Alpha 混合算法
太长不看版: Gemini 的可见水印(右下角 Logo)是通过简单的 Alpha 混合叠加的。因为我们知道 Logo 的形状和位置,可以通过数学公式反向计算出原始像素值,从而实现无损还原。
最近,Google 的 Gemini 模型生成的图片都会在右下角添加一个半透明的 Logo 水印。虽然这有助于标识 AI 生成内容,但在某些个人使用场景下(如收藏、壁纸),这个水印可能会有些干扰。本文将介绍我们刚刚发布的在线去水印工具背后的技术原理。
水印是如何添加的?
Gemini 添加水印的方式其实非常标准,使用了计算机图形学中最基础的 Alpha 混合(Alpha Blending)。
公式如下:
$$watermarked = \alpha \cdot logo + (1 - \alpha) \cdot original$$
其中:
watermarked: 最终带水印的像素值(我们看到的)α: Alpha 通道值 (0.0 - 1.0),代表透明度logo: 水印 Logo 的颜色值(Gemini 使用的是白色,即 255)original: 原始图像的像素值(我们想要的)
如何反向移除?
既然公式是线性的,而且我们已知 watermarked(从图片中读取)、logo(白色)以及通过逆向工程获取的 α(透明度分布图),我们就可以通过简单的代数变换求出 original。
反向求解公式:
$$original = \frac{watermarked - \alpha \cdot logo}{1 - \alpha}$$
核心步骤
- 检测水印位置:根据图片尺寸(>1024px 或其他),确定水印是 96x96 还是 48x48 大小。
- 获取 Alpha Map:我们在纯色背景上预先捕获了 Gemini 的水印,计算出了每个像素点的 Alpha 值。
- 像素级还原:对水印区域的每一个像素应用上述反向公式,计算出原始 RGB 值。
为什么它是“无损”的?
与使用 AI 修复(Inpainting)不同,AI 修复是“猜”被遮挡的内容是什么,而本工具是“算”出来的。
- AI 修复:可能会改变原图细节,产生模糊或奇怪的纹理。
- 反向算法:在数学精度允许的范围内,还原出的就是原始像素值。
隐私与安全
这个工具完全基于 Javascript 开发,运行在你的浏览器中。
- ✅ 纯本地处理:图片数据不会上传到任何服务器。
- ✅ 无损画质:不进行压缩或重采样。
- ✅ 开源透明:核心算法代码公开可见。
使用限制
需要注意的是,该算法仅适用于移除可见的 Alpha 混合水印。它无法移除:
- SynthID(Google 的隐形水印技术)
- 不透明的水印
- 非标准位置或被裁剪过的水印
总结
通过简单的数学原理,我们可以优雅地解决这个问题。如果你也受困于 Gemini 的图片水印,欢迎尝试这个小工具。