实验二LSB信息隐藏实验.doc
实验二LSB信息隐藏实验
综合评分:
【实验目的】:
掌握MATLAB基木操作
实现LSB信息隐藏和提取
【实验内容】:(请将你实验完成的项11涂“■“)
实验完成形式:
■用MATLAB函数实现LSB信息隐藏和提取
□其它:(请注明)
实验选择载体:
□ 256x256灰度图像口 256X 256RGB图像口任意大小的RGB图像
■其他512x512灰度图像64x64灰度图像
实验效果和分析:
■完成基本的LSB信息隐藏及提取
■能随机选择嵌入位进行信息隐藏及提取(考虑安全性因素)
■能够计算PSNR,分析信息隐藏图像质量
■完成对秘密信息的图像载体进行攻击
采用的攻击方法(请列出):jpeg压缩攻击,缩放resize攻击
■计算每种攻击方法提取的秘密信息误码率
□其它:(请注明)
【实验工具及平台】:
■ Windows+Matlab7.0□其它:(请注明)
【实验涉及到的相关算法】:
基本LSB信息隐藏及提取算法。
LSB信息隐藏算法:
(1) 读入并处理载体图像和水印图像,使二者大小相等。
(2)选择要替换的位平而。
(3)用bitset ()函数用水印图像替换选定的某一位平面,其屮位平面1为最不重 要面,位平面8为最重要面。
提取算法:
利用bi塩& ()函数将所嵌入的平而提収出来即可。
完成随机选择嵌入位进行LSB信息隐藏及提取算法。
隐藏算法:
(1) 将载体图像和水印图像转换为一维的
(2)产生随机数种子,产生随机序列控制信息械入位
由随机数控制,产生不同的步长,随机地嵌入水印
将图像转化为二维图像并显示出来 提収算法:
将图像转化为一维数组
产生与隐藏时相同的随机数种了
提取出被替换的位置的数值
把图像转换为二维图像并显示出来
【实验分析】:
1、完成基木LSB信息隐藏及提取
原图像为灰度图像lena_gray. bmp x=imread (? lens gray, bmp');
f i gure, imshow(x);
处理水印图像,将具调整为与载体图像相同人小
y=imreadC line, bmp');
figure, imshow(y);
yl=rgb2gray(y);
y2=im2bw(yl)
figure, imshow(y2);
把图像y2放人8倍
y3=imresize (yl, 8,' nearest,);
figure, imshow(y3);
整体位平面嵌入
zl二bitset (x, 1, y3) ;%替换最不重要位
z2二bitset (x, & y3) ;%替换最重要位
figure, imshow(zl);
figure, imshow(z2);
下图显示的为替换最不重要位和授重要位的结果
提取信息
tl=bitget (zl, 1);
figure, imshow(logical(tl));
t2=bitget (z2, 8);
figure, imshow(logical(t2));
2、完成随即选择嵌入位尽心LSB信息隐藏及提取
%将载体图像和水印图像转换为一维
xrs二reshape(x, 1, 512*512);
% figure, plot (xrs);
y2rs=reshape(y2, 1,64*64);
% figure, plot (ylrs);
%产生随机序列控制信息嵌入位,并嵌入水印
randC state,, 0): %生成随机数种子
r=rand(l, 64*64);
% figure, plot (r);
i=l;
for j=l:4096
if r(j)>0.5
i二i+64; xrs(i)=y2rs(j);
else
i二i+54; xrs(i)=y2rs(j);
end
end
%—维数组还原为二维图像 x2=rcshape(xrs, 512,512);
figure, imshow(x2);
%提取图像
randf state*, 0) ; %生成相同的随机数种子 r=rand(l,64*64);
i二 1;
for j=l:4096 if r(j)>0.5
i二i+64;
y2rs(j)= xrs(i);
else
i=i+54; y2rs(j)=xrs(i);
end
end
yy=reshape(y2rs, 64, 64); figure, imshow(yy);
D2MNPSNR(M) = l(Hogw%3、分别计算PSNR,分析信息隐藏图像质量
D2MN
PSNR(M) = l(Hogw
A/ N
££(7(x,y)-/w(x,y))2 尸 I
[row, col]二size(x);
sum1=0;
for i=l:row
for j=l:col
suml=suml+(zl (i, j)-x(i, j))*(zl (