频域盲水印攻击性测试

Posted by Hsnico on July 14, 2020

频域盲水印抗攻击性测试

空域 (spatial domain) 又称图形空间 (image space) ,是由图像元组组成的空间,直接对对象元组进行处理称为空域处理。

频域 (spatial frequency domain) 是以频率为自变量描述图像的特征,可以将一幅图像像元值在空间上的变化分解为具有不同振幅、空间频率和相位的简振函数的线性叠加。

对图像进行离散傅里叶变换、离散余弦变换等变换手段即可将图像由空域转换到频域。

盲水印原理就是通过某种变换手段将图像变换到频域,在频域添加水印后再通过逆变换转换为空域。

本次测试全程使用快速傅里叶变换 (fast Fourier transform) 进行演示。

注:快速傅里叶变换仅仅是计算机运算方式上的优化(结果的精度也有略微的提升,直接算离散傅里叶会积累精度误差)。

如果你不清楚什么是傅里叶变换可以通过 3Blue1Brown 的视频 【官方双语】形象展示傅里叶变换 快速了解一下。

盲水印插入

这里跳过过程直接看结果

原图像分辨率为 560*315

00

这是要插入的水印

02

插入水印后图像与原图没有什么肉眼可见的差别。

01

查看添加水印图像的频域,水印清晰可见。

03

鲁棒性测试

图片左侧为空域,右侧为频域。

颜色攻击

提升图片的亮度,此时图片已经丢失了大量的颜色信息,但是在频域中依旧能看到盲水印,清晰度下降明显。

亮度

改变图片的色相,似乎没有对水印产生太大的影响。

色相

旋转裁切攻击

对图片镜像处理,对水印没有太大影响,依旧清晰。

镜像

对图片裁切处理,水印依旧清晰。

裁切

旋转图像,水印也跟着旋转了,似乎对清晰度产生了影响,但是依旧能看清。

旋转

重采样攻击

对图片进行 125% 二次立方升采样,水印对比原图反而多出了一部分。

125%采样

75% 二次立方降采样,与升采样相反的结果,水印似乎被裁切了,50% 降采样时水印已经完全不可见。

75%采样

jpg 50% 有损压缩,此时频域中水印已经完全不可见,但空域的图像除了画质有下降之外并没有太大的改变。

jpg50%压缩

使用 16 色索引图像,因为图片本身的色彩就不是特别丰富,所以在 16 色模式下依旧没有太大变化,此时盲水印的清晰度下降的比较厉害,但依旧能辨认。8 色索引模式下盲水印完全不可见。

16色索引

二值化处理,水印意外的清晰,但空域与原图已经有巨大的差异了,色彩信息几乎全部丢失。但是水印的清晰程度与阈值有关,过低或过高都无法还原水印。

二值化

涂抹攻击

使用画笔简单的在图片上画了几笔,水印清晰度略微下降,但不影响辨认。

涂抹

二次降噪,图片的噪点明显的减少,对水印的影响还是蛮大的,勉强能看清。使用 waifu2x 的三级降噪处理后水印完全不可见。

降噪

添加 10% 高斯噪声,此时水印完全不可见。

添加噪点

对图片右侧进行高斯模糊处理,似乎影响不大。

局部高斯模糊

对全图进行高斯模糊,此时频域改变巨大,完全无法辨认水印。

高斯模糊

屏摄

直接用手机的摄像头对屏幕进行拍摄,为方便观看对原始照片做了梯度纠正,不影响实际结果。

屏摄

图片中心隐隐约约能看到水印,但是注意这是理想情况下。在拍摄时极力的避免摩尔纹而且是几乎贴着屏幕进行拍摄,保留了图片的细节。实际情况中几乎不会出现这种情况,可以认为屏摄的图片中无法还原盲水印。

小技巧:屏摄的时候不水平对着屏幕就能尽可能减少摩尔纹的出现,稍微倾斜一下就行。

总结

相比传统水印添加的方法,频域盲水印的隐匿性与鲁棒性(抗攻击性)都更高,能抵挡大部分常见的攻击。

如果水印不清晰可以适当增加能量,但是能量越高,对画质影响越明显,鲁棒性与隐匿性是互斥的。