您好,欢迎访问三七文档
信息隐藏实验报告实验题目【一】实现空域图像水印方法中的LSB算法:原始图像选取大小为512*512的elain图像或者goldhill图像,选择一个LSB水印算法以及适当的水印序列;利用选定的水印嵌入算法将水印信息嵌入到原始图像中。在嵌入水印之后的图像中提取水印,是否可以判定图像中含有水印,同时计算含水印图像的峰值信噪比。将含有水印的图像缩小为256*256之后,再放大为512*512,这时再提取水印,是否可以判定图像中含有水印。实验结果缩略图:lsb.fig实验程序%LSB算法:clear;A=imread('elain.bmp');B=A;message='`shomework';m=length(message);n=size(A);k=1;fori=1:n(1)forj=1:n(2)ifk=m%如果消息输入完成则为0h=bitget(double(message(k)),8:-1:1);elseh=[0,0,0,0,0,0,0,0];endc=bitget(A(i,j),8:-1:1);ifmod(j,8)==0p=8;elsep=mod(j,8);endv=0;forq=1:7v=xor(v,c(q));endv=xor(v,h(p));B(i,j)=bitset(A(i,j),1,v);ifmod(j,8)==0k=k+1;endendend%提取信息out=char;tmp=0;t=1;fori=1:n(1)forj=1:n(2)c=bitget(B(i,j),8:-1:1);v=0;forq=1:8v=xor(v,c(q));endifmod(j,8)==0p=1;elsep=9-mod(j,8);endtmp=bitset(tmp,p,v);ifmod(j,8)==0out(t)=char(tmp);t=t+1;tmp=0;endendend%显示图像figure;subplot(1,2,1);image(A);axis('square');title('原始图像');subplot(1,2,2);imshow(B);axis('square');title('加入水印后图像');out实验题目【二】实现基于扩频的图像水印算法:原始图像选取大小为512*512的elain图像或者goldhill图像,水印图像选取为以XXX印或者XX之印(XXX为自己的名字)为图案的、适当大小的二值黑白图像,再选取一个基于扩频的图像水印算法;利用选定的水印嵌入算法将水印信息嵌入到原始图像中。计算含水印图像的的均方差和误码率。利用水印提取算法从含有水印的图像中提取水印信息,并用相关性判断图像中是否含有水印。将含有水印的图像进行窗口中值滤波,这时再提取水印信息,并用相关性判断图像中是否含有水印。实验结果缩略图:DWT.fig实验程序%基于dwt的数字水印程序clear;%装入原图像file_name='elain.bmp';cover_object=double(imread(file_name));I=cover_object;%装入水印图像file_name='=double(imread(file_name));%二维离散小波变换[CA,CH,CV,CD]=dwt2(I,'db1');C=[CHCVCD];[length,width]=size(CA);[M,N]=size(C);T1=100;a=0.2;%加入水印forj=1:1:Nfori=1:1:Mif(C(i,j)T1)mark(i,j)=message(i,j);WaterC(i,j)=double(C(i,j))+a*abs(double(C(i,j)))*mark(i,j);elsemark(i,j)=0;WaterC(i,j)=double(C(i,j));end;end;end;%重构图像WaterCH=WaterC(1:length,1:width);WaterCV=WaterC(1:length,width+1:2*width);WaterCD=WaterC(1:length,2*width+1:3*width);IW=double(idwt2(CA,WaterCH,WaterCV,WaterCD,'db1'));%显示原始图像figure;subplot(1,4,1);image(I);axis('square');title('原始图像');%显示水印图像subplot(1,4,2);image(message);axis('square');title('水印图像');%显示嵌入水印后的图像subplot(1,4,3);imshow(IW/250);axis('square');title('加入水印后的图像');%水印检测newmark=reshape(mark,M*N,1);%检测阈值T2=120;forj=1:1:Nfori=1:1:Mif(WaterC(i,j)T2)WaterCX(i,j)=WaterC(i,j);elseWaterCX(i,j)=0;end;end;end;%提取水印T3=140;forj=1:1:Nfori=1:1:Mif(WaterC(i,j)T3)SY(i,j)=IW(i,j);elseSY(i,j)=0;end;end;end;%显示提取后的水印的图像subplot(1,4,4);image(SY);axis('square');title('加入水印后的图像');%计算峰峰信噪比PSNR.均方误差MSEforj=1:1:Nfori=1:1:MD=sum(sum((WaterCX(i,j)-WaterC(i,j))^2))/M*N;end;end;MSE=DPSNR=10*log10(255^2/D)实验总结信息隐藏课的学习过程是个自我探索、自我学习的过程,其中,我不仅学到了专业的知识,也提升了自己的学习能力。虽然开始的时候不知道从何入手,该怎么样达到要求,完成设计,但是经过一步步的摸索和总结,最后总算完成了这次任务。这次基础强化训练主要是让我们学习信息隐藏的有关算法,使用MATLAB软件。这是我第一次接触MATLAB,还好这是门很简单的语言,编程风格非常随意,一个下午的时间就一进能够很熟练的编写大部分程序了。这次课程收获很大,学习信息隐藏的算法和MATLAB编程。编程用去了很多时间,从完全不懂到能进行模拟的程序,其中需要自己学习很多东西,并在很短的时间内融会贯通,考验了自己的学习能力。
本文标题:信息隐藏实验报告
链接地址:https://www.777doc.com/doc-1852397 .html