一种结合混沌密码理论的彩色图象水印算法

本文是本人毕业时发表的论文.

原文地址:http://www.ahcit.com/lanmuyd.asp?id=1972  

摘  要  文章提出一种集混沌加密技术,小波变换,扩频技术为一体的彩色图像水印算法。该算法先将水印信息通过混沌序列加密,再进行扩频调制弱化水印信息,然后在彩色载体图像绿色分量上进行小波变换,利用人类视觉模型(HVS)特性,在低频系数上嵌入处理后的水印信息。实验结果和攻击测试表明,该算法具有很好的鲁棒性以及安全性。

  关键词  扩频 ;鲁棒性;盲水印;混沌序列;小波变换;加密技术
 
1  引言
     如何有效的保证数字化信息的机密性、完整性、可用性、可控性和不可抵赖性是当前信息安全技术研究领域亟待解决的课题。
     目前,国际上正在探讨使用一些非传统的方法进行信息加密与隐藏。为了保证水印信息可靠地通过载体传送,一般用纠错码(ECC)编码 [1]或M序列调制 [2]。文献[3]给出了一种基于混沌序列的图像加密技术,以初始条件为密钥生成混沌序列,并将它映射为2K值混沌序列;然后依据该序列随机地修改图像每个像素点的灰度值。 图像的解密结果对混沌序列的初始值有较强的依赖性,安全性较高。
图表 1水印嵌入流程图
     实际上,基于混沌理论的保密通信、信息加密和信息隐藏技术的研究已成为国际非线性科学和信息科学两个领域交叉融合的热门前沿课题之一,也是国际上高科技研究的一个新领域。尽管已有许多混沌加密方案的提出,但混沌密码学的理论还未完全成熟,混沌密码学的研究仍然是一个新的具有挑战性的前沿课题。基于上述原因,本文提出了一种基于混沌理论的信息加密的彩色图像水印算法,该算法以混沌理论为基础,利用初始密钥生成相应的实数值混沌序列,对二值水印图像加密,然后采用扩频技术调制扩频以弱化水印信息。对宿主图像绿色分量进行小波变换,将水印信息嵌入位置选择在能量比较集中的低频系数部分,水印提取时需要密钥。由于该算法采用了多重加密,所以安全性非常好,并能够有效的抵抗噪声攻击和剪切攻击和高斯低通滤波攻击,具有较强的鲁棒性。
图表 2  水印提取流程图

2  混沌系统原理

     混沌现象是在非线性动力系统中出现的确定性的、类似随机的过程,这种过程既非周期又不收敛,并且对切始值有极其敏感的依赖性,
一维离散时间非线性动力系统定义如下:
                         (1.1)
    其中, x k ∈ P ,k=0,1,2,3…,我们称其为状态。 而θ: P→P 是一个映射,将当前状态x k映射到下一个状态x k+1。如果我们从一个初始值x 0 开始,反复应用θ, 就得到一个序列{ x k ; k=0,1,2,3…..}。该序列称为该离散时间动力系统的一条轨迹。
一类非常简单却被广泛研究的动力系统是logistic映射,其定义如下:
                                     (1.2)
 
  其中, 0 ≤υ ≤4 称为分枝参数,x k ∈(0,1)。混沌动力系统的研究工作指出,当3.5699456…< μ≤ 4 时,logistic映射工作于混沌态。也就是说,由初始条件x 0 在logistic映射的作用下所产生的序列 { x k ; k=0,1,2,3…..}是非周期的、不收敛的并对初始值非常敏感。
另一类简单的映射是Chebyshev 映射,以阶数为参数。k 阶Chebyshev 映射定义如下:
                            (1.3)
  其中 x k 的定义区间是(-1,1)。事实是通过简单的变量代换,logistic映射同样可以在区间(-1, 1)上定义。其形式如下:
                       其中λ∈ [ 0,2]         (1.4)
  在λ=2的满射条件下,logistic映射与Chebyshev映射是拓扑共轭的,其所生成的序列的概率分布函数PDF也是相同的:
                         (1.5)
  对于公式(1.2)形式的logistic映射,如果μ=4, PDF 可以改写为:
                             (1.6)
     通过ρ(x),我们可以很容易地计算得到logistic映射所产生的混沌序列的一些很有意义的统计特性。例如,x的时间平均即混沌序列轨迹点的均值是:
                          (1.7)
  关于相关函数,独立选取两个初始值x 0 和y 0 ,则序列的互相关函数为:
             (1.8)
  其中pdf ρ(x,y)= ρ(x) *ρ(y)。
  而序列的自相关函数ACF(auto-correlation functions)则等于delta 函数 δ(l)。这正是我们所需要的。
     Logistic序列的以上特性表明,尽管混沌动力系统具有确定性,其遍历统计特性等同于白噪声,其具有形式简单,初始条件的敏感性和具备白噪声的统计特性等诸多特性。

3  扩频原理

  数字水印技术的研究大约始于 1994 年,早期的算法强调水印的不可见性而忽视水印的健壮性,这些算法的理论基础主要源自统计学和图像编码、处理领域。 扩频技术的运用标志着水印技术的重大进步。扩频技术起源于通信系统,最早只是用于军用通信系统、制导系统等军用系统,它的理论基础来源于信息论和抗干扰理论。香农( Shannon )在其信息论中得到有名公式:
                            (1.9)
  式中 C 表示信道容量, W 是信道带宽, N 是噪声功率, S 是信号功率。香农公式表明了一个无误差地传输信息的能力同存在与信道中的信噪比以及用于传输信息的信道带宽之间的关系。
令 C 是希望具有的信道容量,即要求的信息,对式( 1.9 )换成以 e 为底的对数
                             (1.10)
  对于干扰环境的典型情况, S/N<<1, 对上式用幂级数展开,略去高次项得
                                        (1.11)
  通过上述的分析可得出一个重要结论:对于给定的信道容量 C 可以用不同的带宽 W 和信噪比 S/N 的组合来传输信息。如减少带宽则必须发送较大的信号功率;如有较大的传输带宽,则同样的信道容量能够用较小的信号功率(较小的 S/N )来传送,这表明宽带系统表现出较好的抗干扰性。因此,当信噪比太小,不能保证通信质量时,常用宽带系统改善通信质量,使信号在强干扰情况下,仍然可以保持可靠通信。
  在数字水印技术中,将原始数据的频域看作通信信道C,水印看作将通过C的信号S,各种有意无意的干扰看作噪声N。利用扩频技术原理,将水印分布在许多数据频域系数中,加入每个频域系数的信号能量很小且不可随意检测。然而,水印检测过程知道水印的位置和内容,它能将许多微弱的信号集中起来形成具有较高信噪比的输出值,要破坏水印需要很强的噪声信号加入所有频域系数中,但是,破坏水印的同时也造成原始数据质量严重下降。
  因此,利用扩频原理的数字水印技术具有很高的健壮性和安全性。第一,水印的位置不明显且水印的值具有随机性;第二,频域区域的适当选择,使得有意、无意破坏水印的同时也破坏了原数据。

4  水印序列的生成

  设二值水印图像I大小为m×m。由密钥值k 0采用公式(1.4)生成实数值混沌序列x k,k=1,2,3,……,m×m。对x k采用如下公式进行二值量化:
                       (1.12)
  由此得到二值混沌序列{H(x k ); k=1,2,3,……, m×m },这里分记为Q i
将I转换为相应的一维二进制信号I i′,其中i=1,2,3……m×m;将I i′中的0映射为-1,1映射为1,则得到I j″∈{ - 1 , 1 },j=1,2,3……m×m;将得到的I j″序列利用混沌序列Q i加扰,得到第一次加密后的序列,然后将此加密后的序列用一个大整数因子Z进行采样扩展,并由此得到扩展弱化后的水印序列K i=I j″,其中(j-1)Z+1≦i≦jZ 。对K i进行调制,调制序列是密钥k 1采用公式(1.4)(1.12)得到的二值混沌序列P i,  (i=1,2,3……m×m×Z),调制之后的最终水印信号序列B i=K iP i ,B i∈{ - 1 , 1 }。这里相当于使用k 0,k 1,,Z对水印序列进行了三次加密。

5  水印信息的嵌入

  通过把图像进行二维小波分解,发现能量大部分集中在低频部分,出于对透明性的考虑,水印应该嵌在最不重要的频带系数上,但是经过一定图像处理后,水印很容易丢失,鲁棒性不强。出于对鲁棒性的考虑,水印应该添加在最重要的频带系数上,但这又会使图像质量严重下降。于是有人折中选择在中频系数上嵌入水印信息 [4],取得了一定的效果。该文利用人类视觉模型(HVS)特性,在人眼不敏感的低频系数上嵌入处理后的水印信息,同时在绿色分量嵌入水印比在红色或蓝色分量嵌入水印能更好地抵抗有损压缩和加噪攻击,具有更好的鲁棒性,因此,该文在彩色图像绿色分量的低频系数上嵌入水印,设彩色载体图像C大小为M×N,具体处理过程如下:
  (1)取彩色图像的绿色分量,在此分量上进行一阶小波变换DWT
   (2)取该分量低频系数序列y i(其中y i按绝对值大小顺序排列)利用如下公式进行水印信息叠加:
                     (1.13)
  其中α为拉伸因子,α越小,水印的透明性越好,但是水印的稳健性越差;α越大,则水印的稳健性越好,但视觉的透明性越差。本文取α=0.1。
  (3)将该分量经过小波反变换DWT -1,并对彩色图像进行重构,得到嵌入水印后的图像。

6  水印信息的提取与检测

  水印检测方法采用如下假设检测:
                 (无水印)
        (有水印)

图表 3 载体图像和水印比照图    
  其中,F*,F分别代表待测图像和原始图像中用来隐藏水印的象素或特征值,W*为待测水印序列;N为噪声,由于嵌入水印的图象可能存在失真,从中所检测到的水印也将在一定程度上与原始水印有所不同,为了确定图像中是否含水印需计算W*与W的相似度。具体处理过程如下:
    (1)分别取待测彩色图像和原始彩色图像的绿色分量,并在此分量上进行一阶小波变换(DWT)后,计算得到低频系数的差值B i
    (2)利用B i与 B i′采用公式(1.14)计算NC相关值,
                    (1.14)
  扩频水印存在的标准为:若NC>T,可以判断被测图像中是否有序列B i,T的选择必须考虑到漏警率和虚警率。根据实验,本文采用T=0.90;
     (3)如果扩频水印存在,可以对其采用水印生成的反向顺序,进行解调,反扰乱,得到最终的水印图像。

7  实验结果分析

     本文采用的原始宿主图像是512×512的lena标准彩色测试图像,本文所采用的水印图像是64×64的二值图像水印。图表3(a)(b)(c)(d)分别为原始载体图像、原始水印、嵌入水印后的载体图像和提取出的水印。这里选择扩频整数因子Z=3,混沌初始密钥k 0= 0.2478 , k 1=0.23454 。
水印嵌入结果(图3b)进行评估,PSNR=40.8050 ,NC=0.9997。由此可见水印具有良好的透明性。
     对嵌入水印后的lena图像进行噪声干扰、剪切攻击和滤波攻击,下面给出了几个水印提取和检测结果,图表4是噪声干扰后提取的水印图像,图表5是剪切后(剪切部分用白色填充)提取的水印图像,图表6是采用高斯低通滤波提取的水印图像:

                         
 
图表 4 各种强度噪声攻击后提取的水印
 

图表 5 各种剪切后提取的水印图表  

                                       图表6低通滤波后提取的水印

8  实验结论

  本文充分利用了小波的优点和人眼的视觉特性,同时,利用混沌原理和扩频技术对水印进行处理,使得算法有很强的隐蔽性和安全性,而且嵌入的水印具有很好的鲁棒性,实验证明该算法具有很好的抗噪声干扰、裁减等优良性能。而且算法安全、易于实现,对彩色数字图像版权保护的提供了一个参考。

参考文献

[1]  J.R. Hernández, F. Pérez-González, J.M. Rodrígez, G.Nieto, Performance analysis of a 2-D-multipulse amplitude modulation scheme for data hiding and watermarking of still images, IEEE J. Selected Areas Comm. 16 (4) (May 1998) 510-523.
[2] M. Kutter, Digital image watermarking: hiding information in images, Ph.D. Thesis, EPFL, Lausanne, Switzerland, August 1999.
[3] 张小华,刘芳,焦李成.一种基于混沌序列的图像加密技术.中国图像图形学报. Vol.8,No.4. 2003
[4] 李象霖, 张妙兰 , 冯德锦 . 一种DCT变换域的图像数字水印技术[A].中国科学技术大学 研究生院.北京:2000.12.1
  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
好,我可以为您提供一个基于logistics混沌系统彩色图像加密算法的MATLAB代码。 首先,需要定义logistics混沌系统的迭代公式: ```matlab function x = logistics_chaos(x0, r, n) % x0: 初始值 % r: 控制参数 % n: 迭代次数 x = zeros(1, n); x(1) = x0; for i = 2:n x(i) = r * x(i-1) * (1 - x(i-1)); end ``` 接着,定义图像加密函数: ```matlab function encrypted_img = encrypt_img(img, key) % img: 原始图像 % key: 加密密钥 % 将图像拆分为RGB三个通道 R = img(:, :, 1); G = img(:, :, 2); B = img(:, :, 3); % 获取图像尺寸 [M, N, ~] = size(img); % 将密钥转换为logistics混沌系统的初始值 x0 = key / 255; r = 3.9; n = M * N * 3; chaos_seq = logistics_chaos(x0, r, n); % 将混沌序列转换为0~255之间的整数 chaos_seq = uint8(chaos_seq * 255); % 生成置换矩阵 perm_matrix = reshape(1:M*N*3, [M, N, 3]); for k = 1:3 perm_matrix(:, :, k) = reshape(perm_matrix(randperm(M*N), k), M, N); end % 对RGB三个通道进行加密 R_encrypted = bitxor(perm_matrix(:, :, 1), R); G_encrypted = bitxor(perm_matrix(:, :, 2), G); B_encrypted = bitxor(perm_matrix(:, :, 3), B); % 将加密后的RGB三个通道合并为彩色图像 encrypted_img = cat(3, R_encrypted, G_encrypted, B_encrypted); ``` 最后,定义解密函数: ```matlab function decrypted_img = decrypt_img(encrypted_img, key) % encrypted_img: 加密后的图像 % key: 加密密钥 % 将加密后的图像拆分为RGB三个通道 R_encrypted = encrypted_img(:, :, 1); G_encrypted = encrypted_img(:, :, 2); B_encrypted = encrypted_img(:, :, 3); % 获取图像尺寸 [M, N, ~] = size(encrypted_img); % 将密钥转换为logistics混沌系统的初始值 x0 = key / 255; r = 3.9; n = M * N * 3; chaos_seq = logistics_chaos(x0, r, n); % 将混沌序列转换为0~255之间的整数 chaos_seq = uint8(chaos_seq * 255); % 生成置换矩阵 perm_matrix = reshape(1:M*N*3, [M, N, 3]); for k = 1:3 perm_matrix(:, :, k) = reshape(perm_matrix(randperm(M*N), k), M, N); end % 对RGB三个通道进行解密 R_decrypted = bitxor(perm_matrix(:, :, 1), R_encrypted); G_decrypted = bitxor(perm_matrix(:, :, 2), G_encrypted); B_decrypted = bitxor(perm_matrix(:, :, 3), B_encrypted); % 将解密后的RGB三个通道合并为彩色图像 decrypted_img = cat(3, R_decrypted, G_decrypted, B_decrypted); ``` 这样,您就可以调用`encrypt_img`函数对原始图像进行加密,调用`decrypt_img`函数对加密后的图像进行解密了。 注意:由于本算法使用了随机数生成置换矩阵,因此每次加密的结果都是不同的。为了确保解密成功,请务必保存好加密密钥。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值