当前位置:文档之家› 信息安全技术实践

信息安全技术实践

理工大学
本科实验报告
课程名称:信息安全技术实践
学院(系): 电子信息与电气工程学部专业:电子信息工程(英语强化)班级:电英1001班
学号:福龙201081534
学号:杜勇201081526 2014年10 月20 日
基于DCT变化的图像数字水印算法
一、背景和意义
数字水印技术是从信息隐藏技术发展而来的,是数字信号处理,图像处理,密码学应用,算法
设计等学科的交叉领域。

数字水印最早在1993年由Tirkel等人提出,在国际学术会议上发表题为
“ Electro nicwatermark ”的第一篇有关水印的文章,提出了数字水印的概念及可能的应用,并针对灰度图像提出了两种向图像最低有效位中嵌入水印的算法。

1996年在英国剑桥牛顿研究所召开了第
一届国际信息隐藏学术研讨会,标志着信息隐藏学的诞生。

一个有效的数字水印系统至少具备以下三个最基本的特性: 1.安全性:数据信息隐藏于数据图
像中,不是文件头中,文件格式的变换不应导致水印信息的丢失。

2•隐蔽性:在数字图像作品中嵌
入数字水印不会引起图像明显的降质,即含水印的图像与原始图像对人的感觉器官的刺激应该是无差别或差别很小,主观感觉变化很小。

3.鲁棒性:是指在经历有意或无意的信号处理过程后,水印
信息仍能保持完整性或仍能被准确鉴别。

另外还有通用性、惟一性等特性。

数字水印的基本应用领
域是保护、隐藏标识、认证和安全不可见通信等。

二.水印方法的原理和容
1、水印的嵌入
设I是大小为M XN的原始图像,J 是大小为P XQ的水印图像,M 和N分别是P和Q 的偶数倍。

把水印
信息J加载到原始图像I中,算法分以下步骤进行:
迪/ 8 ) 个大小为8 x PMX 8 x QNF块,每个分块互不重叠;
(1 )对原始图像I分块,将I分解为(M / 8 )
同时,对经过A r nol d 变换置乱技术加密的水印图像进行分块,分解为个大小为的方块;如果嵌入的水印信息比较少,可以多次嵌入水印信息以达到加强水印鲁棒性的效果。

(2 )对原始图像的每个子块进行二维DCT变换。

(3 )对每一个DCT变换后的子块,根据公式嵌入水印:V ' i = Vi( 1 + a Xi)
其中,Vi 是原始图像的DC T系数,V ' i是嵌入水印后图像的DCT系数,Xi 是与原始图像块号相同经过加密后的水印图像信息,a是水印嵌入强度。

(4 ) 对嵌入水印后的每个DCT系数块进行I DCT变换,重建图像,得到嵌入水印后的图
2、水印的提取与检测
水印的提取与水印的嵌入是互逆过程。

水印提取步骤如下
(1 )将待检测的图像进行分块,子块大小为8 X8,并对子块进行二维DCT变换。

(2 )将原始图像同样进行分块并进行二维DCT变换。

(3)对原始图像和待检测图像进行运算,求出各部分子块嵌入水印的估计值,运用公式:X ' i= (V ' i/Vi - 1 ) / a其中,X ' i是与原始图像块号相同提取出来的加密水印
图像信息。

(4 )将各水印块合并,得出的是嵌入时经过 A r no l d 变换置乱技术加密的水印信息。

(5 )对该图像采用A r no l d 变换置乱技术解密,即得到解密后的二值水印图像。

人眼的主观评价可以作为水印提取的一个评价标准。

除此之外,也可从理论上定义归一化相关系数S 作为水印提取算法的客观标准,它定义为被恢复出的水印信号和原始水印信号的相似程度(相关性):S = 刀n -1i = 0(W ' iW i) / 刀n -1i = 0(W ' i)2 刀n -1i = 0(W i)2 其中,W ' i
是与原始图像块号相同经过解密后的水印图像信息,W i 是原水印图像信息。

根据相似度的值即可判断图像中是否含有水印信号,其值越大,水印鲁棒性越好。

判定准则为:事先设定一个阈
值T,若S > T,可以判定被测图像中含有水印,否则没有水印。

三、实验流程图
四、实验程序
%嵌入水印的程序代码
M =256;%原图像长度
N=32; %水印图像长度
K=8;
l=zeros(M,M ); J=zeros(N,N); BL0CK1 =zeros(K,K); %显示原图像
subplot(3,2,1)
l=imread( 'b.bmp ', 'bmp');imshow(l);title('
%显示水印图像
subplot(3,2,2)
J=imread('a.bmp'); imshow(J);title(' 水印图像%水印嵌入
L=J;
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);
BLOCK1 = dct2(BLOCK1);
if (J(P,q)==0)
a=-1;
else
a=1;
end
BLOCK仁BLOCK1*(1+a*O.O3);BLOCK仁
idct2(BLOCK1);
I(x:x+K-1 ,y:y+K-1)=BLOCK1;
end
end
%显示嵌入水印后的图像
subplot(3,2,3)
imshow(I); title(' 嵌入水印后的图像'); 原始公开图像'); ');
imwrite(I,'watermarked.bmp' , 'bmp'); %从嵌八水印的图像中提取水印
W=zeros(N,N);
l=imread( 'b.bmp ','bmp');
J=imread( 'watermarked.bmp', 'bmp'); for P=1:N
for q=1:N
x=(P-1)*K+1;
y=(q-1)*K+1;
BL0CK1=l(x:x+K-1,y:y+K-1);
BL0CK2=J(x:x+K-1,y:y+K-1); BLOCK仁idct2(BLOCK1);
BLOCK2=idct2(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(3,2,4)
imshow(W);
%imshow(L);
title(' 从含水印图像中提取的水印');
五、实验结果
源图片:
数字水印图:
实验最终结果如图:
六、实验结果讨论
由实验结果图可以看出,最终水印提取结果很不理想。

由于水平有限,所以在请教了同学之后,
发现是由于程序的问题。

程序的精细度不够,而且程序是只能对黑白图片进行处理,不能处理灰度
图片,所以最后提取出的水印失真度比较大。

再以后的时间中我会进一步完善程序。

七、实验体会
本次实验由于准备不充分,所以在写程序时选择黑白图片进行处理,没能对灰度图像进行处理。

此次实验结果也不是十分理想,究其原因是程序的精细度不够,没能对一些细节进行处理,所以最
终提取出的水印图像失真度十分高。

在以后,我会继续学习自己的发展进一步努力。

Matlab软件的应用,并完善此程序,为
主要参考文献
[1 ] 徐世刚,娟,胡广•基于DCT变换的图像数字水印算法[J ]. 计算机与数字工程,2007。

相关主题