信息隐藏实验四二值图像信息隐藏汇编.docVIP

信息隐藏实验四二值图像信息隐藏汇编.doc

  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文档。上传文档
查看更多
信息隐藏实验四二值图像信息隐藏汇编

实验四 二值图像信息隐藏 一、实验目的 了解二值图像的特点,掌握基于二值图像的信息隐藏原理,读懂两种基于二值图像的信息隐藏方法,并自己设计另一种二值信息隐藏的方法。 二,实验环境 (1)Windows XP操作系统; (2)MATLAB 7.2版本软件; (3)二值图像文件。 三、实验原理 二值图像又称为单色图像或黑白图像,一般用1或0表示黑色或白色像素点,利用二值图像信息隐藏的方法主要是根据图像中黑白像素数量的比较来隐藏信息。 方法一:把一个二值图像分成一系列矩形图像区域B,某个图像区域B中黑色像素的个数大于一半,则表示嵌入0;如果白色像素的个数大于一半,则表示嵌入1。但是当需要嵌入的比特与所选区域的黑白像素的比例不一致时,为了达到希望的像素关系,则需要修改一些像素的颜色。 方法二:采用游程编码方法在二值图像中隐藏信息。秘密信息嵌入时修改二值图像的游程长度,如果秘密信息位是0,则修改该游程长度为偶数;如果为1,则修改游程长度为奇数;如果秘密信息的取值与游程长度的奇偶性相匹配,则不改变游程长度。 方法三:将二值图像分块,使用一个与图像块大小相同的密钥二值图像块,与每一个图像块按像素进行“与”运算,“与”运算的结果可以确定是否在该块中嵌入数据,或嵌入怎样的数据。 四,实验步骤 下面以方法三为原理,进行实验。 嵌入秘密信息 主要思想:首先将载体图像分块,块数为秘密信息的二进制码个数,分块大小为载体图像的长和宽分别除以块数;设定一个与图像块大小相同的密钥二值图像块,具体为一个8×8的数组,其中前4行全为1,后4行全为0;将载体图像块与密钥二值图像块进行“与”运算。经过运算后,参与统计的像素变为前4行。接下来统计“有效”像素黑白的个数,某个图像区域B中黑色像素的个数大于“有效”像素一半,则表示嵌入0;如果白色像素的个数大于“有效”像素一半,则表示嵌入1。但是当需要嵌入的比特与所选区域的黑白像素的比例不一致时,为了达到希望的像素关系,则需要修改一些像素的颜色。 Matlab代码如下: msgfid=fopen(hidden.txt,r);%打开秘密文件 [msg,count]=fread(msgfid); fclose(msgfid); msg = str2bit(msg); msg = msg; count=count*8; io=imread(hunter.bmp);%读入载体图像 watermarklen=count;%嵌入水印信息长度,也就是载体图像分块的数量值 [row col]=size(io); l1=floor(row/watermarklen);%载体图像分块后的长度 l2=floor(col/watermarklen);%载体图像分块后的宽度 pixelcount=l1*l2;%每个分块总像素的数量值 miyue=[ones(6,8);zeros(2,8)];%密钥二值图像块 percent=24; iw=io; in=io;%存放与运算后的图像信息 %将原图像块与密钥块进行与运算 m=1; while m=watermarklen i=1; j=1; in(i:(i+l1-1),j:(j+l2-1))=io(i:(i+l1-1),j:(j+l2-1)) miyue; i=i+8; j=j+8; m=m+1; end inblack(1,watermarklen)=0;%某一个分块中黑色像素的个数 inwhite(1,watermarklen)=0;%某一个分块中白色像素的个数 n=1; while n=watermarklen for i=l1*(n-1)+1:(l1*n-2) %只计算有效前4行的黑白个数 for j=l2*(n-1)+1:l2*n if in(i,j)==0 inblack(1,n)=inblack(1,n)+1;%计算每个分块中的黑色像素的个数 else inwhite(1,n)=inwhite(1,n)+1;%计算每个分块中的白色像素的个数 end end end n=n+1; end n=1; while n=watermarklen if msg(n,1)==1 %需要嵌入1 if inblack(1,n)=percent; %嵌入1的时候,黑色像素比白色像素多,需要修改一些像素的颜色 modcount(1,n)=inblack(1,n)-perce

文档评论(0)

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

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

1亿VIP精品文档

相关文档