实验2 空域信息隐藏算法
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
信息隐藏技术实验报告
一、实验目的
(1)了解信息隐藏算法的分类方式和分类依据
(2)理解空域信息隐藏算法的基本思想
(3)掌握最低有效位算法原理
(4)完成基于LSB的图像信息隐藏
二、实验内容
载体图像为24位真彩色bmp图像Lena.bmp,嵌入的秘密图像为黑白的bmp 图像LSB.bmp,要求采用空域信息隐藏算法,将LSB.bmp嵌入到Lena.bmp的最低有效位中,同屏显示原载体图像、需要嵌入的秘密图像、嵌入了秘密图像的伪装载体、提取的秘密图像。(编程语言不限)
三、实验步骤和设计思想
实现空域图像水印方法中的LSB算法:原始图像选取大小为512*512的elain 图像或者goldhill图像,选择一个LSB水印算法以及适当的水印序列;利用选定的水印嵌入算法将水印信息嵌入到原始图像中。在嵌入水印之后的图像中提取水印,是否可以判定图像中含有水印,同时计算含水印图像的峰值信噪比。将含有水印的图像缩小为256*256之后,再放大为512*512,这时再提取水印,是否可以判定图像中含有水印。
四、程序清单
% LSB 算法:
clear;
A=imread('elain.bmp');
B=A;
message='www`s homework';
m=length(message);
n=size(A);
k=1;
for i=1:n(1)
for j=1:n(2)
if k<=m %如果消息输入完成则为0
h=bitget(double(message(k)),8:-1:1);
else
h=[0,0,0,0,0,0,0,0];
end
c=bitget(A(i,j),8:-1:1);
if mod(j,8) == 0
p=8;
else
p=mod(j,8);
end
v=0;
for q=1:7
v=xor(v,c(q));
end
v=xor(v, h(p) );
B(i,j)=bitset(A(i,j),1,v);
if mod(j,8) == 0
k=k+1;
end
end
end
% 提取信息
out=char;
tmp=0 ;
t=1;
for i=1:n(1)
for j=1:n(2)
c=bitget(B(i,j),8:-1:1);
v=0;
for q=1:8
v=xor(v,c(q));
end
if mod(j,8)==0
p=1;
else
p=9-mod(j,8);
end
tmp=bitset(tmp,p,v);
if mod(j,8)==0
out(t)=char(tmp);
t=t+1;
tmp=0;
end
end
end
%显示图像
figure;
subplot(1,2,1);
image(A);
axis('square');
title('原始图像'); subplot(1,2,2);
imshow(B);
axis('square');
title('加入水印后图像'); out
五、实验调试记录
六、实验结果及其分析
lsb.fig
七、实验心得
1、了解隐显密码学相关的密码算法;
2、熟悉不同“位平面”对图像质量的影响;
3、掌握基于图像的LSB信息隐藏算法;
4、用MATLAB函数实现LSB信息隐藏;
5、掌握LSB信息提取算法。