LSB图像信息隐藏算法matlab,实验二LSB信息隐藏实验.doc

news/2024/7/7 23:46:57

实验二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 (


http://lihuaxi.xjx100.cn/news/242506.html

相关文章

java培训:什么是抽象类?怎么定义?

什么是抽象类?怎么定义?这是属于java技术里面的一个知识点,本期教程就是围绕这个问题做的相关介绍,当定义一个类时,常常需要定义一些成员方法描述类的行为特征,但有时这些方法的实现方式是无法确定的。例如,在定义An…

python的turtle绘图体系入门必看(二)

1 turtle画笔控制函数 画笔操作后一直有效,一般成对出现 turtle.penup() 别名 turtle.pu() 画笔抬起,海龟在飞行(不在画布上留下图案) turtle.pendown() 别名 turtle.pd() 画笔落下,海龟在爬行 turtle.pensize(width) 别名 turtle.width(wi…

回调函数设计方法

引入:你显示器不亮了,你不知道怎么弄,那你就问在外地干IT的大表哥,你大表哥告诉你修理的方法,然后需要你自己来操作。你大表哥知道怎么弄,但是自己不去弄,而是由你去弄。换句话说,你…

DSL概述

为什么80%的码农都做不了架构师?>>> DSL探讨的问题 DSL本身只是一层为了表达的能力而做的浅浅封装,在你考虑DSL的时候你应该将绝大部分的精力花在构建语义模型上,但反过来说DSL的设计从某种程度上来说帮你理清了语义模型的需求&a…

Python数字类型及操作汇总(入门级)

1. 整数类型 2. 浮点数类型 带有小数点及小数的数字 取值范围和精度都有限制,但常规计算可忽略不计(基本无限制) 注意:浮点数运算存在不确定尾数(不是bug,一般发生在10-16左右,因为计算机内部用二进制表示&#xff0c…

php -find(),php – beforeFind()添加条件

使用beforeFind(),如果希望find使用它,则应返回已修改的$queryData数组.这是你目前的问题.public function beforeFind($queryData) {parent::beforeFind();$queryData[conditions] array(client_id > 2);return $queryData;}但是,您还有其他一些小问题可能会导致您遇到问题…

女生学软件测试有哪些优势

对于软件测试这个岗位,相信大家都有听说过,最近几年,越来越多的女性加入到互联网技术行业,选择最多的岗位就是软件测试,那么到底女生学软件测试有哪些优势呢?来看看下面的详细介绍。 女生学软件测试有哪些优势?首先咱…

对派生类的初始化

对派生类的初始化,从派生类的构造函数开始用初始式进行初始化。初始式的格式:派生类的构造函数(参数表):基类构造函数(参数表),对象成员(参数表)...普通成员&…