《信息隐藏算法》LSB实验.docVIP

  1. 1、本文档共3页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
《信息隐藏算法》LSB实验

实验:LSB算法 姓名:王宇航 学号LSB算法 1 实验目的 1.掌握对图像的基本操作 2.能够用LSB算法对图像进行信息隐藏 3.能够用LSB提取算法提取隐藏进图像的信息 2 实验背景 将秘密信息嵌入到载体图像像素值的最低有效位,也称最不显著位,改变这一位置对载体图像的品质影响最小。 对空域的LSB做替换,用来替换LSB的序列就是需要加入的水印信息、水印的数字摘要或者由水印生成的伪随机序列。由于水印信息嵌入的位置是LSB,为了满足水印的不可见性,允许嵌入的水印强度不可能太高。然而针对空域的各种处理,如游程编码前的预处理,会对不显著分量进行一定的压缩,所以LSB算法对这些操作很敏感。因此LSB算法最初是用于脆弱性水印的。 3 实验过程 3.1 位平面的演示 对一幅24位的彩色图像,分为RGB通道,每个通道占用8个bit。为了展示各个位平面,需要把其他平面的值全部置为零,通过bit的与或能够做到,如对于一个二进制字节数把除了第三位的全部位置零的操作为0010010100000100把第二位置为1的操作00000010程序中依次对于每个通道的8个位,置其他通道以及本通道的其他平面为0,显示图像即可。Matlab用ones()和Zeros()分别生成0矩阵和值为1的矩阵。由于是从最高位向最低位分别与操作,故初始的矩阵mask的元素应该为1000 0000这个值可以由1矩阵左移7次得到。就一个通道来说,每次用原始矩阵IMG(,,i)=bitand(IMG(,,i),mask);就得到当前位平面的图像。程序中定义显示各个位平面的功能定义在showLayer(imgname)中,参数为图像名称: 用大小为512*512的lena.jpg作为演示图片,结果如下: 3.2 信息隐藏 从上面的图片中可以看出,无论是RGB三个通道,从MSB到LSB,图像轮廓从有变无,甚至在LSB层,不能看见任何轮廓,因此可以作为信息隐藏。对于一张图片尺寸可以通过size()函数计算出来,假如函数返回值为[x,y,z],对于彩色图像来说,z值通常为3.那么这张图片在每个通道的LSB都隐藏信息的情况下能够隐藏信息的容量为x*y*z(bits)的信息。当然有上图可知即使在高于LSB位上也隐藏信息,则对图像视觉感知也没强烈的影响。现在先对一个字节的信息B隐藏进行说明。 对于第i(1=i=8)位,要判断第i位的值是否为1。则可以判断(B00...1..0)(其中1的位置在第i位上)的值即可,若该值位0,说明B的第i位为0,反之为1则说明B的第i位也为1。判断是否为1后,对于一个像素A的最低位是否置1还是0也就确定了。下面说明如何实现对于一个8bit的像素LSB置0和1。 置0:A=bitand(A,1111 1110); 置1:A=bitor(A,0000 0001); 对于一个要隐藏的字节型数据,根据上述思路,判断每一位是否为1,依此对当前像素做置1或0。当然,多个字节也一样。并且在第一个字节隐藏的是隐藏的信息长度。以便于提取隐藏信息。 在hide.m中实现了上诉的隐藏过程。 hide(imgname,szInfoFile) Imgname:图像名 szInfoFile:信息文件名 函数输出为嵌入信息的imbededImage.bmp图像。 嵌入信息为一个文档:input.txt。 从下图可以看出 嵌入字节信息长度为:192字节 可以看出,嵌入前后基本没有变化。 3.3 信息提取 信息提取过程和信息隐藏嵌入过程一样,不过在提取过程中,首先提取的是信息的长度,以便于提取信息的内容。 先说明怎么提取一个字节B信息。循环读取8个像素。对于一个像素字节A来说,得到当前的LSB位也就是(A0000 0001)这个值。这个值可能为1,也可能为0。再把0或者1写入到当前字节B的第i位。这个时候,写1的操作同上一样,通过bitor(,0..1..0)操作即可,写0操作是bitand(,1..0...1)实现。多字节的提取操作也一样。 程序中信息提取函数为: extract( imgname,outputname)。Imgname为隐藏信息的文件名,outputname为提取隐藏信息输出的文件,下面调用: extract(embededImage.bmp,output.txt); 得到输出到output.txt中的结果: 图中加亮的是提取的内容和input.txt一样。

文档评论(0)

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

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

1亿VIP精品文档

相关文档