LSB图像信息隐藏实验1_第1页
LSB图像信息隐藏实验1_第2页
LSB图像信息隐藏实验1_第3页
LSB图像信息隐藏实验1_第4页
LSB图像信息隐藏实验1_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第页学号:姓名:专业年级班级:实验室:组别:实验日期:课程名称保密技术实验实验课时实验工程名称和序号图像信息隐藏实验同组者姓名实验目的1.掌握对图像的根本操作。2.能够用LSB算法对图像进展信息隐藏3.能够用LSB提取算法提取隐藏进图像的信息4.能够反映jpeg压缩率与误码率之间的关系实验环境Windows+matlab实验内容和原理1.用MATLAB函数实现LSB信息隐藏和提取2.分析了LSB算法的抗攻击能力3.能随机选择嵌入位〔考虑平安性因素〕实验步骤方法关键代码实验算法1:LSB嵌入读取一副256*256大小的图片,判断是否为RGB图像。假设为RGB图像,那么读取图像的一层信息〔如R层〕。通过读取图像的尺寸大小来判断是否为RGB图像。RGB图像是三维多彩图,size有3个参数,最小参数是3,只要判断读取到的图像大小大于2,就确定读入的是RBG图像以二进制形式读取要嵌入到图片里的消息。并读取消息的长度〔嵌入消息的长度不能超过图像位数〕。产生与消息长度一致的一串随机数〔不能一样〕。自定义一个randinterval函数来实现伪随机数的生成

产生的伪随机数是代表消息要隐藏的像素位置〔行和列的信息〕随机数代码:function[row,col]=randinterval(matrix,count,key)%参数说明%matrix是载体矩阵,即要隐藏信息的图层%cout为要嵌入信息的像素数量%key为自定义秘钥,随机种子[m,n]=size(matrix);interval1=floor(m*n/(count+eps))+1;interval2=interval1-2;ifinterval2==0error('载体太小不能把秘密信息隐藏进去');endrand('seed',key);a=rand(1,count);row=zeros([1count]);col=zeros([1count]);r=1;c=1;row(1,1)=r;col(1,1)=c;fori=2:countifc=c+interval1;elsec=c+interval2;endifc>nr=r+1;ifr>merror('载体太小不能把秘密信息隐藏进去');endc=mod(c,n);ifc==0c=1;endendrow(1,i)=r;col(1,i)=c;end按照产生的随机数的序列依次将图片层的最后一位改为消息的信息。即用消息替换图片的最后一位信息。嵌入完成后,如果为RGB那么将该层返回原图像。然后将数据信息写回图像。LSB就完成了。image=imread('1.jpg');Hide_image=image;Hide_image=double(Hide_image);mysize=size(image);ifnumel(mysize)>2['thephotoisargbstylephoto']%是rgb图像输出到命令行窗口image1=Hide_image(:,:,1);%第三个参数1代表的读取的是红层,但是没有将2,3层设为0,因为会叠加,所以显示出来的第一层图像还是灰色的message=fopen('Message.txt','r');[msg,msg_len]=fread(message,'ubit1')%按位以二进制形式读取文本内容与长度[m,n]=size(image1)%读取行和列p=1;%p为秘密信息的位计数器[row,col]=randinterval(image1,msg_len,1996);fori=1:msg_lenimage1(row(i),col(i))=image1(row(i),col(i))-mod(image1(row(i),col(i)),2)+msg(p,1);ifp==msg_lenbreak;end;p=p+1;end%复原图像Hide_image(:,:,1)=image1;Hide_image=uint8(Hide_image);imwrite(Hide_image,'Hide_image.tif');%输出隐藏信息的图像subplot(121);imshow(image);title('未嵌入信息的图片');subplot(122);imshow(Hide_image);title('嵌入信息的图片');else['thephotoisnotargbstyle']fclose('all');end实验算法2:读取LSB隐藏的信息1.读取已经隐藏信息的图像。如果为RGB图像,那么读取图像的一层〔该层为嵌入信息的那层〕。2.用与LSB算法中一样的随机数种子产生一样的一串随机数。随机数串的长度由LSB中获得〔长度不得大于图像大小〕。用同一个伪随机生成算法,一样的种子,来产生像素点位置,可以确保隐藏时和提取时位置顺序是一模一样的,在顺序读取这些位置上的数据〔利用与运算,与上1,任何数与上1还是本身的性质〕,就是隐藏的信息。3.按照产生的随机数序列依次读取图像的相应点最后一位的信息。并将其以二进制形式写到文件中。Ubit1就代表每次读取1位,写入文件,每8位识别一个ASCII码值。所以可以成功写入26个字母和数字。其他字符由于文本文档识别不了,所以写入文本之后都变成了乱码。4.看文件,即获取的信息,与嵌入的信息进展比拟。Message.txt是原始信息文档,txt是提取出来的信息文档,可以发现二者信息内容是一模一样的,说明隐藏信息提取是成功的。%功能:用来提取隐藏信息Picture=imread(‘Hide_image.tif’);Picture=double(Picture);[m,n]=size(Picture);ifmsg_len>m*nerror('嵌入信息量过大,请重新选择图像')endfrr=fopen(‘3.txt’,’w’);%以写入方式翻开只写文件msg_len=8;%这里要改成实验一中自己图片的数据p=1;[row,col]=randinterval(Picture,msg_len,1996);fori=1:msg_lenifbitand(Picture_R(row(i),col(i)),1)==1%按位与运算fwrite(frr,1,’ubit1’);result(p,1)=1;elsefwrite(frr,0,’ubit1’);result(p,1)=0;endifp==msg_lenbreak;endp=p+1;endfclose(frr);%fwrite函数的作用是将内存中的二进制数据原样写入文件中%是ubit后面的数字表示是一次读几位,中间的数据表示读几次。读取已经隐藏信息的图像。fp=imread(‘Hide_image.tif’);2.使用imwrite函数对图像进展压缩,设定压缩比例。imwrite(fp,’out.jpg’,’quality’,compressibility)Compressiblity是图像的质量因子,可设置在0-100范围内;3.如果为RGB图像,那么读取嵌有信息的一层。按照读取LSB隐藏信息算法的步骤,读取信息,不写入文件。4.读取原文件,即隐藏的信息,以二进制读取。并取得消息长度。message=fopen(‘message.txt’,’r’);

[msg,msg_len]=fread(message,’ubit1’)

%按位以二进制形式读取文本内容与长度5比拟取得的信息和原信息的每一位,记录不相等位数的个数。bit_error=find(result~=msg);%寻找不相等的位置

bit_error_count=size(bit_error,1);%统计不相等的个数用不相等个数除以总长度即可得到误码率。ber(compressibility/10)=bit_error_count/msg_len;改变压缩率。得到一组误码率关于压缩率的函数。在开场时,设置9次循环,压缩图片的质量因子compressibility从10开场增加,每次递增10,直到compressibility=100,记录下每次的误码率,用plot函数做出关于以质量因子为横坐标,误码率为纵坐标的图表。forcompressibility=10:10:100%九次不同压缩率的图片压缩fp=imread(‘Hide_image.tif’);imwrite(fp,’out.jpg’,’quality’,compressibility)%plot参数说明:%参数1是横坐标自变量,参数2是纵坐标自变量,参数3是指用说明形式描点,参数4和5代表把散点链接起来compressibility=10:10:100;plot(compressibility,ber,’*’,compressibility,ber);title(‘基于图片压缩质量因子的误码率图表’);代码:closeall;clcforcompressibility=10:10:100fp=imread('Hide_image.tif');imwrite(fp,'out.jpg','quality',compressibility);out=imread('out.jpg');out=double(out);ifsize(fp)>2outr=out(:,:,1)[m,n]=size(outr)msg_len=8p=1;%将消息序列写回文本文件[row,col]=randinterval(outr,msg_len,1996);fori=1:msg_lenifbitand(outr(row(i),col(i)),1)==1result(p,1)=1;elseresult(p,1)=0;endifp==msg_lenbreak;endp=p+1;endmessage=fopen('Message.txt','w');[msg,msg_len]=fread(message,'ubit1');bit_error=find(result~=msg_len)bit_error_count=size(bit_error,1);ber(compressibility/10)=bit_error_count/(msg_len+eps);endendcompressibility=10:10:100;plot(compressibility,ber,'*',compressibility,ber);title('基于图片压缩质量因子的误码率图表

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论