LSB图像信息隐藏实验
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
学号:姓名:专业年级班级:
实验室:组别:实验日期:
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);
for i=1:msg_len
image1(row(i),col(i))=image1(row(i),col(i))-mod(image1(row(i),col(i)),2)+msg(
p,1);
if p==msg_len
break ;
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 ['the photo is not a rgb style']
fclose('all');
end
实验算法 2:读取 LSB 隐藏的信息
1.读取已经隐藏信息的图像。如果为 RGB 图像,则读取图像的一层(该层为嵌入信
息的那层)。
2.用与 LSB 算法中相同的随机数种子产生相同的一串随机数。随机数串的长度由
LSB 中获得(长度不得大于图像大小)。
用同一个伪随机生成算法,相同的种子,来产生像素点位置,可以确保隐藏时和提取
时位置顺序是一模一样的,在顺序读取这些位置上的数据(利用与运算,与上1,任
1.读取已经隐藏信息的图像。
fp=imre ad(‘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); %统计不相等的个数
6.用不相等个数除以总长度即可得到误码率。
ber(compressibility/10)=bit_error_count/msg_len;
7.改变压缩率。得到一组误码率关于压缩率的函数。
在开始时,设置9次循环,压缩图片的质量因子compressibility从10开始增加,每次递增10,直到compressibility=100,记录下每次的误码率,用plot函数做出关于以质量因子为横坐标,误码率为纵坐标的图表。
for compressibility=10:10:100 %九次不同压缩率的图片压缩
fp=imread(‘Hide_image.tif’);
imwrite(fp,’out.jpg’,’quality’,compressibility)
(接上页)
实验步骤
方法
关键代码
测试记录
分析
如果找到的图片的msg_len太小,那么后面输入的数字位数就会很短,否则就会乱码。结论
小结
经过这次实验操作,让我对matlab有了更深的理解。对信息隐藏也有了更深得认识。
以下由实验教师填写
(注:文档可能无法思考全面,请浏览后下载,供参考。可复制、编制,期待你的好评与关注!)