基于空域和混沌映射的数字水印嵌入算法(1)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
王
伟,等:基于空域和混沌映射的数字水印嵌入算法
4期基于空域和混沌映射的数字水印嵌入算法
王
伟
朱理
毛旺农1
(湖南大学软件学院,长沙410082;E-mail:xxyywwywz@163.com;
湖南大学北校区网络中心,长沙410079)摘要提出一种LSB改进算法,利用混沌序列对水印预处理,而后利用固定归一化相关嵌入图像数据低位,从而改进了传统
LSB算法稳健性差的缺点。实验结果表明,采用该算法的水印在无原始图像的情况下,通过密钥能够清晰地检测到水印的存在,对常见的图像处理有较好的鲁棒性。关键词
空域
混沌鲁棒性
数字水印
图像处理
中图法分类号TP309;文献标识码
A
2005年10月25日收到
第6卷第4期2006年2月
1671-1815(2006)04-0383-04科学技术与工程
ScienceTechnologyandEngineeringVol.6No.4Feb.2006
2006Sci.Tech.Engng.
c
近年来,图像数字水印技术的研究取得了很大
进展,陆续提出了诸如空域、变换域、压缩域、基于
统计学、基于生理模型等多种数字水印算法[1—3]
,有
一些水印算法[4]已经具备了较好的鲁棒性,但是这
些算法有的只能给出“有”“无”水印的回答,而无法对嵌入的所有水印比特进行准确提取。典型数字水印的空域算法是将信息嵌入到图像点中最不重要的像素位上,再通过记录提取这些信息来检测水印,该种方法具有算法简单、速度快、容易实现等特
性,已受到人们高度重视
[5,6]
。本文利用混沌随机性好的特性,借鉴了文献[5]中的一些思想,针对LSB算法对于压缩、滤波及旋转等图像处理稳健性差的缺点,改进了传统的LSB算法,
如图1所示。实验结果表明,该水印方案安全可靠、不可见性好、对常见的图像处理有较好的鲁棒性、易于实现。
1水印信息预处理
混沌区的数据有两个特性:迭代不重复性和初值敏感性。当选定适当系数使方程进入混沌状态时,方程将进行无限不循环迭代,因此不会出现重复的迭代值。任何人如果不知道其初值都无法预测下一个迭代值,这种迭代的结果可以用来产生随机序列。
考虑一维离散混沌映射f:U→U,U"R,
xn+1=f(xn,λ),xn∈U,λ∈R
(1)
其中n=1,2,
…表示迭代次数,λ是控制系统混沌行为的参数。先由二值水印图像获得水印信号W,然后利用行扫描将其映射为一维向量W1,W1={W1(
i)|W1(i)∈{0,1},0≤i<m×n},m×n为水印图像大小。由式(1)生成的实数混沌序列二值化后可得{0,1}二值混沌序列,然后利用密钥K1可得十进制混沌伪随机序列P,P={P(i)|P(i)∈{0,1},0≤i<m×n}
。最后用生成的序列P对W1进行混沌调制,得到待嵌入水印信号Wt,Wt(i)=W1(i)’b(i)(0≤i<m×n),’在这里表示异或运算。
2水印嵌入
度量鲁棒性最简单的方法就是假设具有高检
图1水印嵌入和提取框图
科学技术与工程6卷
测值的水印比低检测值的水印鲁棒性更好,这样,检测统计量本身就成了鲁棒性的度量尺度。这里的解决方案是用一个固定归一化相关算法来进行调整,而不是调整线性相关。对每一幅作品,通过直方图处理,将每个像素值由8比特压缩为7比特,将所有像素值的第8个比特作为嵌入区域,在嵌入区域内找到与水印归一化相关期望值最接近的点。嵌入区域是一个以参考向量Wr为中心的锥体表面部分,因此,只需要找出锥体上与给定点v0距离最近的点就可以了。嵌入的操作说明如图2。
很明显这些点位于同时包含wr和v0的平面内,通
过Gram-Schmidt规格化正交,为这个平面寻找两个相互垂直的坐标轴,从而把这个问题转换成二维问题。
X=Wr
Wr
(2)Y=v0-X
(v0X)v0-X
(v0X)(3)平面上每个点都能用坐标值x和y表示为xX+yY,
X轴与参考时间向量重合。v0的坐标是
(yv0
必须是正值):
xv0
=v0X
(4)yv0
=v0Y
(5)
因为yv0
为正值,所以最近的点应该在上半平面
的线上,这条线用向量(xt,yt)表示,其中xt=cosθ,yt=sinθ,而角θ是嵌入区域的锥形内角的半角,由于θ=
arccos(tnc),tnc是期望的归一化相关性,
于是有:xt=tnc
(6)yt=1-t2nc
!(7)
算法步骤如下:
Step1:用经过散列处理的混沌序列
(其混沌初值作为密钥K1)置乱水印W;Step2:给定一个混沌初值(密钥K2)生成混沌序列{Pr|r=1,2,…}其个数为水印大小;Step3:在通过xt,yt的直线上,找到离v0最近的点vw
(在Wr的检测区域内):xvw=xt(xtxvw+ytyv0)(8)yvw=yt(xtxvw+ytyv0)
(9)Step4:取Pr对计算出的新向量vw嵌入水印,得到水印图像Iw。
3水印提取
水印提取过程中所用密钥K1和K2与嵌入过程相同,具体步骤如下:Step1:给定密钥K2在图像Iw中找到对应的向量vw,
得到水印信息Wt;Step2:再由密钥K1生成二值混沌序列P对W1解调,即:
W1′(t)=Wt(t)
"P(t),t=0,1,2,…,m×n-1;Step3:最后按行扫描顺序将W1′
映射成二维矩阵W′,W′={W′(i,j),0≤i<m,0≤j<n},W′(i,j)∈{0,1},W′即是恢复出的水印信号;Step4:采用如下的标准衡量二值水印的失真率(其中W表示W的逻辑非运算):
ws=
∑i=1i=m∑j=1j=n
W'(i,j)"W(i,j)m×n
4实验结果
本文用大小为256×256
的256灰度Lena图像用
MATLAB进行水印嵌入和提取的仿真实验,采用大小为64×64视觉可辨认的二值图像作为数字水印,嵌入水印后的图像如图3所示,结果表明该方法有很好的不可见性。
图2固定归一化的嵌入方法
384