文档库 最新最全的文档下载
当前位置:文档库 › 基于DCT变换域的图像类水印认证算法

基于DCT变换域的图像类水印认证算法

基于DCT变换域的图像类水印认证算法
基于DCT变换域的图像类水印认证算法

图像水印算法源代码

M=256; %原图像长度 N=32; %水印图像长度 K=8; I=zeros(M,M); II=zeros(K,K); B=zeros(M,M); Idct=zeros(K,K); D=zeros(M,M); %读取原图像 I=imread('33.png'); subplot(2,2,1); %显示原图像 imshow(I); title('原图像'); %产生水印序列 randn('seed',10); mark=randn(1024,1); subplot(2,2,2); plot(mark); title('水印序列'); %嵌入水印 T=1; for m=1:N for n=1:N x=(m-1)*K+1; y=(n-1)*K+1; II=I(x:x+K-1,y:y+K-1);%将原图分成8*8的子块 Idct=dct2(II);%对子块进行DCT变换 if x==1&y==1 alfa=0.002; else alfa=0; end B=Idct*(1+alfa*mark(T));%嵌入水印 Bidct=idct2(B);%进行DCT反变换 I(x:x+K-1,y:y+K-1)=Bidct; T=T+1; end end subplot(2,2,3); imshow(I);%显示嵌入水印后的图像

title('tu');imwrite(I,'嵌入后的图像.bmp'); %进行相关性比较 figure; for i=1:50 if i==10; mark2=mark1'; else mark2=randn(1024,1); end %计算相关值 c=(mark2'*mark)/sqrt(mark2'*mark2); stem(i,c); hold on; end

数字水印算法介绍

数字水印算法列举 湖南科技大学计算机科学与工程学院 ①基于LSB 的数字水印方案(空间域、不可逆、不可见和盲检测) 嵌入步骤: (1)先把水印信息转化为二进制比特流I。 (2)根据I的长度生成密钥K,并且严格保存。密钥K是对图像载体像素位置的一个映射。 (3)把I中的每一位依次根据密钥K,置换掉原始载体图像中相应位置的像素最后一位。提取步骤: (1)根据严格保存的密钥K遍历嵌入了水印的图像中的相应像素,提取出最后一位。 (2)将提取出来的每一位重新组合成水印信息。 ②基于差分扩展的数字水印方案(变换域、可逆、不可见和盲检测) 嵌入步骤: (1)将图像M分成像素点对(x,y),将水印信息转化为二进制比特流,比特流的每一位用m 表示。 (2)根据水印信息比特流的长度随机生成信息的嵌入位置k作为密钥信息严格保存。(3)对图像M计算均值l和差值h:?????-=+=y x h y x floor l 2((floor表示向下取整) (4)将水印比特信息m以差值扩展的方法嵌入到差值h中:m h h +?='2(5)将得到的h '代入(3)中,得到新的图像像素对,形成嵌入秘密信息后的图像C。提取步骤: (1)将图像C分成像素点对(x,y),读入密钥信息K。 (2)将图像C依旧按照嵌入步骤中的(3)式计算均值l和差值h。 (3)根据密钥k找到相应位置,提取差值h的最后一位比特信息m,再将差值h进行变换得到1>>='h h 。 (4)将提取到的比特信息m进行组合可以恢复水印信息,将得到的h '代入嵌入步骤的(3)中计算新的图像像素对可以恢复原始图像载体M。 ③基于直方图修改的数字水印算法(空间域、可逆、不可见和盲检测) 嵌入步骤:(1)找到直方图的零点z和峰值点p,将z v p <<的像素值v自加1。 (2)漂移后的直方图v=p处即为嵌入水印的位置,将水印信息转化为二进制流并记为k,按顺序嵌入,即k v v +=';(3)得到的由像素值v '组成的图像就是嵌入秘密信息后的图像。同时p、z以密钥的形式保存。 提取步骤: (1)读取密钥,得到p、z的值。 (2)遍历图像的每个像素,当像素v=p时,提取信息0并保持数据不变;当v=p+1时,提取信息1并将数据减1。 (3)当vz时,数据保持不变;当p-1