基于LSB算法的数字水印嵌入与提取方法_第1页
基于LSB算法的数字水印嵌入与提取方法_第2页
基于LSB算法的数字水印嵌入与提取方法_第3页
基于LSB算法的数字水印嵌入与提取方法_第4页
基于LSB算法的数字水印嵌入与提取方法_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、沈阳理工大学数字图像1处 理课程设计报告1 设计目的(1)了解数字水印的基本概念,深入理解基于 LSB算法的数字水印嵌入与提取方法。(2)运用 MATLAB语言编程实现图像水印的嵌入和提取。(3)能够显示水印嵌入前后的载体图像,能够显示嵌入与提取的水印。2 设计方案2.1 数字水印的相关知识 数字水印的相关知识数字水印( Digital Watermark )技术是指用信号处理的方法在数字化的多媒体数 据中嵌入隐蔽的标记,这种标记通常是不可见的,只有通过专用的检测器或阅读器才能 提取。数字水印是信息隐藏技术的一个重要研究方向。在数字水印技术中,水印的数据量和鲁棒性构成了一对基本矛盾。从主观上讲

2、,理 想的水印算法应该既能隐藏大量数据,又可以抗各种信道噪声和信号变形。然而在实际 中,这两个指标往往不能同时实现,不过这并不会影响数字水印技术的应用,因为实际 应用一般只偏重其中的一个方面。如果是为了隐蔽通信,数据量显然是最重要的,由于 通信方式极为隐蔽,遭遇敌方篡改攻击的可能性很小,因而对鲁棒性要求不高。但对保 证数据安全来说,情况恰恰相反,各种保密的数据随时面临着被盗取和篡改的危险,所 以鲁棒性是十分重要的,此时,隐藏数据量的要求居于次要地位。数字水印技术是通过 一定的算法将一些标志性信息直接嵌到多媒体内容当中, 但不影响原内容的价值和使用, 并且不能被人的知觉系统觉察或注意到。水印信息

3、可以是作者的序列号、公司标志、有 特殊意义的文本等, 可用来识别文件、 图像或音乐制品的来源、 版本、原作者、拥有者、 发行人、合法使用人对数字产品的拥有权。与加密技术不同,数字水印技术并不能阻止 盗版活动的发生,但它可以判别对象是否受到保护,监视被保护数据的传播、真伪鉴别 和非法拷贝、解决版权纠纷并为法庭提供证据。为了给攻击者增加去除水印的难度,目 前大多数水印制作方案都采用密码学中的加密 ( 包括公开密钥、私有密钥 ) 体系来加强, 在水印的嵌入、提取时采用一种密钥,甚至几种密钥联合使用。随着计算机应用逐渐广泛、网络技术的迅速发展,使音频、视频等多媒体信息都能 以数字形式传输和播放,从而使

4、大规模非授权拷贝成为了可能,而这样会损害音乐、电影、书籍和软件等出版业的发展,为了保护知识产权引发了一个很有意义的研究方向: 信息隐藏。本文首先介绍了了数字水印技术的原理和分类, 接着对 LSB 算法原理及 LSB 算法实现进行了介绍,最后使用 MATLAB 对其加密过程进行了仿真。2.2 数字水印技术的基本原理数字水印的主要目的是将特定的信息加入到需要保护的媒体信息中, 加入的信息一 般是能够代表媒体信息版权的内容,如公司标志、媒体作者、特定代码等,而且要保证 数字水印能够抵抗一定的攻击,而不被轻易的破坏和修改,同时数字水印要能够被提取 或者能够被检测到。数字水印的具体内容、算法、提取或检测

5、过程根据实际应用有不同 的要求。数字水印的嵌入和提取过程如图 2.1,图 2.2 所示。图 2.1 数字水印的嵌入过程图 2.2 数字水印的提取过程图 2.1 是数字水印的嵌入过程,加入密钥可以提高数字水印的隐蔽性、抗攻击性, 而并非是必须的。根据用途不同,嵌入的水印有些是需要还原的,而有些则只需验证水 印的存在性,前者需要数字水印的提取算法,而图 2.2 需要数字水印的检测算法,根据 具体的水印算法,嵌入或提取的过程可能有所不同。2.3 数字水印的分类数字水印算法一般可分为两种空域法和频域法,频域法有以下优点:(1 )嵌入的水印信号能量可以分布到空域的所有像素上,有利于保证水印的不可见 性;

6、(2 )视觉系统( HVS)的某些特性(如频率的掩蔽特性)可以更方便地结合到水印编码过 程中;(3 )频域法可与国际数据压缩标准兼容,从而实现在压缩域( compressed domain)内的 水印编码。所以我们也以频域法为主介绍 MATLAB在数字水印技术中的使用。按数字水印的特性可分为鲁捧数字水印和脆弱数字水印。鲁棒数字水印主要用于标 识数字媒体信息的版权信息, 它要求嵌入的水印能够抵抗对媒体的常规编辑和恶意攻击, 在对媒体进行如:裁剪、旋转、缩放、压缩的变换后水印信息不受到较大损害。而脆弱 水印相反,它对攻击敏感,可以根据脆弱水印的状态判断原始信息是否被修改过。按数字水印所附载的媒体可

7、分为图像水印、音频水印、视频水印和文本水印等。每 一种数字化的媒体都有相应的水印算法,这也造成了数字水印算法的复杂性。按数字水印隐藏的位置划分可以分为空 (时)域数字水印、频域数字水印、 时频域 数字水印和时间度数字水印。原始信息通常在空域或者时域上表示,根据信号处理理 论有多种变换将信号变化到另外的域上, 每一种域上都可以嵌入数字水 印,也就产生了 相应的数字水印算法。按数字水印的可见性可以分为可见数字水印和非可见数字水印。可见数字水印通常 是将公司表示叠加到原始图像上,算法比较简单,也有相应的应用软件,如 Undreamt Marking Technologies公司的 Photo Wat

8、ermark。而不可见数字水印要求嵌入的水印是不 能被人的视觉系统感知的,其算法相对复杂。关于数字水印算法的分类还有很多不同的分类方法,比如按用途划分,按检测过程 划分等,限于篇幅,本文仅介绍了较为常见的基于空域的 LSB 算法。3 设计方案3.1 LSB 算法介绍LSB 是一种简单传统的信息隐藏算法, 属于数字水印技术中的一种。 本文首先介绍 了 LSB技术的原理和特点, 然后讨论了基于 LSB的数字水印算法。 最后利用 MATLAB2 009 b 对这一算法的加密过程进行了仿真。3.1.1 LSB 算法的基本原理对空域的 LSB做替换,用来替换 LSB的序列就是需要加入的水印信息、 水印的

9、数字 摘要或者由水印生成的伪随机序列。由于水印信息嵌入的位置是LSB,为了满足水印的不可见性,允许嵌入的水印强度不可能太高。然而针对空域的各种处理,如游程编码前 的预处理,会对不显著分量进行一定的压缩, 所以 LSB算法对这些操作很敏感。 因此 LSB 算法最初是用于脆弱性水印的。3.1.2 LSB 算法基本步骤(1)将得到的隐藏有秘密信息的十进制像素值转换为二进制数据 .(2)用二进制秘密信息中的每一比特信息替换与之相对应的载体数据的最低有效位.(3)将得到的含秘密信息的二进制数据转换为十进制像素值,从而获得含秘密信息的 图像.3.2 LSB 算法的实现LSB 算法实现较为简单, 首先,需要

10、考虑嵌入的数字水印的数据量,如果嵌入最低的1 位,则可以嵌入的信息量是原始图像信息量的 18,如果适用最低两位则可以嵌入的信 息量是 14。但是嵌入的数字水印的信息量越大,同时对图像的视觉效果影响也越大。 在这里要嵌入一个二值的图像。然后, 适当调整数字水印图像的大小和比特位数, 以适应 数字水印图像数据量的要求。最后,对原始图像中要使用的最低位置0,再将数字水印数据放人原始图像的最低位即可。下面通过 MATLAB 2009 b2实现这一算法。这里选用一幅 3264*2448像素, 256 灰度的图像,数字水印用“万泉公园”的字样的 二值图像。置 0 的方法是调用模 2 函数 mod( a,

11、2),将得到的数值与原水印相减,从而得到最 低位为 0的图片。(使用两位最低有效位的话则用模 4函数 mod(a,4)然后相减)。LSB 算法简单, 实现容易,同时可以保证数字水印的不可见性, 由于可以在最低位的每个像素 上都插人数字水印信息, 因此有较大的信息嵌入量。 LSB 算法一般嵌入图像的最低一位或 者两位,如果嵌入的位数太多, 则会被人眼察觉到。 但是由于数字水印位于图像的不重要 像素位上,因此很容易被图像过滤、 量化和几何型变等操作破坏, 以致无法恢复数字水印。 针对基本的 LSB 算法的缺点,一些研究者也提出了一些改进的算法,如奇偶标识位隐藏 算法、索引数据链隐藏算法等,这些算法

12、能增强数字水印的隐蔽性。3.3 设计流程图3.3.1 水印嵌入的流程图图 3.1 水印嵌入的流程图3.3.2 水印提取的流程图读取带有水印的图像和水印图像用嵌入水印图像的最印低有效位重建水得到嵌入的水印图 3.2 水印提取的流程图104 程序源代码(1) 嵌入水印代码clear all ;% 保存开始时间 start_time=cputime;% 读入原图像file_name= '1.jpg' ;cover_object,map=imread(file_name);% 读入水印图像file_name= '2.jpg' ;message,map1=imread(f

13、ile_name);%水印的行数%水印的列数message1=message; message=double(message); message=fix(message./2); message=uint8(message);% 原图的行数与列数Mc=size(cover_object,1);Nc=size(cover_object,2);% 水印的行数与列数Mm=size(message,1);Nm=size(message,2);%转换为 double 数%转换为 0,1 组成的矩阵%转换为 uint8 数%原图的行数%原图的列数% 将水印扩展为原图像大小,并写入 watermark fo

14、r ii = 1:Mc for jj = 1:Nc watermark(ii,jj)=message(mod(ii,Mm)+1,mod(jj,Nm)+1);% 用 mod函数进行求余处理 end end% 将原图的最低有效位值换为水印的值 watermarked_image=cover_object;for ii = 1:Mcfor jj = 1:Ncwatermarked_image(ii,jj)=bitset(watermarked_image(ii,jj),1,watermark(ii,jj) );% 用 bitset 函数将原图的最低有效位值换为水印的值endend, 'bmp

15、' );% 将嵌入水印图像写入 lsb_watermarked.bmp imwrite(watermarked_image, 'lsb_watermarked.bmp' % 显示运行时间elapsed_time=cputime-start_time,% 显示嵌入水印图像 figure(1);subplot(1,2,1); imshow(watermarked_image,); title( ' 嵌入水印图像 ' );subplot(1,2,2); imshow(cover_object,); title( ' 原图像 ' );%扩展后水印

16、for ii = 1:Mcfor jj = 1:Nc watermark1(ii,jj)=message1(mod(ii,Mm)+1,mod(jj,Nm)+1); %用mod函数对水印进行扩展endend%显示结果 figure(2);subplot(1,2,1);imshow(watermark1,); title( ' 扩展后的水印 ' );figure(2);subplot(1,2,2); imshow(message1,); title( ' 原水印 ' );(2) 水印的提取过程clear all ;% 保存开始时间 start_time=cputim

17、e;% 读入嵌入水印图像 file_name= 'lsb_watermarked.bmp' ; watermarked_image=imread(file_name);%嵌入水印图像行数%嵌入水印图像列数%水印的行数%水印的列数% 嵌入水印图像的行数与列数Mw=size(watermarked_image,1);Nw=size(watermarked_image,2);%读入原始水印file_name= '2.jpg' ; orig_watermark=imread(file_name);%原始水印的行数与列数Mm=size(orig_watermark,1);

18、Nm=size(orig_watermark,2);% 用嵌入水印图像的最低有效位重建水印for ii = 1:Mwfor jj = 1:Nwwatermark(ii,jj)=bitget(watermarked_image(ii,jj),1);% 用 bitget 函数重建水印end end% 将提取水印变为原始水印大小 watermark=2*double(watermark);for ii = 1:Mm-1for jj = 1:Nm-1 watermark1(ii+1,jj+1)=watermark(ii,jj); endend watermark1(1,1)=watermark(Mm,

19、Nm);% 显示运行时间 elapsed_time=cputime-start_time,% 显示嵌入水印图像,提取水印以及原始水印 figure(1);subplot(1,2,1); imshow(watermarked_image,);title( ' 嵌入水印图像 ' );figure(2); subplot(1,2,1);imshow(watermark1,); title( ' 提取水印 ' );沈阳理工大学数字图像1处0 理课程设计报告figure(2); subplot(1,2,2); imshow(orig_watermark,); title(

20、 ' 原始水印 ' );165.1 嵌入水印后的运行结果5 仿真结果与分析(1) 根据水印嵌入算法及显示函数 , 得出原图像和嵌入水印后的图像 , 如图 5.1图 5.1 原图像和嵌入水印后的图像(2) 将要嵌入到图像中的水印显示出来 , 如图 5.2图 5.2 原水印的图像5.2 提取水印后的运行结果(1) 将水印通过嵌入算法嵌入到图像中 , 并将嵌入水印的图像写入到 temp.jpg 中, 嵌入 水印的图像如图 5.3图 5.3 嵌入水印的图像(2) 通过提取水印的过程算法将水印从原图像中提取出来 ,如图 5.4图 5.4 原水印与提取的水印图像5.3 结果分析(1)嵌入水印后的运行结果结果图如上图 5.1 和图 5.2 ,图 5.1 表示的是原图像和嵌入水印后的结果图像,图 5.2 表示的是原水印和扩展后的水印的结果图像。 通过图示显示 ,可知 LSB算法的实现简 单和保证水印的不可见性 .(2)提取水印后的运行结果结果图如上图 5.3 和图 5.4,图 5.3 表示的是嵌入水印的原图像,图 5.4 表示的是 原水印与提取的水印的图像。 通过图示显示 , 正确的提取中水印 ,但是水印有一定的模糊 性.6 结论通过本次的课程设计 , 理解到了水印的嵌入和提取的过程 , 了解到水印的用处和

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论