实验报告模板szm.docx

上传人:b****8 文档编号:10159561 上传时间:2023-02-08 格式:DOCX 页数:17 大小:368.09KB
下载 相关 举报
实验报告模板szm.docx_第1页
第1页 / 共17页
实验报告模板szm.docx_第2页
第2页 / 共17页
实验报告模板szm.docx_第3页
第3页 / 共17页
实验报告模板szm.docx_第4页
第4页 / 共17页
实验报告模板szm.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

实验报告模板szm.docx

《实验报告模板szm.docx》由会员分享,可在线阅读,更多相关《实验报告模板szm.docx(17页珍藏版)》请在冰豆网上搜索。

实验报告模板szm.docx

实验报告模板szm

实验一:

RGB图像分层及分层加强

一:

实验目的:

(1)了解图像的基本的类型和表示方式。

(2)了解索引图像中图像矩阵与调色板的关系。

(3)掌握RGB图像分层结构及分层加强的方法。

 

二:

实验内容:

(1)熟悉并尝试使用Matlab的命令方式和程序方式处理数组及图像。

(2)用Matlab对RGB图像分层,并将图像的指定层加强。

三:

实验过程:

1.3.1索引图像的操作:

>>[data,map]=imread('c:

\lenna256.jpg','jpg');%从C盘中读取jpg图像

>>image(data),colormap(map);%将读取的索引图像显示出来。

图1.1索引图像

1.3.2RGB颜色色谱的分层显示:

>>RGB=reshape(ones(64,1)*reshape(jet(64),1,192),[64,64,3]);

>>R=RGB(:

:

1);

>>G=RGB(:

:

2);

>>B=RGB(:

:

3);

>>subplot(141),imshow(R),title('红色分量');

>>subplot(142),imshow(G),title('绿色分量');

>>subplot(143),imshow(B),title('蓝色分量');

图1.2RGB颜色色谱的分层显示

1.3.3RGB图像分层显示和指定层的加强:

打开Matlab实验环境,在File选项中新建M-Flie。

并在M-file中写入操作代码:

%将输入的RGB图像分层,并将图像的指定层加强

%输入格式举例:

【imageRGB,imageR,imageG,imageB,result】=rgbanalysis('c:

\lenna256.jpg','jpg',1)

function[imageRGB,imageR,imageG,imageB,result]=rgbanalysis(image,permission,level);

imageRGB=imread(image,permission);

imageRGB=double(imageRGB)/255;

result=imageRGB;

%对图像进行分层提取

imageR=imageRGB(:

:

1);

imageG=imageRGB(:

:

2);

imageB=imageRGB(:

:

3);

%显示结果

subplot(321),imshow(imageRGB),title('原始图像');

subplot(322),imshow(imageR),title('R层灰度图像');

subplot(323),imshow(imageG),title('G层灰度图像');

subplot(324),imshow(imageB),title('B层灰度图像');

%对相应的层进行颜色加强

iflevel==1

imageR=imageR+0.2;

end

iflevel==2

imageG=imageG+0.2;

end

iflevel==3

imageB=imageB+0.2;

end

result(:

:

1)=imageR;

result(:

:

2)=imageG;

result(:

:

3)=imageB;

imwrite(result,'temp.jpg','jpg');

result=imread('temp.jpg','jpg');

subplot(325),imshow(result),title('色彩增强的结果');

在Matlab命令行中输入如下指令:

>>[imageRGB,imageR,imageG,imageB,result]=rgbanalysis('c:

\lenna256.jpg','jpg',1);

可得到实验结果图:

图1.3RGB分层显示和加强图像

四:

试验总结:

本实验是对RGB图像的分层及强化处理,而MATLAB在处理图像的时候是要将图像化为矩阵来处理,所以,在对图像处理前需要将图像转化为RGB图像矩阵,并分层提取,之后才能进行加强操作。

在分层加强层时,R、G、B分别是1、2.、3对应该层。

本次实验加深了我们对课本内容的理解,同时加强了我们的学习兴趣,动手对图像进行操作更是从另一方面让我们学习MATLAB知识。

实验二:

LSB信息隐藏和提取

一:

实验目的:

(1)深入理解信息隐藏的相关内容,能进行简单的信息隐写和数字水印操作。

(2)掌握顺序选择像素点及随机选择像素点,将消息嵌入LSB并提取消息。

(3)掌握相关工具的使用。

 

二:

实验内容:

(1)顺序选择像素点将消息嵌入LSB并提取消息。

(2)随机选择像素点将消息嵌入LSB并提取消息。

(3)分析LSB算法的抗攻击能力。

三:

实验详细过程:

2.3.1:

顺序选择像素点将消息嵌入LSB并提取消息。

新建M-file编写顺序隐藏代码:

%函数功能:

本函数将完成在LSB上的顺序信息隐秘

function[ste_cover,len_total]=lsbhide(input,file,output)

%读入图像矩阵

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);

iflen_total>m*n

error('嵌入消息量过大,请更换图像');

end

%p作为消息嵌入位数计数器

p=1;

forf2=1:

n

forf1=1:

m

ste_cover(f1,f2)=ste_cover(f1,f2)-mod(ste_cover(f1,f2),2)+msg(p,1);

ifp==len_total

break;

end

p=p+1;

end

ifp==len_total

break;

end

end

ste_cover=uint8(ste_cover);

imwrite(ste_cover,output);

%显示实验结果

subplot(1,2,1);imshow(cover);title('原始图像');

subplot(1,2,2);imshow(output);title('隐藏信息的图像');

保存后在命令行执行:

>>[ste_cover,len_total]=lsbhide('lenna512.bmp','1.txt','d.bmp');

得到如下对比图像:

图2.1LSB空域信息隐藏后图像与原始图像对比

2.3.2:

随机选择像素点将消息嵌入LSB并提取消息:

新建M-file文件写入代码:

%函数功能:

本函数将完成随机选择LSB的信息隐秘

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);

iflen_total>m*n

error('嵌入消息量过大,请更换图像');

end

%p作为消息嵌入位数计数器

p=1;

%调用随机间隔函数选取像素点

[row,col]=randinterval(ste_cover,len_total,key);

%在LSB隐秘消息

fori=1:

len_total

ste_cover(row(i),col(i))=ste_cover(row(i),col(i))-mod(ste_cover(row(i),col(i)),2)+msg(p,1);

ifp==len_total

break;

end

p=p+1;

end

ste_cover=uint8(ste_cover);

imwrite(ste_cover,output);

%显示实验结果

subplot(1,2,1);imshow(cover);title('原始图像');

subplot(1,2,2);imshow(output);title('隐藏信息的图像');

在命令行输入如下指令:

>>[ste_cover,len_total]=randlsbhide('lenna512.bmp','1.txt','hided.bmp',213)

得到随机隐藏信息的图像:

图3.2随机选择像素点将消息嵌入LSB并提取消息

2.3.3:

隐藏信息的提取:

前面通过实验已经将秘密信息隐藏在图像中,下面通过实验将隐藏的秘密信息提取出来:

新建M-file文件:

%函数功能:

本函数将完成提取隐秘于LSB上的秘密消息

functionresult=lsbget(output,len_total,goalfile)

ste_cover=imread(output);

ste_cover=double(ste_cover);

%判断嵌入消息量是否过大

[m,n]=size(ste_cover);

frr=fopen(goalfile,'a');

%p作为消息嵌入位数计数器,将消息序列写回文本文件

p=1;

forf2=1:

n

forf1=1:

m

ifbitand(ste_cover(f1,f2),1)==1

fwrite(frr,1,'bit1');

result(p,1)=1;

else

fwrite(frr,0,'bit1');

result(p,1)=0;

end

ifp==len_total

break;

end

p=p+1;

end

ifp==len_total

break;

end

end

fclose(frr);

在命令行执行如下代码:

result=lsbget('d.bmp',1736,'secret.txt');

可得到隐藏信息文件secret.txt,打开原文件对比:

图3.3隐藏信息与提取信息对比

在新建随机信息提取文件M-file:

%函数功能:

本函数将完成提取隐秘于LSB上的秘密消息

functionresult=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);

fori=1:

len_total

ifbitand(ste_cover(row(i),col(i)),1)==1

fwrite(frr,1,'bit1');

result(p,1)=1;

else

fwrite(frr,0,'bit1');

result(p,1)=0;

end

ifp==len_total

break;

end

p=p+1;

end

fclose(frr);

在命令行执行如下代码:

result=randlsbget('hided.jpg',424,'secret2.txt',1988)

即可得到隐藏的信息共424,(原始隐藏文件是53个字符,对应与2进制正好424)

四:

实验总结:

通过本次实验使我们对图像处理和信息隐藏有了更深的了解。

图像在存储的时候是2进制代码形式,所以在本次实验中对信息的隐藏是通过将信息转化为2进制代码,替换到图像的最低有效位中去。

另外,本实验对图像和信息数据量都是有要求的,为了能将图像简单处理,实验中用的几乎都是一些特殊大小的图像,隐藏的信息也是有大小限制的,为了能将信息全隐藏进图像,实验用的信息只有424Byte。

综合评分:

实验三:

W-SVD数字水印实验

【实验目的】:

(1)了解图像小波变换。

(2)掌握W-SVD数字水印生成、嵌入、检测的方法。

(3)了解数字水印基本模型。

(4)学会stirmark攻击W-SVD的方法。

【实验内容】:

(请将你实验完成的项目涂“■”)

实验完成形式:

■用MATLAB函数实现W-SVD的三大策略

□用MATLAB命令行方式实现实现W-SVD的三大策略

□其它:

(请注明)

实验效果和分析所使用的手段:

□结合水印性能分析使用StirMark对水印进行了攻击

■结合水印性能分析编写程序绘制了“攻击-健壮性曲线”

■结合水印性能分析编写程序绘制了“强度-不可见性曲线”

■对W-SVD进行了合谋攻击并给出分析

□其它:

(请注明)

【实验工具及平台】:

■Windows+Matlab□其它:

(请注明)

【实验分析】:

1、请尽量使用曲线图、表等反映你的实验数据及性能

2、对照实验数据从理论上解释原因

3、如无明显必要,请不要大量粘贴实验效果图

4、说明你在以下栏目中分析所使用的方法,给出实验数据,最后总结结论

1、水印强度参数α对水印鲁棒性的影响:

(如果完成了本部分实验请写明你的方法、实验数据及结论)

方法是将a分别取0.01,0.05,0.1,0.5得到四张不同的嵌入水印图像(保持其他参数不变),再对这些图像做jpeg压缩,计算出相应的相关值,用matlab编程实现,得到下面四。

上面四张图分别是a=0.01,a=0.05,a=0.1,a=0.5,由上面四张图可以看出,水印强度系数a越大,水印鲁棒性越好。

实验时d/n=0.99。

所以检测的阙值取0.1,随着a的增大,误检率降低。

2、水印强度参数α对水印不可见性的影响:

(如果完成了本部分实验请写明你的方法、实验数据及结论)

用均方差来衡量a对水印不可见的影响。

用matlab编写plotmse()函数绘图如下:

3、水印容量参数d/n对水印鲁棒性的影响:

(如果完成了本部分实验请写明你的方法、实验数据及结论)

方法是将d/n分别取0.01,0.1,0.3,0.99得到四张不同的嵌入水印图像,再对这些图像做jpg压缩,计算出相应的相关值,画出jpeg攻击-健壮性曲线和种子相关曲线。

当d/n=0.6时。

要正确测出水印,把检测阙值定为0.8,在它的jpeg攻击-健壮性曲线上可以看出相关性值高于0.8的区域很少,它抗jpeg攻击的能力就很小。

当d/n=0.99时,要正确检测出水印,就要把检测阙值定为0.1,在它的jpeg攻击-健壮性曲线上可以看出相关性值高于0.1的区域比较大,它抗jpeg攻击的能力就越强,

所以,d/n越接近于1,水印的鲁棒性就越强。

4、水印容量参数d/n对水印不可见性的影响

(如果完成了本部分实验请写明你的方法、实验数据及结论)

用均方差来衡量d/n对水印不可见性的影响

由上图可见,d/n的值对于水印的不可见性影响不大。

d/n由0变化到1,MSE的值总在16.35到16.5之间。

5、水印其它参数(小波尺度、小波基等)对水印性能的影响

(如果完成了本部分实验请写明你的方法、实验数据及结论)

1.小波尺度对水印不可见性的影响:

小波尺度对水印不可见性的影响:

小波尺度从1到6,计算出的MSE分别是输入数据的MSE:

16.3541,16.375,16.586,16.789,16.6537,16.6481,说明它对水印不可见性的影响不大。

2.小波尺度对水印鲁棒性的影响

由图可见,小波尺度为5和2的检测阈值都可以设为0.1。

但是小波尺度越大,检测就越困难。

由攻击曲线可以看出小波尺度大的鲁棒性好一些,因为水印嵌入的是图象能量更高的地方,所以它的鲁棒性好一些,但是它嵌入的信息就少要一些,这就加大了检测的难度。

【实验结论】:

1、请绘制W-SVD水印对应的理论模型图(参照《实验教程》P213-215面)

2、结论:

由w-svd水印的原理和上述实验数据可知,d/n是指随机模版占水印的比例,比例越大,水印具有的随机性就越好,拥有的信息量也越多,因此检测起来也就更方便。

水印强度参数a越大,水印数据就越大,那么水印的鲁棒性就越好,但是不可见性就越差。

小波尺度越大,水印嵌入的是图象能量越高的地方,所以它的鲁棒性好一些,但是它嵌入的信息就少要一些,这就加大了检测的难度。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 求职职场 > 自我管理与提升

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1