基于混沌的变换域图像数字水印算法及其测试

一、项目需求分析

1.1项目介绍

本算法是将数字水印置乱加密后微小的扰动原始彩色图像经离散余弦变换后的对应系数,从而达到数字水印嵌入的目的。 实验表明算法简单高效,原图像与嵌入水印后图像差异小,水印提取准确,能较好的保证数字水印不可感知性,在对嵌入水印图像进行各种加噪、裁剪、旋转、压缩等处理后,水印仍有较强的鲁棒性。

1.2功能需求

  1. 实现混沌随机数的生成
  2. 实现图像加解密
  3. 实现数字水印置乱

  4、实现变换域图像数字水印的嵌入与提取

5、对含水印图像进行鲁棒性测试和相关性分析

  • 项目分析与设计

2.1项目需解决的关键技术问题

  1. 各种图像格式之间的相互转换,各种值类型间的转换
  2. DCT水印嵌入和提取
  3. 混沌随机数的生成和图像加解密

4、对生成的水印图像进行攻击测试

2.2项目流程

  1. 混沌序列的生成和图像加解密

 

  1. 水印和嵌入与提取

 

  1. 鲁棒性检测

   对含水印的图像进行加噪、加噪、裁剪、旋转、压缩等攻击,再提取出的水印与未受攻击的图像提取出的水印进行比较。

 

2.3功能模块

项目主要分为三部分:

扫描二维码关注公众号,回复: 9154723 查看本文章

一、水印图像的生成:

   采用改进型logistic混沌序列生成算法,生成一维的混沌序列,再转为二维的二值矩阵与原始二值图片进行异或加密,加密后的图像再进行置乱,消除水印像素间的相关性,故能提高水印抗图像剪裁等操作的鲁棒性,因为有置乱操作,剪切攻击后恢复的水印也是完整的。置乱后的图片为水印图片。

二、数字水印嵌入和提取:

Step1: 将原始彩色载体图像进行 8伊8 的分块,得到(M*M2)/(8*8)个子块Block。

Step2: 对每个子块进行 DCT 变换,各自得到 8*8 的系数矩阵。

Step3: 对水印图像进行 Arnold 置乱。

Step4: 依据 Arnold 置乱后的水印图像W(i,j) 来扰动对应的Block(i,j)系数矩阵,采用乘性扰动方式,微调系数矩阵各元素的值,即

式中,a为扰动因子,通常琢 取很小的正数。 本算法的a 取值为0. 04。

Step5: 对 扰 动 后 的 图 像 块 进 行 反 余 弦 变 换(IDCT,Inverse Discrete Cosine Transform) ,合并图像块,视其为嵌入水印的图像。

水印提取只需采用与水印嵌入的逆操作即可实现。

 

三、对含水印的图像进行攻击和测试

 对含水印的图片分别进行噪声攻击、压缩攻击、剪切攻击、旋转攻击,测试与不受攻击提取的水印间的相关性,改变攻击参数测试水印的鲁棒性强弱。

 

三、项目设计与实现

3.1项目设计

3.3.1数字水印基本框架

一个数字水印系统一般包括三个基本方面:水印的生成、水印的嵌入和水印的提取或检测。数字水印的嵌入和提取的一般过程基本框架如图3.1,图3.2所示。

图3.1 水印嵌入的一般过程基本框架

图3.2 水印检测的一般过程基本框架

 

 

3.2项目实现

3.2.1 水印图片的生成

  1. 混沌随机数的生成

   采用了改进型logistic映射,且为满映射状态,生成一维的混沌随机数序列再将其归一化,初始值为0.学号。

 

混沌序列(double):

归一化后(uint8):

对归一化后的序列进行二值化(logical):im2bw(B)默认是0.5,换算成255就是127.5,小于127.5为0,所以7和9是0

 

二维的混沌序列

 

  1.  二维混沌序列和图片进行异或操作加密

      

  1. 对加密后图像进行解密

  1.  对加密后的图像进行置乱

图像置乱是一种图像加密技术,通过某种算法仅将一幅图像像素的次序打乱,而像素个数及图像的直方图不变。 由于对水印进行置乱可以消除水印像素间的相关性,故能提高水印抗图像剪裁等操作的鲁棒性。目前用的较多的置乱方法有 Fass 曲线,Gray 代码、Arnold 变换和幻方方式等。Arnold 变换直观且具有周期性,是 Arnold 在遍历理论中提出的一种变换,也称猫脸变换 ( Arnold忆s Cat Map)。

 

3.2.2 DCT数字水印嵌入和提取

 

1、 DCT水印嵌入

DCT 变换的基本原理是将图像f(x,y) 分块后的每一子块单独进行二维 DCT 变换,将每个数据单元的值转化为 M伊N 个系数,构成系数矩阵。 将系数按Zig-Zag 顺序排列,左上角第一个元素是直流分量(DC,Direct Current),称为直流系数,表示该数据块的灰度平均值。本实验对直流层进行嵌入。

 

2、 DCT对水印的提取

3、 对提取出的水印进行置乱还原,再对还原的图像进行解密

 

 

 

置乱还原:

 

解密:置乱还原后的水印与混沌二值矩阵进行异或。

    

 

 

3.2.3 对水印图像进行攻击和测试

1、 对含水印的图像进行攻击和测试,主要用了高斯噪声攻击和椒盐噪声攻击、旋转攻击、压缩攻击、剪切攻击,除了旋转攻击之外抵抗攻击性挺强的,基本上能看出来原图形,旋转攻击只有是1度的时候效果还可以。

 

2、相关性分析

 

 

3、 剪切攻击测试

剪切宽64像素长128像素时:

  

剪切宽128 128时:

      

 

剪切256 128时:已经不是很清楚了

   

4、旋转攻击测试

旋转1度

  

相关性:

 

 

 

旋转2度:图片已经很模糊了,相关性是还可以的

 

相关性:

旋转3度就完全看不清了

 

相关性也降到了0.76

  1. 噪声攻击测试

高斯噪声:

  

相关性:

 

椒盐噪声:

   

相关性:

 

  1. 压缩攻击测试

压缩比:75

 

   

相关性:

 

压缩比:60

  

相关性:

 

压缩比 40

   

 

压缩比 30

 

 

 

压缩比 15时图片已经看不怎么清楚了

  

传图不易,如需完整代码请下载!

https://download.csdn.net/download/qq_39980334/11258396

发布了24 篇原创文章 · 获赞 7 · 访问量 3783

猜你喜欢

转载自blog.csdn.net/qq_39980334/article/details/93636062