导航:首页 > 源码编译 > dct域数字水印算法

dct域数字水印算法

发布时间:2022-12-11 20:52:59

‘壹’ 数字水印的水印算法

近年来,数字水印技术研究取得了很大的进步,下面对一些典型的算法进行了分析,除特别指明外,这些算法主要针对图像数据(某些算法也适合视频和音频数据)。 该类算法中,大部分水印算法采用了扩展频谱通信(spread spectrum communication)技术。算法实现过程为:先计算图像的离散余弦变换(DCT),然后将水印叠加到DCT域中幅值最大的前k系数上(不包括直流分量),通常为图像的低频分量。若DCT系数的前k个最大分量表示为D=,i=1 ,… ,k,水印是服从高斯分布的随机实数序列W =,i=1 ,… ,k,那么水印的嵌入算法为di = di(1 + awi),其中常数a为尺度因子,控制水印添加的强度。然后用新的系数做反变换得到水印图像I。解码函数则分别计算原始图像I和水印图像I*的离散余弦变换,并提取嵌入的水印W*,再做相关检验 以确定水印的存在与否。该方法即使当水印图像经过一些通用的几何变形和信号处理操作而产生比较明显的变形后仍然能够提取出一个可信赖的水印拷贝。一个简单改进是不将水印嵌入到DCT域的低频分量上,而是嵌入到中频分量上以调节水印的顽健性与不可见性之间的矛盾。另外,还可以将数字图像的空间域数据通过离散傅里叶变换(DFT)或离散小波变换(DWT)转化为相应的频域系数;其次,根据待隐藏的信息类型,对其进行适当编码或变形;再次,根据隐藏信息量的大小和其相应的安全目标,选择某些类型的频域系数序列(如高频或中频或低频);再次,确定某种规则或算法,用待隐藏的信息的相应数据去修改前面选定的频域系数序列;最后,将数字图像的频域系数经相应的反变换转化为空间域数据。该类算法的隐藏和提取信息操作复杂,隐藏信息量不能很大,但抗攻击能力强,很适合于数字作品版权保护的数字水印技术中。
1. 基于离散余弦变换的数字水印
最早的基于分块DCT水印技术出现于E Koch,J Zhao的文献。针对静止图像和视频压缩标准(JPEG和MPEG),他们的水印方案中图像也被分成8×8的块,由一个密钥随机的选择图像的一些分块,在频域的中频上稍微改变一个三元组以隐藏二进序列信息。选择在中频分量编码是因为在高频编码易于被各种信号处理方法破坏,而在低频编码则由于人的视觉对低频分量很敏感,对低频分量的改变易于被察觉。未经授权者由于不知道水印嵌入的区域,因此是很难测出水印的,此外,该水印算法对有损压缩和低通滤波是鲁棒的。将图像分割成8×8块,并对每个块做DCT变换,然后随机选择构造所有块的一个子集,对子集的每一个块,选择一组频率并嵌入二进制水印信息。由于频率组的选择不是基于最显着分量,并且频率系数的方差较小,因此该方法对噪声、几何变形以及多文档攻击比较敏感。
Cox等人于1995年提出了基于图像全局变换的水印方法,称之为扩频法。这也是目前大部分变换域水印算法中所用到的技术。它将满足正态分布的伪随机序列加入到图像的DCT变换后视觉最重要系数中,利用了序列扩频技术(SS)和人类视觉特性(HVS)。算法原理为先选定视觉重要系数,再进行修改,最常用的嵌入规则如下:
其中分别是修改前和修改后的频域系数,α是缩放因子,是第i个信息位水印。
一般说来,乘法准则的抗失真性能要优于加法准则。水印的检测是通过计算相关函数实现的。从嵌入水印的图像中提取出是嵌入规则的逆过程,把提取出来的水印与原水印作相似性运算,与制定的阈值比较,可确定是否存在水印。这是稳健性水印的奠基性算法。
Chiou-Ting Hsu等人提出一种基于分块DCT的水印,他们的水印是可辨识的图像,而不是简单的一个符号或一个随机数。通过有选择地修改图像的中频系数来嵌入水印。验证时,衡量提取出的水印同原水印之间的相似性来判断是否加入了水印
2. 基于离散小波变换的数字水印
与传统的DCT变换相比,小波变换是一种变分辨率的,将时域与频域相联合的分析方法,时间窗的大小随频率自动进行调整,更加符合人眼视觉特性。小波分析在时、频域同时具有良好的局部性,为传统的时域分析和频域分析提供了良好的结合[6]。
目前,小波分析已经广泛应用于数字图像和视频的压缩编码、计算机视觉、纹理特征识别等领域。由于小波分析在图像处理上的许多特点可用于信息隐藏的研究,所以这种分析方法在信息隐藏和数字水印领域的应用也越来越受到广大研究者的重视,目前已经有很多比较典型的基于离散小波变换的数字水印算法。
除了上述有代表性的变换域算法外,还有一些变换域水印算法,它们中有相当一部分是上述算法的改进及发展。
总的来说,与空域的方法相比,变换域的方法具有如下优点:
(1) 在变换域中嵌入的水印信号能量可以分布到空域的所有像素上,有利于保证水印的不可见性;
(2) 在变换域,人类视觉系统(HVS) 的某些特性(如频率掩蔽特性)可以更方便地结合到水印编码过程中,因而其隐蔽性更好;
(3) 变换域的方法可与国际数据压缩标准兼容,从而易实现在压缩域(compressed domain) 内的水印算法,同时也能抵抗相应的有损压缩。 人的生理模型包括人类视HVS(HumanVisualSystem)和人类听觉系统HAS。该模型不仅被多媒体数据压缩系统利用,同样可以供数字水印系统利用。利用视觉模型的基本思想均是利用从视觉模型导出的JND(Just Noticeable Difference)描述来确定在图像的各个部分所能容忍的数字水印信号的最大强度,从而能避免破坏视觉质量。也就是说,利用视觉模型来确定与图像相关的调制掩模,然后再利用其来插入水印。这一方法同时具有好的透明性和强健性。

‘贰’ DCT域图像数字水印算法,新手,这个水印嵌入程序看不明白,谁能帮我把每条注释下Q282092728,谢谢了

M=256;%原图像长度
N=32;%水印图像长度
K=8; %图像分块大小
I=zeros(M,M);%创建一个零矩阵,用于存放载体图像
J=zeros(N,N); %创建一个零矩阵,用于存放水印图像
BLOCK=zeros(K,K);%创建一个零矩阵,用于存放图像分块
%显示水印图像
subplot(1,8,2);
J=imread('14','bmp'); %读入水印图像
imshow(J); %显示水印图像
title('水印图像');
%显示原图像
subplot(1,3,2);
I=imread('11','bmp'); %读入原始图像
imshow(I); %显示原始图像
title('原始公开图像');
%嵌入水印
tem=1;%创建变量tem,没用
for p=1:N%水印图像行循环
for q=1:N%水印图像列循环
x=(p-1)*K+1; %x为载体图像行坐标
y=(q-1)*K+1; %y为载体图像列坐标
BLOCK=I(x:x+K-1,y:y+K-1); %BLOCK为载体图像I的分块,分块大小为K*K,
%初始值为I(0:K-1,0:K-1)
BLOCK=dct2(BLOCK);%对BLOCK进行二维DCT变换,得到新的BLOCK即%DCT系数矩阵BLOCK
if J(p,q)==0%如果水印图像的第(p,q)个像素为0
a=-1;%嵌入参数为-1
else
a=1; %若如果水印图像的第(p,q)个像素为1嵌入参数为1
end
BLOCK(2,1)=BLOCK(2,1)*(1+a*0.01); %对载体图像的分块的DCT系数矩阵
%BLOCK
BLOCK=idct2(BLOCK);%对DCT系数矩阵进行反变换,得到嵌入水印后的载体
%图像分块BLOCK
I(x:x+K-1,y:y+K-1)=BLOCK;%用嵌入水印后的图像分块BLOCK代替载体图像
%的对应分块
End%水印图像列循环结束
End%水印图像行循环结束
%显示嵌入水印后的图像
subplot(1,3,3);
imshow(I);%显示嵌入水印后图像
title('嵌入水印后的图像');
imwrite(I,'embedded.bmp','bmp');%将嵌入水印后图像写成bmp文件
够详细吧,希望对你有用。

‘叁’ 基于DCT域数字水印有几种方法 , 基于小波域数字水印方法有几种

DCT域水印算法
基于DCT的水印算法的最大优点就是其与国际压缩标准(JPEG}MPEG,H.261/263)兼容,
水印的嵌入和检测都能够在数据的压缩域中直接进行。但在压缩域中直接进行水印嵌入和
检测所带来的问题是:在量化后的DCT系数上添加的水印(系数的变换)可能在解压缩的过
程中被放大,从而引起水印和图像的失真。好的水印算法必须综合水印的嵌入和图像压缩
技术使失真维持到最小。
Cox等提出在图像全局DCT变换域中除Dc分量外系数幅值最大的n个系数中嵌入水印信
息,由于图像的主要能量均集中在图像低频区域(故低频区域具有较大的系数幅值),因此
相当于在图像的重要分量中嵌入水印信息。另一方面,人类视觉系统对图像的低频、高频
能量比较敏感,而对图像的高频区域变化不敏感,一般的处理都保留图像的重要分量(低
频区域),而改变非重要分量(高频区域),所以水印信息对图像处理的鲁棒性较好。
目前,大部分的DCT水印方法采用的是基于DCT的8x8图像块。E.Koch和J.Zhao从所有
图像块中随机选取一系列图像块,对其进行8x8分块DCT变换,然后将二进制的水印序列添
加到变换矩阵的中频系数来实现水印的嵌入,同时他们在水印嵌入时引入了密钥机制,实
现了水印技术与密码技术的结合:A.GBors和I.Pitas基于高斯网状分类器来抽取图像块,
采用两种方法来添加水印。一种是通过在选定图像块的DCT变换的中频系数中添加线性限
制来加入水印:另一种是在DCT系数中定义一个固定的圆形区域来进行水印嵌入,这种方法
不需要原始图像就可以进行水印的检测。
C.T.Hsu和J.L.wu等071利用可视化模型,在8x8分块DCT系数中按Zig—Zag扫描顺序选择
4x4个中频系数组成小块,通过比较相邻两个小中频系数块中相应位置上系数的大小进行
标志图像水印的嵌入。Bami等从整幅图像的DCT系数中选择中频系数作为水印的嵌入位置。
这些算法选择DCT的中频或低频系数对水印的不可见性和鲁棒性加以折衷,难以抵抗
压缩编码及其他一些图像处理的攻击,而且水印的不可见性极大的依赖于不同图像的特
性。并且他们无一例外地将Dc分量排除在外。黄继武等指出DC分量比任何AC分量都具有更
大的感觉容量,从鲁棒性出发,Dc分量最适合用来嵌入水印,结合图像照度掩蔽特性和纹
理掩蔽特性可得到不可见性和鲁棒性较好的水印算法。
dwt水印算法
自从小波技术成为MPEG-4及JPEG--2000压缩标准的核心技术以来,基于小波域的水印
算法越来越多。在小波域嵌入水印的原因是:可以防止由于JPEG-2000有损压缩而造成的水
印消除:可以利用信源编码领域对图像失真的可见性研究成果来控制水印的嵌入位置和强
度:可以实现在压缩域直接嵌入水印。此外,利用小波多分辨率分析可以更好地控制水印
在宿主图像中的分布,更好地解决鲁棒性和可见性之间的矛盾。

‘肆’ DCT域图像数字水印算法

%嵌入水印的程序代码
clear
clc
M =512;%原图像长度
N =64;%水印图像长度
K =8;
I=zeros(M,M);J=zeros(N,N);BLOCK=zeros(K,K);
%显示原图像
subplot(2,3,1);
I=imread('liftingbody.png','png');imshow(I);title('原始公开图像');
%显示水印图像
subplot(2,3,2);
J=imread('shuiyin.bmp','bmp');imshow(J);title ('水印图像');
%水印嵌入
for p=1:N
for q=1:N
x=(p-1)*K+1; y=(q-1)*K+1;
BLOCK =I(x:x+K-1,y:y+K-1);BLOCK=dct2(BLOCK);
if J(p,q)==0
a=-1;
else
a=1;
end
BLOCK(1,1)=BLOCK(1,1)*(1+a*0.03);BLOCK=idct2(BLOCK);
I(x:x+K-1,y:y+K-1)=BLOCK;
end
end
%显示嵌入水印后的图像
subplot(2,3,3);
imshow(I);title('嵌入水印后的图像');
imwrite(I,'watermarked.bmp','bmp');
%从嵌入水印的图像中提取水印
I=imread('liftingbody.png','png');
J=imread('watermarked.bmp','bmp');
J=imnoise(J,'gaussian',0,0.01);
subplot(2,3,4);imshow(J,[]);title('加入高斯噪声');
for p=1:N
for q=1:N
x=(p-1)*K+1;
y=(q-1)*K+1;
BLOCK1 =I(x:x+K-1,y:y+K-1);
BLOCK2 =J(x:x+K-1,y:y+K-1);
BLOCK1=dct2(BLOCK1);
BLOCK2=dct2(BLOCK2);
a = BLOCK2(1,1)/BLOCK1(1,1)-1;
if a<0
W(p,q)=0;
else
W(p,q)=1;
end
end
end
%显示提取的水印
subplot(2,3,5);
imshow(W);
title('从含水印图像中提取的水印');
至于分析算法对噪声攻击的抵抗性能.你需要计算PSNR和相关系数NC就可以了

‘伍’ 关于数字水印常用算法的实现原理

典型数字水印算法
近年来,数字水印技术研究取得了很大的进步,下面对一些典型的算法进行了分析,除特别指明外,这些算法主要针对图像数据(某些算法也适合视频和音频数据)。
空域算法
该类算法中典型的水印算法是将信息嵌入到随机选择的图像点中最不重要的像素位 (LSB:least significant bits)上,这可保证嵌入的水印是不可见的。但是由于使用了图像不重要的像素位,算法的鲁棒性差,水印信息很容易为滤波、图像量化、几何变形的操作破坏。另外一个常用方法是利用像素的统计特征将信息嵌入像素的亮度值中。
Patchwork算法
方法是随机选择N对像素点 (ai,bi) ,然后将每个ai点的亮度值加 1 ,每个bi点的亮度值减 1,这样整个图像的平均亮度保持不变。适当地调整参数,Patchwork方法对JPEG压缩、FIR滤波以及图像裁剪有一定的抵抗力,但该方法嵌入的信息量有限。为了嵌入更多的水印信息,可以将图像分块,然后对每一个图像块进行嵌入操作。
变换域算法
该类算法中,大部分水印算法采用了扩展频谱通信 (spread spectrum communication)技术。算法实现过程为:先计算图像的离散余弦变换 (DCT),然后将水印叠加到DCT域中幅值最大的前k系数上(不包括直流分量),通常为图像的低频分量。若DCT系数的前k个最大分量表示为D=,i=1 ,… ,k,水印是服从高斯分布的随机实数序列W =,i=1 ,… ,k,那么水印的嵌入算法为di = di(1 + awi),其中常数a为尺度因子,控制水印添加的强度。然后用新的系数做反变换得到水印图像I。解码函数则分别计算原始图像I和水印图像I*的离散余弦变换,并提取嵌入的水印W*,再做相关检验 以确定水印的存在与否。该方法即使当水印图像经过一些通用的几何变形和信号处理操作而产生比较明显的变形后仍然能够提取出一个可信赖的水印拷贝。一个简单改进是不将水印嵌入到DCT域的低频分量上,而是嵌入到中频分量上以调节水印的顽健性与不可见性之间的矛盾。另外,还可以将数字图像的空间域数据通过离散傅里叶变换(DFT)或离散小波变换(DWT)转化为相应的频域系数;其次,根据待隐藏的信息类型,对其进行适当编码或变形;再次,根据隐藏信息量的大小和其相应的安全目标,选择某些类型的频域系数序列(如高频或中频或低频);再次,确定某种规则或算法,用待隐藏的信息的相应数据去修改前面选定的频域系数序列;最后,将数字图像的频域系数经相应的反变换转化为空间域数据。该类算法的隐藏和提取信息操作复杂,隐藏信息量不能很大,但抗攻击能力强,很适合于数字作品版权保护的数字水印技术中。
压缩域算法
基于JPEG、MPEG标准的压缩域数字水印系统不仅节省了大量的完全解码和重新编码过程,而且在数字电视广播及VOD(Video on Demand)中有很大的实用价值。相应地,水印检测与提取也可直接在压缩域数据中进行。下面介绍一种针对MPEG-2压缩视频数据流的数字水印方案。虽然MPEG-2数据流语法允许把用户数据加到数据流中,但是这种方案并不适合数字水印技术,因为用户数据可以简单地从数据流中去掉,同时,在MPEG-2编码视频数据流中增加用户数据会加大位率,使之不适于固定带宽的应用,所以关键是如何把水印信号加到数据信号中,即加入到表示视频帧的数据流中。对于输入的MPEG-2数据流而言,它可分为数据头信息、运动向量(用于运动补偿)和DCT编码信号块3部分,在方案中只有MPEG-2数据流最后一部分数据被改变,其原理是,首先对DCT编码数据块中每一输入的Huffman码进行解码和逆量化,以得到当前数据块的一个DCT系数;其次,把相应水印信号块的变换系数与之相加,从而得到水印叠加的DCT系数,再重新进行量化和Huffman编码,最后对新的Huffman码字的位数n1与原来的无水印系数的码字n0进行比较,只在n1不大于n0的时候,才能传输水印码字,否则传输原码字,这就保证了不增加视频数据流位率。该方法有一个问题值得考虑,即水印信号的引入是一种引起降质的误差信号,而基于运动补偿的编码方案会将一个误差扩散和累积起来,为解决此问题,该算法采取了漂移补偿的方案来抵消因水印信号的引入所引起的视觉变形。
NEC算法
该算法由NEC实验室的Cox等人提出,该算法在数字水印算法中占有重要地位,其实现方法是,首先以密钥为种子来产生伪随机序列,该序列具有高斯N(0,1)分布,密钥一般由作者的标识码和图像的哈希值组成,其次对图像做DCT变换,最后用伪随机高斯序列来调制(叠加)该图像除直流(DC)分量外的1000个最大的DCT系数。该算法具有较强的鲁棒性、安全性、透明性等。由于采用特殊的密钥,因此可防止IBM攻击,而且该算法还提出了增强水印鲁棒性和抗攻击算法的重要原则,即水印信号应该嵌入源数据中对人感觉最重要的部分,这种水印信号由独立同分布随机实数序列构成,且该实数序列应该具有高斯分布N(0,1)的特征。
生理模型算法
人的生理模型包括人类视HVS(HumanVisualSystem)和人类听觉系统HAS。该模型不仅被多媒体数据压缩系统利用,同样可以供数字水印系统利用。利用视觉模型的基本思想均是利用从视觉模型导出的JND(Just Noticeable Difference)描述来确定在图像的各个部分所能容忍的数字水印信号的最大强度,从而能避免破坏视觉质量。也就是说,利用视觉模型来确定与图像相关的调制掩模,然后再利用其来插入水印。这一方法同时具有好的透明性和强健性。

阅读全文

与dct域数字水印算法相关的资料

热点内容
dota2怎么设置国服服务器地址 浏览:212
单片机高电平驱动 浏览:115
ios多选文件夹 浏览:909
加强行车调度命令管理 浏览:243
服务器已禁用什么意思 浏览:150
部队命令回复 浏览:755
神奇宝贝服务器地图怎么设置 浏览:382
加密算法输出固定长度 浏览:862
程序员去重庆还是武汉 浏览:121
服务器如何撤销网页登录限制 浏览:980
微信公众平台php开发视频教程 浏览:628
怎么看苹果授权绑定的app 浏览:255
压缩机单级压缩比 浏览:380
linux测试php 浏览:971
什么时候梁旁边需要加密箍筋 浏览:40
微信清粉软件源码 浏览:717
matlabdoc命令 浏览:550
如何去ping服务器 浏览:75
ecshop安装php55 浏览:817
javaword库 浏览:958