学习
实践
活动
专区
工具
TVP
写文章

隐写术:基于2D-FFT的图像数字水印技术

隐写术:基于2D-FFT的图像数字水印技术

提到“水印”,想必大家都不会感到陌生,最常见的例如我们日常使用的小钱钱就嵌有水印(就下面这种),这种水印存在的一个重要作用就是为了防伪。

“数字水印(Digital Watermarking)技术是将一些标识信息(即数字水印)直接嵌入数字载体当中(包括多媒体、文档、软件等)或是间接表示(修改特定区域的结构),且不影响原载体的使用价值,也不容易被探知和再次修改。但可以被生产方识别和辨认。通过这些隐藏在载体中的信息,可以达到确认内容创建者、购买者、传送隐秘信息或者判断载体是否被篡改等目的。数字水印是保护信息安全、实现防伪溯源、版权保护的有效办法,是信息隐藏技术研究领域的重要分支和研究方向。”(摘自百度百科)

通过上面的这段话,我们至少可以知道,数字水印在版权保护方面具有重大的意义,而我们这篇推送也是聚焦于数字水印技术在图像版权保护方面的应用。

首先,我们区分将要讨论的“图像水印”技术指的并不是是我们日常见到的这种水印:

原因就在于这种水印不仅影响原图片质量,而且安全性太差,只需要用图像处理软件稍加处理就可以轻松的将水印去除,变成下面这样的了:

图像水印一旦去除,版权保护自然也就成了空谈,毕竟你也没办法证明这图片就是你的啊,你叫它一声它又不会答应!

那么问题来了,我们如何做到“不影响原载体的使用价值,也不容易被探知和再次修改,但可以被生产方识别和辨认”呢?本文的标题回答了这个问题——隐写术:基于2D-FFT的图像数字水印技术。

由于我们所做的工作都是针对RGB格式的图像,所以在此之前我们先对此做个简介。

三原色光模式(RGB color model)即RGB颜色模型或红绿蓝颜色模型,是一种加色模型,将红(Red)、绿(Green)、蓝(Blue)三原色的色光以不同的比例相加,以产生多种多样的色光。(三原色的红绿蓝不可能用其他单色光合成)

最直观的,我们将一张RGB格式的图像在Photoshop中打开,查看图像的通道(如下图):

可以看到一张RGB格式的图像是由红、绿、蓝三通道合成的。更进一步地,我们在matlab打开Lena的800*800像素jpg格式的图像:

可以看到,该RGB格式的图像显示为三层矩阵,无法直接显示出来。我们将其转换为单通道的灰度图再次在matlab里面打开:

可以看到这是一个800*800的方阵,并且其中的数值在0-255范围以内。了解完这些我们也就知道,数字图像处理本质上也是对一堆数据进行处理罢了。

关于傅里叶变换(DFT)及其改进算法快速傅里叶变换(FFT)二维快速傅里叶变换(2D-FFT)以及开源计算机视觉库(OpenCV),在此不做详细的阐述,有兴趣可以参考以下链接:(这可都是我精心挑选的啊~)

1.形象展示傅里叶变换:

https://www.bilibili.com/video/av19141078/

2.一小时学会快速傅里叶变换(FFT):

https://zhuanlan.zhihu.com/p/31584464

3.二维傅里叶变换是怎么进行的?

https://www.zhihu.com/question/22611929

4.OpenCV简介:

https://zh.wikipedia.org/wiki/OpenCV

下面我们就以2D-FFT算法为核心,在visual studio平台,使用C++语言结合OpenCV来为我们的图像添加数字盲水印。图像数字水印添加大致的流程如下图所示:(在水印的嵌入和检测模型中密码都不是必须包含的部分,但增加密码却可以大大提高水印的鲁棒性,本文仅用于验证,未增加密码)

图像数字水印提取大致的流程如下图所示:

下面我们在matlab中对原图像做2D-FFT,选择Lena的800*800像素JPG格式的图像作为输入:

做2D-FFT后得到的结果如下图所示:(需要注意的是,matlab的2D-FFT很暴力,能直接对三通道图像进行变换,而其他的平台,例如OpenCV则需要先对RGB图像进行通道分解后才能做傅里叶变换。)

我们使用C++结合OpenCV对单通道图像做2D-FFT的结果如图所示:

接下来在频域添加数字水印:

添加水印后的频谱图:

然后再对上面的频域图像做逆二维快速傅里叶变换(2D-IFFT),得到添加水印后的图像(与原图像几乎无太大差别,反正你肉眼肯定是看不出来啥的~):

接下来我们对上图做一些攻击实验:

1.涂抹攻击实验:

水印提取结果:

2.剪切攻击实验:

水印提取结果:

3.图像叠加攻击实验:

水印提取结果:

以上,我们简要介绍了基于2D-FFT的图像数字水印技术,在visual studio平台使用C++结合OpenCV进行了验证,并且对添加水印后的图像做了一些简单的攻击实验,由上述实验结果可知该方法的隐匿性、鲁棒性良好,能够达到版权保护的目的。

最后,这个有趣的小项目是由娜姐、小晨晨还有我共同完成的,感谢队友们辛勤滴付出,抽空总结整理出来,希望大家喜欢哟!

这是一群致力于科研传播的faculty & PhD记录分享点滴思考的平台,这里有我们在各自领域(机器学习,医疗影像,材料科学,凝聚态物理,图像处理,光学)涉猎研究的点滴感悟,有我们在国内,海外求学工作奋斗的酸甜苦辣,亦有偶尔的风月和我们的诗与远方。

想关注更多有趣的机器学习/计算物理/医疗影像/图像处理的科普/前沿研究,请关注我们的公众号:

REC

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180801G0JXKF00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

关注

腾讯云开发者公众号
10元无门槛代金券
洞察腾讯核心技术
剖析业界实践案例
腾讯云开发者公众号二维码

扫码关注腾讯云开发者

领取腾讯云代金券