实验三 基于LSB的信息隐藏算法.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
实验三 基于LSB的信息隐藏算法 实验目的 该实验为验证性实验。目的是通过实验使学生掌握经典信息隐藏算法,在Matlab环境下,编写基于图像的LSB信息隐藏算法程序。用Matlab函数实现LSB信息隐藏及提取,并进行分析。 实验要求 1、实验前要做好充分准备,包括:复习实验所涉及的知识点,掌握Matlab编程语言和调试环境。 2、实验时注意记录实验过程中产生的数据、出现的问题及解决问题的方法。 3、理论联系实际,认真分析实验结果,回答思考题。 4、实验后完成实验报告,并附相关截图。 实验环境 计算机(安装Visual C++ 6.0和Matlab 6.5以上版本) 实验原理 隐秘算法核心是将我们选取的像素点的最不重要位依次替换成秘密信息,以达到信息隐秘的目的。嵌入过程包括选择一个图像载体像素点的子集{j1,…,jl(m)},然后在子集上执行替换操作像素cji←→mi,即把cji的LSB与秘密信息mi进行交换(mi可以是1或0)。一个替换系统也可以修改载体图像像素点的多个比特,例如,在一个载体元素的两个最低比特位隐藏两比特、三比特信息,可以使得信息嵌入量大大增加但同时将破坏载体图像的质量。在提取过程中,找出被选择载体图像的像素序列,将LSB(最不重要位)排列起来重构秘密信息,算法描述如下: 嵌入过程:for(i=1;i=像素序列个数;i++) si←ci for(i=1;i=秘密消息长度;i++) //将选取的像素点的最不重要位依次替换成秘密信息 sji←cji←→mi 提取过程:for(i=1;i=秘密消息长度;i++) { i←→ji //序选取 mi←LSB(cji) } 实验内容与步骤 随机选取图像载体像素,实现隐秘消息的嵌入与提取 (1)隐秘消息的嵌入 %文件名:randlsbhide.m %函数功能:本函数将完成随机选择LSB的信息隐秘,载体选用灰度BMP图 %输入格式举例:[ste_cover,len_total]=randlsbhide(′glenna.bmp′,′message.txt′,′scover.bmp′,2001) %参数说明: %input是信息隐蔽载体图像%file是秘密消息文件 %output是信息隐秘后的生成图像 %key是随机间隔函数的密钥 function[ste_cover,len_total]=randlsbhide(input,file,output,key) %读入图像矩阵 cover=imread(lena.bmp); ste_cover=cover;ste_cover=double(ste_cover); %将文本文件转换为二进制序列 f_id=fopen(1.txt,r); [msg,len_total]=fread(f_id,ubit1); %判断嵌入消息量是否过大 [m,n]=size(ste_cover); if len_totalm*n error(嵌入消息量过大,请更换图像); end %p作为消息嵌入位数计数 p=1; %调用随机间隔函数选取像素点 [row,col]=randinterval(ste_cover,len_total,2001); %在LSB隐秘消息 for i=1:len_total ste_cover(row(i),col(i))=ste_cover(row(i),col(i))-mod(ste_cover(row(i),col(i)),2)+msg(p,1); if p==len_total break; end p=p+1; end ste_cover=uint8(ste_cover); imwrite(ste_cover,lena2.bmp); %显示实验结果 subplot(1,2,1);imshow(cover);title(原始图像); subplot(1,2,2);imshow(lena2.bmp);title(隐藏信息的图像); (2)编写函数比较两幅图像区别 %文件名:compare.m %函数功能:本函数完成显示隐秘前后两幅图像的区别 %输入格式举例:F=compare(′blenna.bmp′,′scover.bmp′) %参数说明: %original是原始载体图像 %hided是隐秘后的图像 %F是差值矩阵 function F=compare(original,hided) %读取原始载体图像矩阵 W=imread(lena.bmp); W=double(W)/255; %读取隐秘后图像矩阵 E=imread(lena2.bmp); E=double(E)/255; %将两图像矩阵相减,显示效果 F=E-W; %注意,MATLAB中矩阵相减只支持double型 imshow(mat2

文档评论(0)

_______ + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档