嗯,在这里也发一下吧。
一直对频域侧的不可见水印很感兴趣,今天就来简单说说频域水印。
因为主要是以讲解为主,我不会用太多复杂的公式进行讲解,就简单说说原理吧。
01 频谱图到频域水印
a 图片的频谱图
首先,我们来说说什么是图片的频谱图。
众所周知,图片的空间频率指的是图片亮暗变化的快慢。
变化的越快的地方,频率越高。
而频谱图,则是使用频率的图像来描述原图中亮度变化的情况。
一般来说,二维图像的频谱图需要从方向(水平和垂直)、频率的高低和强度的高低三个角度来看。

- 水平和垂直:指的是两个方向上的频率变化情况。
- 频率的高低:频率越强,变化越快。
- 强度的高低:可以简单理解为变化的幅度大小。
这么说比较抽象,我们先直接看看例子。
i 纯色图像
最简单的例子是纯色的图像,即整张图都是一个颜色的图像。
这种图像没有变化,从信号的角度上来说,就是只有直流分量,频谱图也会比较简单。

ii 垂直方向的水平渐变
如下图所示的水平渐变图发生在垂直方向 ,变化频率较低,因此频谱图呈现下面的一条直线的样式。

注意:这里并不是一条直线,在中心低频区域存在着一个极值,说明这张图中,这个频率出现的最多:

按照彩图渲染出来是这样:

同样的,垂直渐变的频谱图是这样的,垂直分量有能量,低频处有频谱极大值:

iii 正弦波形
正弦波形,就是有频率变化的波形。
这种波形的特点是,波形的极值会有两个,成对称性。频率越高,对称的两个点会越远离中心。

iv 锐利边缘、文字等
如果大家还记得傅里叶变换的相关知识,那么就不难理解,图片中的锐利边缘(方波)实际上可以由多个不同频率的正弦波叠加组成。
例如下图的方波,会被分解为多个频率,强度递减:

因此,对于文字或图片中的锐利边缘,实际上也能看成多个不同频率的正弦波叠加组成。
例如下图是个更复杂的例子:

v 真实图片的频谱
这里丢一张真实图片的对数频谱图,直接看图吧:

b 图片的频域水印
事实上,这个内容大家应该有所耳闻。
这里简单讲解一下原理。
在之前我讲过,图片除了RGB之外,还有YUV空间。
Y指的是明亮度(灰阶值),UV指色度(描述颜色)。其中U是蓝色色度分量,V是红色色度分量。
在这里,我们将Y通道(亮度)提取出来,人为地在亮度频谱中叠加我们的水印,再覆盖原有的Y通道数据。

通过这样处理后的图片,亮度上会叠加特殊的变化规律。
这种规律在纯色背景下比较明显,在非纯色背景下就不好看出来了。
例如下面这张图:

叠加水印后,基本上看不出来:

事实上放大还是能看到有高频纹路,这个纹路的规律和水印叠加的位置、大小、强度都有关系,如下图所示的斜线。
把这张图放到bigwww.epfl.ch/demo/ip/demos/FFT/进行傅里叶变换,就可以看到频谱图中的水印:

当然,也可以通过FFT运算得出频谱图,也能看到水印(水印内容懒得改了,将就看下吧):

02 频域水印的健壮性
接下来我们说说频域水印的健壮性。
事实上,这个频域水印已经被人证明过健壮性,只有手机摄屏带来的摩尔纹等可能会破坏亮度的规律信息。
这里我们直接整体测试一下。
将上述的猫图缩放裁切并加水印(模拟图片的修改):

放到网站上做FFT变换,还是可以看到水印(因为这里没有破坏高频信息):

不过做个低频滤波降低分辨率,还是会在一定程度上破坏高频信息的水印的(当然,也会导致清晰度下降)。
例如,下图就是滤波频谱图:

可以看到,加在图上的水印信息被过滤掉了。
但是原图也变得模糊了:

总之简单概括:
频域水印通过变化图片的明暗变化规律来实现水印的添加。
在一定程度上,频域水印可以抵抗涂抹、裁切、拉伸等常见的操作。
但是,对于摄屏带来的摩尔纹、低通滤波、大范围缩放(例如4000×3000缩放到800×600)等会破坏图片本身的明暗变化规律的操作 ,就有可能会导致水印失效。
不过如果上述操作对图片带来的破坏要远大于去水印得到的收益,那也算是保护了原图吧。
另外,这里只是简单的测试,实际上商用的隐写水印的健壮性更强大。
03 代码讲解与实际应用
a 代码讲解
实际上这个Demo的代码比较简单,不过我还没做好详细的整理,就只讲一下关键的地方吧(不过这玩意说不定丢给AI跑一下就出来了,大家可以试试,或者应该有更多的现成代码可以用)。



b 实际应用
最基本的应用,就是给自己的图片加水印了。
由于上述测试中我们已经证明了这个代码在一定程度上的健壮性,因此可以作为一种保护自己的方式。
实际应用中,水印的位置、大小、叠加的强度和形式这些东西都需要注意,错误的叠加方法反而会影响原图。
不过,比较成熟的方案应该可以在水印的健壮性和对原图的破坏性之间取得平衡。
除此之外,在一些大厂或需要保密的场合,也会通过增加各种不同的水印的方式来实现对泄密者的定位,其中自然包括频率水印。
而随着AI越来越广泛的应用,一些主流的AI平台会在生成的图片中增加专门的数字指纹(例如Synth ID),避免AI生成的图片被滥用。

建议国内的AI平台跟进的同时,联合其他APP厂商等推动AI生图的水印识别,这样滥用AI进行仅退款、假新闻等的现象也能降低不少。
04 总结
最后简单总结一下。
图片频谱的含义,体现变化的频率。
水平垂直是方向,离心越近频越低。
此外还需看强度,频率占比的表达。
水印叠加在频域,高频纹路看不易。
普通操作不好去,除非破坏其规律。
常见用途加水印,还有保密和识别。
好的,今天就到这里。
