信息隐藏实验一-matlab基本操作
信息隐藏与提取实验

信息隐藏与提取实验MATLAB程序代码:隐藏:function[ste_cover,len_total]=randlsbhide(input,file,output,key)%读入图像矩阵cover=imread(input);ste_cover=cover;ste_cover=double(ste_cover);%将文本文件转换为二进制序列f_id=fopen(file,'r');[msg,len_total]=fread(f_id,'ubit1');%判断嵌入消息量是否过大[m,n]=size(ste_cover);if len_total>m*nerror('嵌入消息量过大 请更换图像');end%p作为消息嵌入位数计数器p=1;%调用随机间隔函数选取像素点[row,col]=randinterval(ste_cover,len_total,key);%在LSB隐秘消息for i=1:len_totalste_cover(row(i),col(i))=ste_cover(row(i),col(i))-mod(ste_cover(row(i),c ol(i)),2)+msg(p,1);if p==len_totalbreak;endp=p+1;endste_cover=uint8(ste_cover);imwrite(ste_cover,output);%显示实验结果subplot(1,2,1);imshow(cover);title(' 原始图像 ');subplot(1,2,2);imshow(output);title('含secret的图像');提取:function result=randlsbget(output,len_total,goalfile,key) ste_cover=imread(output);ste_cover=double(ste_cover);%判断嵌入消息量是否过大[m,n]=size(ste_cover);frr=fopen(goalfile,'a');%p作为消息嵌入位数计数器,将消息序列写回文本文件p=1;%调用随机间隔函数选取像素点[row,col]=randinterval(ste_cover,len_total,key);for i=1:len_totalif bitand(ste_cover(row(i),col(i)),1)==1fwrite(frr,1,'bit1');result(p,1)=1;elsefwrite(frr,0,'bit1');result(p,1)=0;endif p==len_totalbreak;endp=p+1;endfclose(frr);中间要用到的函数:function [row,col]=randinterval(matrix,count,key)%计算间隔的位数[m,n]=size(matrix);interval1=floor(m*n/count)+1;interval2=interval1-2;if interval2<=0error( '载体太小不能将秘密信息隐藏进去!' );end%生成随机序列rand('seed',key);a=rand(1,count);%初始化row=zeros([1 count]);col=zeros([1 count]);%计算row和colr=1;c=1;row(1,1)=r;col(1,1)=c;for i=2:countif a(i)>=0.5c=c+interval1;elsec=c+interval2;endif c>nr=r+1;if r>merror( '载体太小不能将秘密信息隐藏进去!' );endc=mod(c,n);if c==0 c=1;endendrow(1,i)=r;col(1,i)=c;end。
LSB图片信息隐藏隐藏实验

上海电力学院高级程序设计(C)课程设计报告LSB信息隐藏实验题目:院系:计算机科学与技术学院专业年级:信息安全2012级学生姓名:涂桂花学号:指导教师:魏为民2015年4月14日目录一、实验目的 0二、实验内容和步骤 01. 操作环境 02. 系统配置 03. 操作步骤 04. 程序源代码 (3)三、实验结果 (3)1. 测试图片 (3)2. 测试结果 (3)3.截屏 (4)四.实验小结 (4)1. 遇到的问题总结合分析: (4)2. 未解决的问题 (4)3. 实验效果和分析 (4)4. 总结: (4)附件: (5)上 海 电 力 学 院实 验 报 告 课程名称实验项目 姓名 学号 班级 专业同组人姓名 指导教师 魏为民 实验日期 一、实验目的1.用MATLAB 函数实现LSB 信息隐藏和提取。
2.了解信息隐藏的作用和实现方法原理。
3.学会分析了解隐藏算法。
二、实验内容和步骤如操作环境、系统配置、操作步骤、程序源代码等。
1.操作环境操作系统 Windows 7 旗舰版 64位 SP1 ( DirectX 11 )2.系统配置处理器 AMD E1-2100 APU with Radeon HD Graphics 双核3.操作步骤1) 打开MATLAB 软件,新建文件夹名为“ LSB ”。
2) 在“Command Window ”窗口里输入“guide ”,回车。
a. 如下图所示建立图形界面。
将5个push button 控件的“String ”属性设置为下图相应显示的名字,Tag 属性设置为pbt+String 名的格式。
将4个axec 控件的Tag 属性设置为如下图所显示的名字。
3) 分别右键点击5个push button 控件,View Callbacks->CallBacks.给每个控件添信息安全 LSB 信息隐藏实验 涂桂花 20123333 2012252 信息安全 无加Callback代码。
信息隐藏(图像处理)实验报告

信息隐藏(图像处理)实验报告
实验一、图像输入与输出
实验目的:
学习在MATLAB环境下对图像文件的I/O操作。
实验要求:
1.在Matlab环境下读入一幅.jpg格式的灰度图像并显示该图像;
2.显示多幅图像。
读入四幅灰度图像,并用两排显示。
实验结果:
实验二、直方图处理 实验目的:
获取图像的直方图,并利用直方图均衡化进行图像增强。
实验要求:
1.在Matlab 环境下读入.jpg 格式的灰度图像,分别显示该图像的直方图以及归一化直方图;
2.进行直方图均衡化。
显示均衡化后的图像,以及该图像的直方图。
实验结果:
原图 直方图
归一化直方图直方图均衡化后的结果图像
直方图均衡化后的结果图像的直方图
实验三、使用DCT进行变换编码
实验目的:
了解图像压缩中常用的DCT变换。
实验要求:
1.在Matlab环境下显示4x4的DCT基函数图像;
2.读入.jpg格式的灰度图像,对该图像进行8x8的DCT变换,将得到的系数的50%截去,再对截去的系数阵列进行逆变换得到重构图像,以图像形式显示重构图像和原始图像的误差。
实验结果
原图 4x4的DCT基函数图像
重构图像重构误差图像
实验四、图像加密
实验目的:
了解基于置乱的图像加密方法。
实验要求:
1.读入.bmp格式的灰度图像,编程实现基于Arnold变换的图像置乱加密算法。
实验结果:
原图置乱1次
置乱2次置乱3次
置乱4次置乱5次
置乱6次置乱96次。
实验一MATLAB基本操作及运算

实验一MATLAB基本操作及运算MATLAB是一种强大的数值计算和数据可视化工具,广泛应用于科学研究、工程设计、数据分析等领域。
本文将介绍MATLAB的基本操作和运算。
首先,我们需要了解MATLAB中的基本数据类型,包括数值型、字符型和逻辑型。
数值型可以是整数、实数、复数等;字符型用单引号或双引号包围字符;逻辑型用true和false表示。
MATLAB提供了各种数学运算函数,包括四则运算、三角函数、指数函数等。
例如,加法可以使用加号(+),减法可以使用减号(-),乘法可以使用乘号(*),除法可以使用除号(/)。
三角函数可以使用sin、cos、tan等函数,指数函数可以使用exp函数。
此外,还可以使用log 函数进行对数运算。
MATLAB还可以进行矩阵运算。
矩阵可以使用方括号([])表示,每一行用分号(;)分隔。
可以使用矩阵乘法运算符(*)进行矩阵相乘,使用点乘运算符(.)进行矩阵对应元素的运算。
矩阵还可以进行转置、逆运算等。
除了基本运算,MATLAB还提供了各种其他功能。
例如,可以使用plot函数进行数据可视化,使用subplot函数绘制多个图形。
可以使用for循环和while循环进行循环操作,使用if语句进行条件判断。
MATLAB还可以进行文件读写操作。
可以使用load函数从文件中加载数据,使用save函数将数据保存到文件中。
可以使用fopen函数打开文件,使用fclose函数关闭文件。
可以使用fprintf函数写入文本文件,使用fscanf函数读取文本文件。
还可以使用imread函数读取图像文件,使用imwrite函数保存图像文件。
MATLAB还具备向量化的能力。
向量化是指使用矩阵代替循环进行计算,能够提高代码的执行效率。
例如,可以使用点乘运算符(.)对矩阵的每个元素进行计算,而不是使用循环逐个计算。
使用向量化的方法,可以更加简洁地编写代码。
在MATLAB中还有很多强大的功能等待探索,例如符号计算、模拟仿真、深度学习等。
信息隐藏技术_实验报告(3篇)

第1篇一、实验目的1. 了解信息隐藏技术的基本原理和实现方法。
2. 掌握信息隐藏技术在图像、音频和视频等数字媒体中的应用。
3. 通过实验验证信息隐藏技术的有效性和安全性。
二、实验环境1. 操作系统:Windows 102. 编程语言:Python3. 库:OpenCV、scikit-image、numpy、matplotlib三、实验内容1. 图像信息隐藏2. 音频信息隐藏3. 视频信息隐藏四、实验步骤1. 图像信息隐藏(1)选择一幅图像作为宿主图像,并选择一幅图像作为水印图像。
(2)将水印图像转换为二值图像。
(3)对宿主图像进行分块处理,将每个块转换为二值图像。
(4)根据密钥对水印图像进行置乱,提高安全性。
(5)将置乱后的水印图像嵌入到宿主图像的对应块中。
(6)提取水印图像,并与原始水印图像进行对比。
2. 音频信息隐藏(1)选择一段音频作为宿主音频,并选择一段音频作为水印音频。
(2)对宿主音频和水印音频进行分帧处理。
(3)根据密钥对水印音频进行置乱,提高安全性。
(4)将置乱后的水印音频嵌入到宿主音频的对应帧中。
(5)提取水印音频,并与原始水印音频进行对比。
3. 视频信息隐藏(1)选择一段视频作为宿主视频,并选择一段视频作为水印视频。
(2)对宿主视频和水印视频进行帧提取。
(3)根据密钥对水印视频进行置乱,提高安全性。
(4)将置乱后的水印视频嵌入到宿主视频的对应帧中。
(5)提取水印视频,并与原始水印视频进行对比。
五、实验结果与分析1. 图像信息隐藏实验结果表明,嵌入水印后的图像与原始图像在视觉效果上几乎没有差异,水印的嵌入效果良好。
同时,提取的水印图像与原始水印图像完全一致,证明了信息隐藏技术的有效性。
2. 音频信息隐藏实验结果表明,嵌入水印后的音频与原始音频在音质上几乎没有差异,水印的嵌入效果良好。
同时,提取的水印音频与原始水印音频完全一致,证明了信息隐藏技术的有效性。
3. 视频信息隐藏实验结果表明,嵌入水印后的视频与原始视频在视觉效果上几乎没有差异,水印的嵌入效果良好。
如何进行信息隐藏的Matlab实现

如何进行信息隐藏的Matlab实现引言信息隐藏是一种将数据嵌入到其他载体中的技术,被广泛应用于数字版权保护、信息安全和隐私保护等领域。
Matlab作为一种强大的数值计算和数据可视化工具,提供了许多用于实现信息隐藏的函数和工具箱。
本文将介绍如何使用Matlab实现信息隐藏的基本原理、常用方法以及相关应用。
一、基本原理信息隐藏的基本原理是将要隐藏的信息嵌入到一个载体中,使其在外观上与原始载体无异。
常用的载体包括图像、音频和视频等。
在Matlab中,图像的处理是最为常见的应用场景之一。
图像信息隐藏的基本原理是在载体图像的像素值中嵌入待隐藏的信息。
通常,我们可以使用图像的最低有效位(LSB)进行嵌入操作。
LSB是指图像中像素值的最后一位,一般情况下,这个位上的变化对人眼来说是不可察觉的。
二、常用方法1. LSB替换法LSB替换法是信息隐藏中最为简单且常用的方法之一。
其基本原理是将待隐藏的数据按照一定的规则嵌入到载体图像的LSB位置。
具体步骤如下:(1)将待隐藏的数据转换为二进制形式;(2)读入载体图像,并将其像素值转换为二进制形式;(3)将待隐藏数据的二进制位逐一替换掉载体图像像素值的LSB位;(4)将嵌入了数据的载体图像保存至新文件。
2. 频域法频域法是一种将待隐藏的信息转换到载体图像的频域表示中,以实现更好的隐藏效果的方法。
其基本原理是将待隐藏的数据嵌入到载体图像的频域系数中,即对原始图像进行傅里叶变换,然后在频域中进行数据嵌入。
具体步骤如下:(1)载入待嵌入数据和载体图像;(2)对载体图像进行傅里叶变换,得到频域系数;(3)将待隐藏数据转换为频域表示;(4)将待隐藏数据嵌入到载体图像的频域系数中;(5)进行逆傅里叶变换,得到嵌入了数据的图像。
三、Matlab实现在Matlab中,可以使用以下函数和工具箱来实现信息隐藏操作:1. imread和imwrite函数:用于读取和保存图像;2. fft和ifft函数:用于傅里叶变换和逆傅里叶变换;3. bitget和bitset函数:用于获取和设置特定位上的二进制值。
图像隐藏 MATLAB实验报告

图像隐藏MATLAB实验报告1. 引言图像隐藏是一种将秘密信息嵌入到数字图像中的技术。
通过这种技术,我们可以将信息隐藏在覆盖物看起来像是普通图像的数字图像中。
图像隐藏有许多应用领域,包括数字水印、版权保护和信息隐蔽通信等。
在这个实验中,我们将使用MATLAB实现图像隐藏的过程,并观察性能和影响因素。
2. 实验方法2.1 准备工作在开始实验之前,我们需要准备以下工作:- 安装MATLAB并确保其正确配置。
- 准备一些用作载体的数字图像。
在本实验中,我选择了一张常见的风景照片作为载体图像。
- 准备需要隐藏的秘密信息。
在本实验中,我选择了一段文字作为秘密信息。
2.2 图像隐藏过程图像隐藏的过程可以分为以下几个步骤:1. 加载载体图像和秘密信息。
2. 将载体图像转换为灰度图像。
这是因为在灰度图像中隐藏信息相对较简单且具有较好的效果。
3. 对灰度图像进行傅里叶变换。
这一步是为了将图像从空间域转换到频率域,以便于接下来的嵌入操作。
4. 将秘密信息嵌入到频率域图像中。
这一步需要选择适当的嵌入算法和参数,以在保证图像可视性的情况下实现信息的隐藏。
5. 对嵌入了秘密信息的频率域图像进行逆傅里叶变换,将图像转换回空间域。
6. 将隐藏了秘密信息的图像保存到文件中。
3. 实验结果经过以上步骤,我成功地实现了图像隐藏的过程,并观察到了以下结果。
首先,我将秘密信息隐藏到载体图像中,并将隐藏后的图像显示出来。
通过肉眼观察,我无法看出图像中隐藏了秘密信息,即图像的可视性并未受到明显的影响。
其次,我执行了一系列实验,通过改变隐藏算法和参数,以观察不同因素对隐藏效果的影响。
实验结果显示,隐藏算法和参数的选择对图像的可视性和隐藏效果都有显著的影响。
一些算法和参数可能会导致隐藏的秘密信息更难以被发现,而另一些则可能导致图像质量下降。
此外,我还测试了对隐藏信息进行提取的过程。
通过对隐藏了秘密信息的图像执行一系列解密操作,我成功地提取出了隐藏的秘密信息,并与预先准备好的原始秘密信息进行了比对。
matlab基础操作

matlab基础操作
Matlab基础操作是指使用Matlab软件进行数据分析、可视化、算法设计等基础操作。
在Matlab中,我们可以使用命令行、脚本、函数等方式进行操作,并且可以使用内置函数库、工具箱等进行辅助,完成各种数据处理任务。
以下是Matlab基础操作的主要内容:
1. Matlab环境配置:安装Matlab软件,配置环境变量以及Matlab工具箱等。
2. 命令行操作:Matlab可以通过命令行操作来进行数据分析和可视化,包括基本数学运算、矩阵运算、绘图等。
3. 脚本和函数:Matlab可以通过编写脚本和函数来实现自定义的数据分析和处理任务,这些脚本和函数可以保存和复用。
4. 数据导入和导出:Matlab支持各种格式的数据导入和导出,包括文本文件、Excel文件、MAT文件等。
5. 数据可视化:Matlab提供了丰富的绘图工具,可以对数据进行可视化展示,包括二维和三维的图形、动态图形等。
6. 数据分析和统计:Matlab提供了各种数据分析和统计工具,包括线性回归、非线性回归、ANOVA、多元统计等。
7. 数学建模和仿真:Matlab可以用于建立数学模型和进行仿真,例如控制系统仿真、通信系统仿真等。
Matlab基础操作是Matlab学习的重要基础,深入掌握这些操作可以帮助我们更高效地进行数据分析和算法设计。
- 1 -。
信息隐藏技术

fori=1:si(1)*si(2)
msg(p:p+7)=bitget(SS(i),8:-1:1);
p=pபைடு நூலகம்8;
end
block=[3,3];
si = size(A);
lend = length(msg);
N = floor(si(2) / block(2));
M = min(floor(si(1) / block(1)), ceil(lend / N));
functionpushbutton6_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton6 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
functionpushbutton2_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton2 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
实验名称基于最低有效位(LSB)的信息隐藏技术
课程名称信息隐藏技术
一、实验目的及要求
对携密载体进行加噪、平滑、压缩、裁剪、旋转等攻击,然后提取隐藏的秘密信
二、所用仪器、设备
所用语言:Matla
所用工具:MatLab2012
三、实验原理
设C表示载体对象,Ci表示载体对象的取样值。Ci的取值范围根据载体信号的不同而不同。对于二值图像,其值为0或1,对于量化的图像或声音,它的可能取值是0到255的整数,对于归一化的图像或声音,可能取值为[-1,1]的任意值。载体的大小用L(c)表示。
信息隐藏实验报告一图像的位平面,LSB和MSB

信息隐藏实验报告一实验名称:图像的位平面,LSB 和MSB一、实验目的图像的位平面,LSB 和MSBLSB(Least Significant Bits):最不重要位(或最低有效位) MSB(Most Significant Bits):最重要位。
二、实验内容⑴用“按位与”运算清image 的第2、3、4、5、6、7位,结果分别保存在图像矩阵data02、 data03、 data04、 data05、 data06、 data07中,并显示所得结果;⑵用“按位与”运算取image 的第2、3、4、5、6、7位,结果分别保存在图像矩阵data12、 data13、 data14、 data15、 data16、 data17中,并显示所得结果;⑶用“按位与”运算清image 的第1-2、1-3、1-4、1-5、1-6、1-7位,结果分别保存在图像矩阵data02、 data03、 data04、 data05、 data06、 data07中,并显示所得结果; ⑷用“按位与”运算取image 的第3-8、4-8、5-8、6-8、7-8位,结果分别保存在图像矩阵data13、 data14、 data15、 data16、 data17中,并显示所得结果;⑸将彩色图像dsc.jpg 读入图像矩阵image ,重做上面的⑴-⑷项要求;⑹取彩色图像矩阵image 的某个分量(R 、G 、B 均可),重做上面的⑴-⑷项要求;三、实验环境matlab7.0四、基本原理(算法思想)时域是对应于变换域而言的,即不对信号做任何频率变换而得到的信号域就是时域。
对于图像载体,其信号空间也就是像素的取值空间。
我们选择了RGB 颜色空间下的像素作为分析对象。
在RGB 颜色空间中,每一个像素都有三个分量,即红(Red)、绿(Green)、蓝(Blue)分量。
五、实验结果与结论(主要的程序代码、运行结果)⑴用“按位与”运算清image 的第2、3、4、5、6、7位,结果分别保存在图像矩阵data02、 data03、 data04、 data05、 data06、 data07中,并显示所得结果;教师签名2007.11实验时间成绩评 定信息隐藏 课程名称同组人姓 名 05软件工程班 级 计算机科学与技术系别⑵用“按位与”运算取image的第2、3、4、5、6、7位,结果分别保存在图像矩阵data12、data13、 data14、 data15、 data16、 data17中,并显示所得结果;⑶用“按位与”运算清image的第1-2、1-3、1-4、1-5、1-6、1-7位,结果分别保存在图像矩阵data02、 data03、 data04、 data05、 data06、 data07中,并显示所得结果;⑷用“按位与”运算取image的第3-8、4-8、5-8、6-8、7-8位,结果分别保存在图像矩阵data13、 data14、 data15、 data16、 data17中,并显示所得结果;⑸将彩色图像dsc.jpg读入图像矩阵image,重做上面的⑴-⑷项要求;代码略清image的第2、3、4、5、6、7位取image的第2、3、4、5、6、7位清image的第1-2、1-3、1-4、1-5、1-6、1-7位⑹取彩色图像矩阵image的某个分量(R、G、B均可),重做上面的⑴-⑷项要求;代码image=imread('dsc.jpg');%将彩色图像读入图像矩阵image A=image(:,:,1);下略清image的第2、3、4、5、6、7位取image的第2、3、4、5、6、7位清image的第1-2、1-3、1-4、1-5、1-6、1-7位六、实验总结通过这次实验使我对图像的位平面有了一定的认识。
matlab-基本使用方法

指令 all(a)
any(a)
find logical
Matlab的逻辑函数
含义
测试矩阵所有元素是否非零。 (当向量a的元素全非0时,结果是1; 否则 为0,矩阵针对每一列) 测试任意非零值。 (只要a中有非0元素,结果就是1; 否则结 果是0) 查找非零元素的值和下标
将数值转变成逻辑值
例7: a=[1 2 0 4] b=all(a) a=[1 2; 3 4] c=all(a) (向量和矩阵) d=any(a)
矩阵输入的方法
1. 直接输入矩阵。 2. 通过语句生成矩阵。 3. 由矩阵生成函数产生特殊矩阵。 4. 用户自己编写M文件产生矩阵。 5. 通过导入外部数据文件生成矩阵。
1 直接输入矩阵
(1) 矩阵中元素应用方括号括住。 (2) 每行内的元素间用逗号或空格隔开; (3) 行与行之间用分号或回车键隔开。 (4) 元素可以是数值或表达式。
比较在两数组相同位置上的元素间进行,因此比较 结果将与被比数组同维。
例5: a=[1 3 ;7 8] b=2; c1=(a>=b) c2=a(a>=b) d=[6 5;2 3] e=a<d
维数不同时的反例 f=[1 7 2 ; 4 5 6] m=a<f
逻辑运算
Matlab的逻辑操作符主要有:
指令
关系运算和逻辑运算
在程序流控制和逻辑推理中,需要对一类是非 问题作出“是真,是假”的回答。所以设计了关系 和 逻辑操作和一些相关函数。
Matlab的规定: (1) 关系和逻辑表达式中,任何非0数都被看作
是“逻辑真”,而0被认为是“逻辑假”。 (2) 关系和逻辑表达式的计算结果,是由0和1组
成的“逻辑数组”。 (3) 逻辑数组是一种特殊的数值数组。与“数值
信息隐藏实验一

综合评分:实验一:MATLAB基本操作实验【实验目的】:熟悉MATLAB里的基本矩阵操作掌握MATLAB函数编写图像变换及翻转实验【实验内容】:(请将你实验完成的项目涂“■”)实验完成形式:■用MA TLAB命令行或者函数的方式实现彩色图像与灰度图像和二值图像的转换与显示。
■用MA TLAB函数方式实现图像分块DCT变换与显示。
■用MA TLAB函数方式实现对图像的变换、翻转和剪裁等。
□其它:(请注明)实验选择载体:□256×256灰度图像□256×256RGB图像■任意大小的RGB图像□其他可读写文件实验效果和分析:■掌握了基本的图像知识。
■掌握了基本的图像操作。
□其它:(请注明)【实验工具及平台】:■Windows+Matlab□其它:(请注明)【实验涉及到的相关算法】:1、与实验内容选择的项目对应;实验1.1-1.5是简单的matlab的基本操作。
计算以及文件打开什么的实验1.6对RGB图像分层实验1.7 RGB图像合并原理:GRB图像有三个通道,红,绿,蓝。
红、绿、蓝三个颜色通道每种色各分为255阶亮度。
可以将三个通道分层,或者合并。
data(high,with,RGB),1:R,2:G,3:B实验1.8subplot(m,n,p):前两个参数表示将画面分为m*n个子图像,p表示子图像序号,排序顺序为从左至右,从上至下。
imshow(x) :显示图像函数实验1.9 调用rgb2gray()函数和im2bw()分别实现把RGB图转灰度图,把灰度图转二值图像。
实验1.10熟悉取图像大小实验1.11 同一坐标轴里面话两个函数额图像plot(x1,y1);hold on;plot(x2,y2);hold off;实验1.12 用离散余弦变换分析合成图像离散余弦正变换:data1=dct2(data1);离散余弦逆变换:data3=idct2(data2);实验1.13实验1.14对图像进行旋转和变化Rot90(A,K)%让矩阵A逆时针旋转K个90度。
Matlab编程实现LSB信息的隐藏与提取

2010.111引言信息隐藏作为一门新兴学科越来越受到人们的重视,而如今成熟的信息隐藏算法基本上都是基于图像的,其中信息隐藏在图像空域中是一种最简单、有效的实现信息隐藏的手段。
Matlab 是由美国MATHWORKS 公司设计的强大的矩阵运算工具,它包含了大量的矩阵运算函数,以其强大的分析处理能力和运算能力而闻名,用以实现图像的处理非常适合。
在此介绍了一种简单的图像空域隐藏算法—LSB (最不重要位)隐秘算法。
主要是将隐秘信息嵌入到图像最不容易发觉的像素位,即最不重要位。
使用此算法的优点是隐藏效果好,不会破坏原图像的效果,隐藏信息多等,从而达到隐藏信息的目的。
2隐秘原理LSB 的嵌入方法是首先将要隐藏的信息以二进制的形式读入,再按照一定的算法选择它们要嵌入的位置。
如果要隐藏的信息的某一位为1,则它要嵌入的载体图像相应位置的像素值mod2的值为1;如果要隐藏的信息的某一位为0,则它要嵌入的载体图像相应位置的像素值mod2的值为0。
LSB 的提取方法是首先将确定隐藏信息嵌入的位置。
如果该位置的像素值mod2的值为1,则此处隐藏的信息为1;如果该位置的像素值mod2的值为0,则此处隐藏的信息为0。
但是选择选择嵌入的位置不同,抗攻击的能力是不同的,下面将介绍两种嵌入算法,并对其进行隐写分析比较。
算法一:顺序选择图像像素LSB 的嵌入算法,即将选取的像素点的最不重要位依次替换成秘密信息。
秘密消息的嵌入:for (i=1;i<=像素序列的个数;i++)Si ←Ci //Ci 为整个图像的像素集合,Si 是我们顺序选取的要隐//藏信息的像素的集合end forfor (i =1;i<=秘密信息长度;i++)S ji ←C ji ←Mi //将秘密信息Mi 存入选取的像素点Sjiend for秘密消息的提取:for (i=1;i<=像素序列的个数;i++)i ←→ji //计算存放第i 个消息位的指针jiMi ←LSB(Cji)//计算Cji 的LSB 位,恢复秘密信息end for算法二:随即选取像素点嵌入算法,即选出的嵌入信息的像素位置是随机的,这样可以增加隐秘信息的不可见性。
信息隐藏实验一matlab基本操作

其中为原始信号矩阵,[]为分块大小,为对每 一分块的操作规则,是中调用的参数。 实验 : >>(); >> (,[ ],'**'');
二、 基本操作
熟悉脚本编程的基本语法
一般形式为: <文件名>
运行方式:在命令窗口直接输入文件名, 按结束; 在编辑窗口打开菜单,单击
例:绘制图像
;
;
[]((),‘’)代表像素值,代表色
谱
二、 基本操作
熟悉的函数编写
一般形式:<因变量><函数名>(<自变 量>)
例:读入并绘制图像
()
();
();
在命令窗口输入(‘’);
关于符号:命令中的符号一定要是英文输入法中的符号。 关于类型:一般为和,用读入的是类型,进行数值计算时要转化为。
():前两个参数表示将画面分为*个子图像,表示子
图像序号,排序顺序为从左至右,从上至下。
() :显示图像函数
实验 :
>>()()(''),
()()('');
实验 :读取图像库任意一幅图像,转换为灰度图像和二 值图像显示。
转换为灰度图像:()
转换为二值图像: (),为阈值,阈值不同转换的图像也 不尽相同。(参考《实验教程》实验)
谢谢
二、 基本操作
熟悉取图像大小的操作,完成实验
实验: >>[]();
熟悉基本绘图操作,完成实验
([,'属性值'])以、为轴绘制曲线,可以设
置绘制属性
在同一幅图上绘制多幅图像: (,……)
信息隐藏基础实验

实验一基于图像的LSB信息隐藏算法一、实验目的1、了解和熟悉数字图像的读入和显示等基本操作。
2、了解不同“位平面”对图像质量的影响。
3、掌握不同图像格式之间的转换方法。
4、熟悉和掌握基于图像的LSB信息隐藏算法。
5、掌握对LSB算法的不可感知性的客观评价。
6、掌握LSB提取算法。
二、实验内容1、结合EXZAMPLE.M,查看不同“位平面”对图像质量的影响。
(1)运行example.m程序,将“位平面”的第7、8位设置为‘0’,得到如下结果,如图所示:由图分析得:去掉第7、8为,此两位(低位)对图像质量没有明显影响,没有携带图像的有用信息。
(2)运行example.m程序,将“位平面”的第3、4位设置为‘0’,得到如下结果,如图所示:由上图分析:对比左右两幅图像,可以看出去掉第3、4位对图像质量有较为明显的影响,携带有图像的有用信息。
(2)运行example.m程序,将“位平面”的第1、2位设置为‘0’,得到如下结果,如图所示:由图分析:对比左右两幅图像,可以看出去掉第1、2位对图像质量产生非常大的影响,携带有图像的大量有用信息。
由此程序可以得出,不同“位平面”对图像的质量有不同程度的影响,第1、2位携带有有用信息,而第7、8位不含有图像的有用信息。
2、运行water.m程序,理解不同图像格式之间的转换方法。
运行water.m程序,得到如下结果,如图所示:分析:可以在图像不同格式(RGB、灰度、二值)之间进行转换。
3、阅读并"完善" imbed.m内容,掌握基于图像的LSB信息隐藏算法。
(1)填写完善imbed.m程序,填写部分如下所示:(2)运行已完善的imbed.m程序,得到如下结果,如下图所示:分析:将水印嵌入灰度图像的“位平面”第N=6位,得到上图右图所示,与原图视觉效果没有区别,嵌入成功。
4、编写matlab函数:sse(f,f0)、mse(f,f0)、psnr(f,f0),实现对上述算法不可感知性的客观评价。
matlab基础操作

matlab基础操作MATLAB是一款十分强大的数学软件,被广泛应用于科学计算、工程设计、数据分析等领域。
下面是MATLAB基础操作的介绍,主要包括安装、启动、界面、命令行基本语法、常用工具箱、常用函数等方面。
一、安装与启动1. 安装:打开安装程序,按照提示进行安装即可。
注意需要先按照MATLAB支持的操作系统才能进行安装。
2. 启动:双击MATLAB图标或者在Windows菜单中找到MATLAB,点击打开即可。
二、界面介绍MATLAB提供了一个通用的用户界面,用户可以选择工具栏、脚本编辑器、命令历史记录、变量监视器、帮助文档等等。
下面是MATLAB界面的介绍。
1. 工具栏:提供MATLAB的一些基本工具,如文件的打开、保存、设置等等。
2. 脚本编辑器:可以打开和编辑MATLAB代码文件。
3. 命令历史记录:记录了用户在命令行窗口中输入的所有代码,方便用户查看和复制。
4. 变量监视器:可以用于监视和编辑工作区中的变量。
5. 帮助文档:提供了MATLAB的详细说明和例子,帮助用户快速掌握其操作方法。
三、命令行基本语法在MATLAB中,用户可以通过命令行输入代码来进行运算。
下面是MATLAB命令行基本语法的介绍。
1. 数值计算示例:a = 3;b = 4;c = a + b;d = a * b;e = a / b;2. 矩阵计算示例:A = [1 2; 3 4];B = [4 3; 2 1];C = A * B;3. 函数调用示例:sin(x)cos(x)exp(x)log(x)四、常用工具箱MATLAB提供了各种各样的工具箱,包含了从信号处理到图像处理、从优化到数据分析等各种数学处理工具箱。
下面是MATLAB常用的工具箱的介绍。
1. 信号处理工具箱:主要用于数字信号的滤波、频谱分析、时间序列数据的处理等操作。
2. 图像处理工具箱:主要用于图像处理、图像分析、图像增强、图像恢复等。
3. 优化工具箱:提供了各种优化算法,包括线性规划、非线性规划、约束优化等等。
(实验1)MATLAB的基本操作-刘霞

MATLAB语言及仿真实验指导书刘霞编西华大学电气信息学院实验一MATLAB的基本操作一.实验目的1、了解MATLAB工作窗口特性2、掌握通用操作指令和常用操作键。
3、学会使用MATLAB基本帮助命令。
4、学会如何使用MATLAB的表达式和变量。
5、学会如何使用MATLAB的基本运算函数。
二、实验准备知识1、MATLAB窗口中菜单、工具条内容见教材所示。
2、常用的键盘操作键见教材所示。
实验中用到的操作键有:↑键(或用Ctrl+p)调用前一个命令行;←(或Ctrl+b)光标左移一个字符;→(或Ctrl+f)光标右移一个字符。
3、查看MATLAB中基本帮助窗口:Demos,用于显示示例。
4、命令行直接帮助命令:help指令,可用来得到联机帮助的总览或具体的函数和指令信息。
5、MATLAB的语句由表达式和变量组成。
最常见形式为>> 变量=表达式结果自动赋予等式左边变量。
6、MATLAB 常用算符:+加法;-减法;^ 幂;* 乘法; / 右除;\ 左除7、MATLAB的变量以字母打头,区分大小写。
使用时要避免变量重复使用和与MATLAB的保留字相区分。
实验中用到的永久变量保留字有: pi 圆周近似值3.14159; i,j 虚数单位8、MATLAB常用的基本数学函数可参看教材。
实验中可能用到的数学函数有:sin(x) 正弦函数;exp(x) 自然指数;sqrt(x) 开平方;angle(x) 复数x 的相角。
9、MATLAB 手工输入矩阵时,在[ ]中输入以,或空格隔开的数字为元素,以;或回车表示换行。
三、实验内容和步骤1、进入Demos窗口,学习如何进行基本的矩阵操作: matrix。
2、用Help 指令查找有关指数函数指令exp的详细信息:输入 help exp。
写出下列各题的输入命令和执行结果。
3、用MATLAB求m=5.16+28.55i的相角,结果存在变量am中。
4、在MATLAB 命令窗口写出33)9522.4sin(5eπ⨯的表达式,执行表达式求出结果。
MATLAB的基本使用教程详解

MATLAB的基本使用教程详解MATLAB(Matrix Laboratory,矩阵实验室)是一种用于数值计算和可视化的编程环境。
它提供了强大的数值计算功能、丰富的数学函数库、快捷的可视化工具和易于使用的编程语言。
以下是关于MATLAB基本使用的一些教程:1. 安装和启动MATLAB:- 访问MATLAB官方网站下载并安装MATLAB。
- 安装完成后,在桌面上找到MATLAB图标并点击启动。
2. 创建一个新的MATLAB文件:- 在MATLAB界面,点击“新建”按钮,选择“新建图形”,或者使用快捷键Ctrl+N。
3. 基本的MATLAB命令:- 在命令窗口中输入命令并按Enter键执行。
例如,输入`1+2`并按Enter 键,将显示结果`3`。
- 可以使用括号对表达式进行组包。
例如,输入`(1+2)*3`并按Enter键,将显示结果`9`。
- 在MATLAB中,可以使用逗号将多个命令分开执行。
例如,输入`a = 1,b = 2,c = a+b`,将依次执行这三个命令并显示结果。
4. 变量和数组:- 在MATLAB中,可以使用`a = 1`的形式创建一个变量a并将其值设为1。
- 数组是一种可以存储多个相同类型数据的数据结构。
例如,可以使用`A = [1,2,3;4,5,6]`创建一个包含两行三列的数组。
5. 数学函数:- MATLAB提供了丰富的数学函数库,例如可以使用`sin(pi/2)`计算sin(π/2)的值。
- 可以同时使用多个函数对同一组输入参数进行操作。
例如,可以使用`c = a*b; d = log(a/b); e = sin(a)+cos(b)`同时对变量a、b进行多种操作。
6. 控制结构:- 可以使用`if`、`else`和`end`关键字创建条件语句。
例如,输入`if a > b, a = b; end`将使a的值等于b的值(如果a大于b)。
- 可以使用`for`循环遍历数组或向量。
信息隐藏实验一-matlab基本操作

实验1.9 :读取图像库任意一幅图像,转换为灰度图 像和二值图像显示。
转换为灰度图像:X=rgb2gray(image) 转换为二值图像: img_b=im2bw(img,0.3),0.3为阈值, 阈值不同转换的图像也不尽相同。(参考《实验教程》P7-8 2015/9/23
实验)
二、 MATLAB基本操作
熟悉取图像大小的操作,完成实验1.10
实验1.10: >>[row,col]=size(data1);
熟悉MATLAB基本绘图操作,完成实验1.11
plot(x,y[,'属性值'])以x、y为轴绘制曲线,可以设臵绘制属性 在同一幅图上绘制多幅图像: plot(x1,y1,x2,y2,……) 或者使用hold on即:plot(x1,y1); hold on; plot(x2,y2); hold off ;
>>randint(n,m,rg); %元素在[0,rg-1]内
>>randint(5,4,4);
2015/9/23
二、 MATLAB基本操作
熟悉一般文件的导入操作,完成实验1.4 实验1.4 : >> fid=fopen(filepath,'r');
>> fid=fopen('C:\1.txt','r'); r , w , a , r+ ……
信息隐藏实验一
2015年9月
2015/9/23
二、 MATLAB基本操作
当前工作 目录窗口
编辑窗口:编辑 函数或者脚本
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
>>randint(n,m,rg); %元素在[0,rg-1]内
>>randint(5,4,4);
2015/9/23
二、 MATLAB基本操作
熟悉一般文件的导入操作,完成实验1.4 实验1.4 : >> fid=fopen(filepath,'r');
>> fid=fopen('C:\1.txt','r'); r , w , a , r+ ……
命令的末尾输入分号可以使命令的输出不显示在命令窗口,用clc命令 清理命令窗口,clear命令清理变量。 不懂函数用法时用 help命令获得相关说明文档。help ***(***代表函 数名)
2015/9/23
三、图像变换及翻转实验
随堂实验,时间45分钟 实验要求:编写一个matlab函数,将输入的图像 进行变换或者翻转,并将结果显示在屏幕上。 实验目的:熟悉MATLAB里的基本矩阵操作 掌握MATLAB函数编写 评分标准:1)按时完成 2)能处理灰度图像 (评分: B) 3)能处理RGB图像 (评分: A)
2015/9/23
二、 MATLAB基本操作
熟悉随机数操作,完成实验1.3
实验1.3:>> rand(‘seed’, num); %rng
数是一定的
>>rand(‘seed’,1032);%设臵一个种子,设臵后下面的随机
>>rand(n,m); %生成m*n随机矩阵,其元素在(0,1)内
>>rand(5,4);
信息隐藏实验一
2015年9月
2015/9/23
二、 MATLAB基本操作
当前工作 目录窗口
编辑窗口:编辑 函数或者脚本
查看变量窗口
历史命令 记录窗口
命令窗口:输入命令
2015/9/23
二、 MATLAB基本操作
MATLAB变量名:
变量名以字母打头,后面最多跟19个字母或数字,如x,y, ae3和d3er45等都是合法的,不能使用内部函数或命令名作为 变量名。Matlab中的变量名区分大小写,ab与AB表示两个不 同的变量。 Matlab中可以直接使用变量而不必事先声明。
>>[msg,msg_len]=fread (fid,len,'ubit1'); help fopen ;help fread
2015/9/23
二、 MATLAB基本操作
熟悉图像的导入操作,完成实验1.5 imread(filename,fmt);%读取图片数据,参
数fmt指示图片格式,如‘bmp’,‘jpg’等, 缺省的话系统自动识别图像文件格式。
色彩合成
2015/9/23
二、 MATLAB基本操作
熟悉显示图像实验结果操作,完成完成实验1.8-1.9 subplot(mnp):前两个参数表示将画面分为m*n个子图像, p表示子图像序号,排序顺序为从左至右,从上至下。 imshow(x) :显示图像函数
实验1.8 :
>>subplot(121),imshow(data1);title('woman'),
2015/9/23
Tips
关于符号:matlab命令中的符号一定要是英文输入法中的符号。
关于类型:一般为uint8和double,用imread读入的是uint8类型,进 行数值计算时要转化为double。uint8的范围是[0 255],double的范围 是[0 1];
a=imread('c:\woman.bmp'); %读入图像 imshow(a); %正常显示图像 double_a=double(a); %转化为double类型 imshow(double_a); %显示白屏
2015/9/23
三、图像翻转实验(效果图)
rot90(A,K); flipup(A); fliplr(A); flipdim(X,DIM)
2015/9/23
2015/9/23
二、 MATLAB基本操作
其中正变换为dct2(data1) 逆变换为idct2(data1) 熟悉MATLAB的图像分块操作。 B=blkproc(A,[m,n],fun,P1,P2…)
实验1.13 : >>T=dctmtx(8);
>> result=blkproc(data1,[8 8],'P1*x*P2',T,T');2015/9ຫໍສະໝຸດ 23二、 MATLAB基本操作
熟悉随机数操作,完成实验1.3
rand:均匀分布随机矩阵
rand %无变量输入时只产生一个随机数 y=rand(n) %生成n*n随机矩阵,其元素在(0,1)内 y=rand(m,n) %生成m*n的随机矩阵
randn:正态分布随机矩阵 randint:整数随机分布矩阵 randint(m,n,rg)%第三个参数可缺省,生成一个m行n列的 元素,元素值在[0,rg-1]之间
例:绘制图像lena.bmp clc; clear; [x,map]=imread(strcat(pn,fn),‘bmp’);%x代表像素值,map代 表色谱 imshow(x);
详见《实验教程》附录一
2015/9/23
二、 MATLAB基本操作
熟悉MATLAB的函数编写
一般形式:function<因变量>=<函数名>(<自变量>) 例:读入并绘制图像 function y=a(resource) x=imread(resource); imshow(x); 在命令窗口输入a(‘lena.bmp’);
实验)
二、 MATLAB基本操作
熟悉取图像大小的操作,完成实验1.10
实验1.10: >>[row,col]=size(data1);
熟悉MATLAB基本绘图操作,完成实验1.11
plot(x,y[,'属性值'])以x、y为轴绘制曲线,可以设臵绘制属性 在同一幅图上绘制多幅图像: plot(x1,y1,x2,y2,……) 或者使用hold on即:plot(x1,y1); hold on; plot(x2,y2); hold off ;
实验1.5 : >>data1=imread('c:\woman.bmp'); >>data2=imread(‘.\Lenna.jpg');
2015/9/23
二、 MATLAB基本操作
熟悉图像RGB模型下的色彩操作,完成实验 1.6-1.7 实验1.6 :RGB图像分层 >> imageR=data2(:,:,1);%提取红色 实验1.7 :RGB图像合并 >>%对R层进行处理 >> Mix=cat(3,imageR,imageG,imageB);%
2015/9/23
其中A为原始信号矩阵,[m,n]为分块大小,fun为对每一分块 x的操作规则,Pi是fun中调用的参数。
二、 MATLAB基本操作
熟悉MATLAB脚本编程的基本语法
一般形式为: <M文件名>.m 运行方式:在命令窗口直接输入文件名,按enter结束; 在编辑窗口打开菜单debug,单击run
2015/9/23
二、 MATLAB基本操作
实验1.11 :《实验教程》P348
>>t=0:0.01*pi:2*pi; >>plot(t,sin(t)); >>title('0到2∏的正弦曲线','FontSize',16); >>xlabel('t=0到2 ∏'); >>ylabel('sin(t)'); >>text(pi,sin(pi),'\leftarrow sin(t)=0'); 并将对应的余弦曲线画在同一幅图中
熟悉MATLAB的矩阵操作,完成实验1.2
常用的矩阵函数 函数名称 zeros(m,n) eye(n) ones(m,n) 函数功能 m行n列零矩阵 n阶方阵 m行n列全1矩阵
实验1.2:>>X=zeros(m,n) ; %m,n为矩阵行列
2015/9/23
二、 MATLAB基本操作
矩阵取值: 索引: Z(1,2) 序号: Z(4) 冒号表达式: 1:10 1:2:10 Z(1:2,3:4) Z(:,end1:end) 逻辑,关系运算: >> a= rand(3,4) >> I= a>0.5 ; >> b=a(I)
一些常用命令:
dir:列出当前目录下的所有文件 clc:清除命令窗口 clear all:清除环境变量 help:帮助查询命令,help **(**代表要查询的命令名)
2015/9/23
二、 MATLAB基本操作
熟悉MATLAB,完成实验1.1
实验1.1:用MATLAB计算3+2,a*b(向量)
subplot(122),imshow(data2);title('lena');
实验1.9 :读取图像库任意一幅图像,转换为灰度图 像和二值图像显示。
转换为灰度图像:X=rgb2gray(image) 转换为二值图像: img_b=im2bw(img,0.3),0.3为阈值, 阈值不同转换的图像也不尽相同。(参考《实验教程》P7-8 2015/9/23
2015/9/23