资源描述:
《基于小波变换域的数字水印new》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、基于小波变换域的数字水印一例1数字水印技术数字水印技术(DigitalWatermark),是指用信号处理的方法在数字化的多媒体数据中嵌入隐藏的标记,这种标记通常是不可见的,只有通过专用的检测器或阅读器才能提取。数字水印是信息隐藏技术的一个重要研究方向。嵌入数字作品中的信息必须具有以下基本特征才能称为数字水印。(1)隐藏性:在数字作品中嵌入数字水印不会引起明显的降质,并且不易被察觉。(2)隐藏位置的安全性:水印信息隐藏于数据而非文件头中,文件格式的变换不应导致水印数据的丢失。(3)鲁棒性:所谓鲁棒性是指在经历多种无意或有意的信
2、号处理过程后,数字水印仍能保持完整性或仍能被准确鉴别。可能的信号处理过程包括信道噪声、滤波、数/模与模/数转换、重采样、剪切、位移、尺度变化以及有损压缩编码等。2数字水印算法现在典型数字水印算法主要有:空间域算法,变换域算法,压缩域算法,NEC算法,生理模型算法等。3基于小波变换域的数字水印小波水印算法根据小波分解后产生的近似子带和细节子带系数的不同,确定水印嵌入的不同位置,主要可以分为低频域水印和高频域算法。低频域水印算法主要考虑近似子带系数能量大,经过一般的信号处理后仍能保留的特点,嵌入一定强度的水印,达到不影响原图视觉质
3、量的效果。高频域水印算法利用人眼的视觉特性(HVS),在细节子带的边缘和纹理处系数较大,嵌入水印信息后,人眼对图象的变化不敏感。4基于小波变换域的数字水印实例本实例是一种基于离散小波变换(DWT)和HVS的数字水印算法。(1)人类视觉系统(HVS)对于图像来说,HVS的主要特性一般表现在三个方面:亮度特性、频域特性、图像类型特性。其中,亮度特性是HVS特性中最基本的一种,主要是关于人眼对亮度变化的敏感性。一般来说,人眼对高亮度的区域所附加的噪声其敏感性较小,这就意味着,如果图像的背景亮度越高,那么它所能潜入的附加信息就越多。对
4、于频域特性来说,如果将图像从空域变换到频域,那么,频率越高,人眼的分辨能力就越低;频率越低,人眼的分辨能力就越高。HVS的频域特性说明人眼对高频的内容其敏感性较低。从图像类型特性来说,图像可分为大块平滑区域和纹理密集区域。HVS对于平滑区域的敏感性要远高于纹理密集区域,其所能嵌入的信息就越多。HVS对于不同的颜色其敏感性也各有不同,该特性对于彩色图像的数字水印研究很有意义。对于彩色图像来说,其每一个像素都可分为R、G、B三种基色,在向彩色图像嵌入水印时,根据人眼对不同颜色的敏感性的不同,从而调整水印的嵌入能量,能使嵌入水印后的
5、图像有较好的质量。根据人眼对各种颜色的不同敏感性,在此取R:G:B=1:2:4。(2)水印嵌入算法对于二维的图像信号来说,经过一次DWT变换后,图像被分解为4幅,其中左上角是原图像的平滑逼近(低频),左下角为垂直细节,右上角为水平细节,右下角为原图像的细节分量(高频)。然后,可以继续对左上角的低频分量进行同样的第2次、第3次等小波变化。经过小波分解后,其低频分量是对原图像的近似,所以在该频段中加入的水印具有较强的鲁棒性。但人眼对于低频分量加入水印的敏感性要远高于对高频分量加入信息。另一方面,由图像压缩知识可知,在高频段加入的水
6、印在图像进行有损压缩的操作中较易被丢失。综合以上考虑,本算法对图像采用了不同的基色乘以不同加权系数的方法来解决可视失真,并通过将水印嵌入中频段以及多次嵌入水印低频小波系数的方法来增强水印的鲁棒性。本算法先将原始彩色数字图像分解为3个基色分量CR、CG、CB,分别对该三个基色分量作2层小波分解。然后,将彩色数字水印同样分解为WR、WG、WB三个基色分量,分别对其进行一次小波分解。然后便将彩色数字水印的三级色分解系数对应嵌入到原始彩色图像的三基色分解系数中,嵌入公式为:CR(G,B)A2(i,j)=CR(g,B)A2(i,j)+r
7、(g,b)*WR(G,B)A2(i,j)CR(G,B)H1(i,j)=CR(g,B)H1(i,j)+r(g,b)*WR(G,B)H1(i,j)CR(G,B)V1(i,j)=CR(g,B)V1(i,j)+r(g,b)*WR(G,B)V1(i,j)CR(G,B)D1(i,j)=CR(g,B)D1(i,j)+r(g,b)*WR(G,B)D1(i,j)其中,r(g,b)A2(i,j)表示原始图像的红色分量R(或G、B)经小波2层分解后的低频区域中的第i,j各系数的值,其余类推。并且r:g:b=2:1:4。(3)程序代码如下:funct
8、iondwtg1clearall;clc;%保存开始时间start_time=cputime;figure(1);%读出原始图像subplot(1,3,1);input=imread('Bliss.bmp');imshow(input);title('原始图像');%读出水印