MATLAB图形的实验原理,信息隐藏实验1

信息隐藏实验1  计算机图像的基本操作

实验目的

一、熟悉MATLAB图像基本操作

二、使用图像降级技术实现图中藏图

实验要求

一、要求能够利用C/C++、Matlab等高级编程语言编写基本的算法程序,并通过调试、运行程序。

二、上交实验报告

实验内容

一、熟悉MATLAB,完成下述实验:

实验1.1:用MATLAB计算3+2

实验1.2:矩阵操作

>>X=zeros(m,n) ; %m,n自由选择

>>Y=zeros(size(X));

>>Z=[1,2,3;4,5,6;7,8,9];

>>Z(1,2)=?

>>X(p,q)=Z(1,2); %p,q自由选择

实验1.3:伪随机发生器一般模型:

>>rand(‘seed’, num); %num自己选择

>>rand(n,m); %m,n自己选择

>>randint(n,m,rg); %m,n,rg自己选择

实验1.4:熟悉一般文件的导入操作

>>frr=fopen(filepath,’r’);  %filepath自己选定

>>[msg,msg_len]=fread(frr,’ubit1’);

实验1.5:熟悉图像的导入操作

>>data1=imread(‘c:\woman.bmp’);  %图像自己选定

>>data2=imread(‘c:\lena.jpg’);    %图像自己选定

实验1.6:RGB图像分层

>> imageR=data2(:,:,1);  %data2由实验1.5生成

实验1.7:RGB图像合并

>>%对R层进行处理

>> data2(:,:,1)=imageR;

实验1.8:熟悉显示图像实验结果操作:

>>subplot(121),imshow(data1);title(‘woman’),

subplot(122),imshow(data2);title(‘lena’);

实验1.9:熟悉MATLAB的位操作

>>data3=bitand(data1,240);

实验1.10:熟悉取图像大小的操作

>>[row,col]=size(data1);

实验1.11:二维绘图plot

>>y=rand(100,1)

>>plot(y);

实验1.12:二维绘图plot

>>x=1:0.1*pi:2*pi;

>>y=sin(x);

>>z=cos(x);

>>plot(x,y,'-ob',x,z,':ms');

绘图结果:

6dcae43bb7cfd724e5ec0704de53f0a5.png

实验1.13:熟悉MATLAB脚本编程的基本语法,

生成脚本文件*.m,实现以下多个基本绘图操作:

>>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),’\bullet\leftarrow sin(t)=0’);

>>gtext(’\bullet\最小值sin(t)=-1’);

绘图结果:

7cb19fbf7224a83d849ba49850776836.png

实验1.14:三维绘图plot3

>>y=rand(100,1)

>>x=0:pi/50:10*pi;

>>y=sin(x);

>>z=cos(x);

>>plot3(x,y,z);

绘图结果:

f6a9a7944d858b9f3044fb33d9561a56.png

实验1.15:三维绘图mesh

>>x=-8:0.5:8;

>> y=x';

>> a=ones(size(y))*x;

>> b=y*ones(size(x));

>>c=sqrt(a.^2+b.^2)+eps;

>> z=sin(c)./c;

>>mesh(z);

绘图结果:

8f3b1d8d9bb80fe77858ccf639757567.png

二、使用图像降级技术实现图中藏图

实验1.16:图像降级

给定同样尺寸的伪装载体和秘密图像,发送者把伪装载体图像灰度(或彩色)值的4个最低比特替换成秘密图像的4个最高比特。接收者从隐藏后的图像中把四个最低比特提取出来,从而获得秘密图像的4个最高比特位。

923f01ee3645fa2f045132eb437e9add.png

c53db8119c6269dce3001c214ab77f98.png

lm脚本程序如下:

%文件名:imagehide.m

%函数功能:直接将秘密图像的高4bit隐藏在RGB载体图像的R、G、B层中所选的那一层的低4bit,并将秘密图像提取出来,最后显示。要求载体图像的大小大于等于秘密图像的大小。且秘密图像是二值或灰度图像。

%输入格式:

%data=imagehide('c:\Lenna.bmp','c:\woman.bmp','c:\mix.bmp','bmp',3)

%参数说明:

% cover是载体图像的地址

% massage是秘密图像的地址

% goleimage是隐藏后图像的地址

% pemission是图像的类型

%level是作为的载体的具体层。R为1,G为2,B为3。

%data是隐藏后图像的矩阵

function data=imagehide(cover,massage,goleimage,permission,level)

%提取图像信息并分层

cover = imread(cover,permission);

data=cover;

msg=imread(massage,permission);

[row,col]=size(cover);

cover1=cover(:,:,level);

%置载体图像R层的低4bit为0

for i=1:row

for j=1:col/3

cover1(i,j)=bitand(cover1(i,j),240);

end

end

%置秘密图像的低4bit为0

takemsg4=bitand(msg,240);

%将秘密图像的高4bit右移4位

shiftmsg4=bitshift(takemsg4,-4);

%图像隐藏

for i=1:row

for j=1:col/3

cover1(i,j)=bitor(cover1(i,j),shiftmsg4(i,j));

end

end

%写回并保存

data(:,:,level)=cover1;

imwrite(data,goleimage,permission);

%提取秘密图像信息,检测隐藏效果

data=imread(goleimage,permission);

[row,col]=size(data);

A=data(:,:,level);

for i=1:row

for j=1:col/3

A(i,j)=bitand(A(i,j),15);

end

end

A=bitshift(A,4);

%显示结果

subplot(221),imshow(cover);title('载体图像');

subplot(222),imshow(massage);title('秘密图像');

subplot(223),imshow(data);title('隐藏后的图像');

subplot(224),imshow(A);title('提取的秘密图像');

l实验绘图结果:

cb83fc53e81cfb966a70ff406c93ba2d.png

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值