如何将水印隐藏在图片中。
前言
有些东西原理其实很简单,就是想不到。
以前学到过,如何将消息隐藏在文本中,详见知识库 零宽度字符隐写。
现在,来学习一下如何将水印隐藏在图片中。
原理
-
简单来说,一种做法就是:
将图片通过傅里叶变换切到频域上去,
通过一定处理将水印信息随机分布到各个频率,尽量不影响破坏原始作品,
再通过傅里叶逆变换切回图像空域。 -
知乎的这篇回答写得很详细,我就不再啰嗦了。
传送门 -> 阿里巴巴公司根据截图查到泄露信息的具体员工的技术是什么?
简单实现
- 这篇文章做了一个简单实现,非常容易看懂
- 图片傅里叶变换加入盲水印Python源代码实现
- Python2 源码(主分支) -> linyacool/blind-watermark
- Python3 源码(python3分支) -> linyacool/blind-watermark#python3
- 搜了一个高赞的,不过并没有仔细看
一些话
- 相对于空域方法,频域加盲水印的方法隐匿性更强,抵抗攻击能力更强。
- 数字盲水印的隐匿性和鲁棒性(抗攻击性)是互斥的。
- 总的来说,个人感觉实际操作下来并没有那么玄乎,隐匿性和鲁棒性并不像展示的那么优秀,知道有这么回事就行。