LSB算法水印安全性测试及MATLAB实现.docx

上传人:b****5 文档编号:6337114 上传时间:2023-01-05 格式:DOCX 页数:9 大小:149.84KB
下载 相关 举报
LSB算法水印安全性测试及MATLAB实现.docx_第1页
第1页 / 共9页
LSB算法水印安全性测试及MATLAB实现.docx_第2页
第2页 / 共9页
LSB算法水印安全性测试及MATLAB实现.docx_第3页
第3页 / 共9页
LSB算法水印安全性测试及MATLAB实现.docx_第4页
第4页 / 共9页
LSB算法水印安全性测试及MATLAB实现.docx_第5页
第5页 / 共9页
点击查看更多>>
下载资源
资源描述

LSB算法水印安全性测试及MATLAB实现.docx

《LSB算法水印安全性测试及MATLAB实现.docx》由会员分享,可在线阅读,更多相关《LSB算法水印安全性测试及MATLAB实现.docx(9页珍藏版)》请在冰豆网上搜索。

LSB算法水印安全性测试及MATLAB实现.docx

LSB算法水印安全性测试及MATLAB实现

MATLAB-Matlab的优势和特点:

(1)友好的工作平台和编程环境

MATLAB由一系列工具组成。

这些工具方便用户使用MATLAB的函数和文件,其中许工具采用的是图形用户界面。

包括MATLAB桌面和命令窗口、历史命令窗口、编辑器和调试器、路径搜索和用于用户浏览帮助、工作空间、文件的浏览器。

随着MATLAB的商业化以及软件本身的不断升级,MATLAB的用户界面也越来越精致,更加接近Windows的标准界面,人机交互性更强,操作更简单。

而且新版本的MATLAB提供了完整的联机查询、帮助系统,极大的方便了用户的使用。

简单的编程环境提供了比较完备的调试系统,程序不必经过编译就可以直接运行,而且能够及时地报告出现的错误及进行出错原因分析。

(2)简单易用的程序语言

Matlab一个高级的距阵/阵列语言,它包含控制语句、函数、数据结构、输入和输出和面向对象编程特点。

用户可以在命令窗口中将输入语句与执行命令同步,也可以先编写好一个较大的复杂的应用程序(M文件)后再一起运行。

新版本的MATLAB语言是基于最为流行的C++语言基础上的,因此语法特征与C+语言极为相似,而且更加简单,更加符合科技人员对数字表达式的书写格式。

使之更利于非计算机专业的科技人员使用。

而且这种语言可移植性好、可拓展性极强,这也是MATLAB之所以能够深入到科学研究及工程计算各个领域的重要原因。

LSB算法水印安全性测试

LSB算法水印源码

1、嵌入源码

clearall;

%保存开始时间

start_time=cputime;

%读入原图像

file_name='1.jpeg';

[cover_object,map]=imread(file_name);

%读入水印图像

file_name='2.jpeg';

[message,map1]=imread(file_name);

message1=message;

message=double(message); %%转换为double数

message=fix(message./2); %%转换为0,1组成的矩阵

message=uint8(message); %%转换为uint8数

%原图的行数与列数

Mc=size(cover_object,1);  %原图的行数

Nc=size(cover_object,2);  %原图的列数

%水印的行数与列数

Mm=size(message,1);    %水印的行数

Nm=size(message,2);    %水印的列数

%将水印扩展为原图像大小,并写入watermark

forii=1:

Mc

 forjj=1:

Nc

  watermark(ii,jj)=message(mod(ii,Mm)+1,mod(jj,Nm)+1);

 end

end

%将原图的最低有效位值换为水印的值

watermarked_image=cover_object;

forii=1:

Mc

 forjj=1:

Nc

  watermarked_image(ii,jj)=bitset(watermarked_image(ii,jj),1,watermark(ii,jj));

 end

end

%将嵌入水印图像写入lsb_watermarked.jpeg

imwrite(watermarked_image,'lsb_watermarked.jpeg','jpeg');

%显示运行时间

elapsed_time=cputime-start_time,

%显示嵌入水印图像

figure

(1)

subplot(1,2,1)

imshow(watermarked_image,[])

title('嵌入水印图像')

subplot(1,2,2)

imshow(cover_object,[])

title('原图像')

%%扩展后水印

forii=1:

Mc

 forjj=1:

Nc

  watermark1(ii,jj)=message1(mod(ii,Mm)+1,mod(jj,Nm)+1);

 end

end

figure

(2)

imshow(watermark1,[])

title('扩展后的水印')

figure(3)

imshow(message1,[])

title('原水印')

 

2、提取源码

clearall;

%保存开始时间

start_time=cputime;

%读入嵌入水印图像

file_name='lsb_watermarked.jpeg';

watermarked_image=imread(file_name);

%嵌入水印图像的行数与列数

Mw=size(watermarked_image,1);  %嵌入水印图像行数

Nw=size(watermarked_image,2);  %嵌入水印图像列数

%读入原始水印

file_name='2.jpeg';

orig_watermark=imread(file_name);

%%原始水印的行数与列数

Mm=size(orig_watermark,1);    %水印的行数

Nm=size(orig_watermark,1);    %水印的列数

%用嵌入水印图像的最低有效位重建水印

forii=1:

Mw

 forjj=1:

Nw

  watermark(ii,jj)=bitget(watermarked_image(ii,jj),1);

 end

end

%将提取水印变为原始水印大小

watermark=2*double(watermark);

forii=1:

Mm-1

 forjj=1:

Nm-1

  watermark1(ii+1,jj+1)=watermark(ii,jj);

 end

end

watermark1(1,1)=watermark(Mm,Nm);

%显示运行时间

elapsed_time=cputime-start_time,

%显示提取水印与原始水印

figure(4)

subplot(1,2,1)

imshow(watermark1,[])

title('提取水印')

subplot(1,2,2)

imshow(orig_watermark,[])

title('原始水印')

3、中值滤波处理

二维中值滤波器对图像的处理是用一个二维的窗口去依次成块地覆盖图像中的像素,用覆盖的那些像素值的中值去取代窗口正中的那个像素的值。

假设图像的大小为K×L,在用滤波器处理图像之前还要进行点扩展,以保证输出的图像大小与原来的一致,扩展点的个数取决于图像的大小和窗口的大小,下面是一个图像大小为3×3,窗口大小也为3×3的点扩展的图示,如图7-12所示。

图7-12二维中值滤波像素点扩展图示

下图是lenna的原始图像和做7×7的中值滤波后的结果:

图7-13中值滤波结果

程序源码如下:

%文件名:

median16.m

%目的:

完成对图像的中值滤波

%引用举例:

image_opd=median16('lsb_watermarked.bmp',3);

%参数说明:

%image待做中值滤波的图像

%x二维中值滤波器的窗口尺寸参数,窗口大小为x*x,这里的二维中值滤波器为常规中值滤波器

functionimage_opd=median16(image,a);

A=imread(image);

[row,col]=size(A);

A=double(A)/65535;

original=A;

B=reshape(A,row,col);

C=medfilt2(B,[aa]);

col=col/3;

image_opd=reshape(C,row,col,3);

imwrite(uint8(image_opd*65535),'temp2.png','BitDepth',16);

%以png格式存储

运行LSB提取水印图片

中值滤波处理后,水印仍清晰可见。

分别选取五组图片,进行实验,将实现结果图片粘贴,分别命名为3-1、3-2、3-3、3-4、3-5。

4、加盐噪声后提取水印(椒盐噪声是图像中经常见到的一种杂讯,它是一种随机的白点或者黑点,可通过中值滤波去除噪声)

椒盐噪声代码如下:

M=imread('lsb_watermarked.jpeg');

P2=imnoise(M,'salt&pepper',0.002)

subplot(3,3,3)

imshow(P2)

title('salt&peppernoise');

让可看到水印内容。

分别选取五组图片,进行实验,将实现结果图片粘贴,分别命名为3-1、3-2、3-3、3-4、3-5。

5、JPEG压缩水印图像

压缩后,水印无法提取。

分别选取1组图片,进行实验,将结果实现图片粘贴。

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

当前位置:首页 > 党团工作 > 入党转正申请

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

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