matlab信息隐藏算法,实验四--基于DCT域的信息隐藏算法

《实验四--基于DCT域的信息隐藏算法》由会员分享,可在线阅读,更多相关《实验四--基于DCT域的信息隐藏算法(6页珍藏版)》请在人人文库网上搜索。

1、实验四 基于DCT域的信息隐藏算法一、 实验目的该实验为验证性实验。目的是通过实验使学生掌握经典信息隐藏算法,在Matlab环境下,编写基于图像DCT域的信息隐藏算法程序。用Matlab函数实现DCT域的信息隐藏及提取,并进行分析。二、 实验要求1、实验前要做好充分准备,包括:复习实验所涉及的知识点,掌握Matlab编程语言和调试环境。2、实验时注意记录实验过程中产生的数据、出现的问题及解决问题的方法。3、理论联系实际,认真分析实验结果,回答思考题。4、实验后完成实验报告(含相关截图,并附打印的程序清单)。三、 实验环境计算机(安装Visual C+ 6.0和Matlab 6.5以上版本)四、。

2、 实验原理隐秘算法核心是将我们选取的像素点的最不重要位依次替换成秘密信息,以达到信息隐秘的目的。在DCT域隐藏的信息处于图像的显著区域,比在时域嵌入信息更具有鲁棒性。五、 实验内容与步骤(1) 完善程序实现在DCT域对隐秘消息的嵌入。%文件名:hidedctadv.m%函数功能:本函数用于DCT域的信息隐藏%输入格式举例:count,msg,data=hidedctadv(lenna.jpg,1.jpg,1.txt,1982,1);%参数说明:%image为载体图象%imagegoal为藏有秘密信息的载体,即隐秘载体%msg为待隐藏的信息%key为密钥,用来控制随机选块%alpha为控制量,用。

3、来保证编码的正确性%count为待隐藏信息的长度%result为隐藏结果function count,msg,result=hidedctadv(image,imagegoal,msg,key,alpha)%按位读取秘密信息frr=fopen(1.txt,r);msg,count=fread(frr,ubit1);fclose(frr);data0=imread(lena.jpg);%将图象矩阵转为double型data0=double(data0)/255;%取图象的一层做隐藏data=data0(:,:,1);%对图象分块T=dctmtx(8);%对分块图象做DCT变换DCTrgb=blk。

4、proc(data,8 8,P1*x*P2,T,T);DCTrgb0=DCTrgb;%产生随机的块选择,确定图像块的首地址row,col=size(DCTrgb);row=floor(row/8);col=floor(col/8);a=zeros(row col);k1,k2=randinterval(a,count,2001);for i=1:countk1(1,i)=(k1(1,i)-1)*8+1;k2(1,i)=(k2(1,i)-1)*8+1;end%信息嵌入temp=0;for i=1:countif msg(i,1)=0 if DCTrgb(k1(i)+4,k2(i)+1)DCTrg。

5、b(k1(i)+3,k2(i)+2)temp=DCTrgb(k1(i)+4,k2(i)+1);DCTrgb(k1(i)+4,k2(i)+1)=DCTrgb(k1(i)+3,k2(i)+2); DCTrgb(k1(i)+3,k2(i)+2)=temp; endelseif DCTrgb(k1(i)+4,k2(i)+1)DCTrgb(k1(i)+3,k2(i)+2)DCTrgb(k1(i)+3,k2(i)+2)=DCTrgb(k1(i)+3,k2(i)+2)-10;%将原本小的系数调整得更小elseDCTrgb(k1(i)+4,k2(i)+1)=DCTrgb(k1(i)+4,k2(i)+1)-10。

6、;end end%信息写回保存 DCTrgb1=DCTrgb;data=blkproc(DCTrgb,8 8,P1*x*P2,T,T);result=data0;result(:,:,1)=data;imwrite(result,1.jpg);(2) 比较信息嵌入前后图像的区别。%文件名:compare.m%函数功能:本函数完成显示隐秘前后两幅图像的区别%输入格式举例:F=compare(blenna.bmp,scover.bmp)%参数说明:%original是原始载体图像%hided是隐秘后的图像%F是差值矩阵function F=compare(original,hided)%读取原始载。

7、体图像矩阵W=imread(lena.jpg);imshow(W)%W=double(W)/255;%读取隐秘后图像矩阵E=imread(1.jpg);imshow(E)%E=double(E)/255;%将两图像矩阵相减,显示效果%F=E-W;%注意,MATLAB中矩阵相减只支持double型%imshow(mat2gray(F)(3) 改变alpha值,并对所得结果进行比较分析。%文件名:hidedctadv.m%函数功能:本函数用于DCT域的信息隐藏%输入格式举例:count,msg,data=hidedctadv(lenna.jpg,1.jpg,1.txt,1982,1);%参数说明:。

8、%image为载体图象%imagegoal为藏有秘密信息的载体,即隐秘载体%msg为待隐藏的信息%key为密钥,用来控制随机选块%alpha为控制量,用来保证编码的正确性%count为待隐藏信息的长度%result为隐藏结果function count,msg,result=hidedctadv(image,imagegoal,msg,key,alpha)%按位读取秘密信息frr=fopen(1.txt,r);msg,count=fread(frr,ubit1);fclose(frr);data0=imread(lena.jpg);%将图象矩阵转为double型data0=double(dat。

9、a0)/255;%取图象的一层做隐藏data=data0(:,:,1);%对图象分块T=dctmtx(8);%对分块图象做DCT变换DCTrgb=blkproc(data,8 8,P1*x*P2,T,T);DCTrgb0=DCTrgb;%产生随机的块选择,确定图像块的首地址row,col=size(DCTrgb);row=floor(row/8);col=floor(col/8);a=zeros(row col);k1,k2=randinterval(a,count,2001);for i=1:countk1(1,i)=(k1(1,i)-1)*8+1;k2(1,i)=(k2(1,i)-1)*8。

10、+1;end%信息嵌入temp=0;for i=1:countif msg(i,1)=0 if DCTrgb(k1(i)+4,k2(i)+1)DCTrgb(k1(i)+3,k2(i)+2)temp=DCTrgb(k1(i)+4,k2(i)+1);DCTrgb(k1(i)+4,k2(i)+1)=DCTrgb(k1(i)+3,k2(i)+2); DCTrgb(k1(i)+3,k2(i)+2)=temp; endelseif DCTrgb(k1(i)+4,k2(i)+1)DCTrgb(k1(i)+3,k2(i)+2)DCTrgb(k1(i)+3,k2(i)+2)=DCTrgb(k1(i)+3,k2(。

11、i)+2)-0.1;%将原本小的系数调整得更小elseDCTrgb(k1(i)+4,k2(i)+1)=DCTrgb(k1(i)+4,k2(i)+1)-0.1;end end%信息写回保存 DCTrgb1=DCTrgb;data=blkproc(DCTrgb,8 8,P1*x*P2,T,T);result=data0;result(:,:,1)=data;imwrite(result,2.jpg);六、 实验小结通过实验,我掌握了经典信息隐藏算法,即在Matlab环境下,编写基于图像DCT域的信息隐藏算法程序。用Matlab函数实现DCT域的信息隐藏及提取,并进行分析。通过该次试验,我更熟悉了经典信息隐藏的算法,更能熟练的运用了。- 9。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值