图片傅里叶变换加入盲水印Python源代码实现

原理:

图片经过傅里叶变换后,水印图片直接按像素覆盖到频率域,因为频谱是中心对称的,所以加水印也要对称的加,具体就是图片分上下两部分,左上加了什么,右下也要加同样的内容。之后傅里叶反变换回去。解水印的时候变换到傅里叶变换提取就可以了。

注意点:

(1) 水印图片的大小要小于要加入水印图片大小的一半(为了成中心对称)。

(2) 图片都要用png或bmp格式,不能用有损压缩的jpg等。

(3) 加水印的时候可以把频谱或水印图片的位置随机化,但要记住这个位置信息,比如我这里用某个固定的随机数种子,解水印的时候恢复到随机位置。

(4) 依水印图片加进去的大小和强度(混合的比例因子),图像在反变换回去的时候会有损失的,仔细看能看到痕迹。

例子:

原图:

水印图片:


加入盲水印后的结果:



反变换解水印:



在频域加水印是以牺牲一定的图像整体质量为代价的。

Python实现的源代码:

https://github.com/linyacool/blind-watermark

如果对您有帮助,麻烦在Github里点下Star,谢谢啦~


你可能感兴趣的:(算法,python,盲水印,傅里叶变换,源代码,数字水印)