基于Matlab的数字水印设计 - 基于空域的水印实现(2)

2020-02-21 18:01

沈阳理工大学数字图像处理课程设计

利于解决版权纠纷,保护数字产权合法拥有者的利益。尤其是隐蔽通信领域的特殊性,对水印的容量需求很大。

3.4 数字水印技术的基本原理

数字水印技术(Digital Watermark):技术是将一些标识信息(即数字水印)直接嵌入数字载体(包括多媒体、文档、软件等)当中,但不影响原载体的使用价值,也不容易被人的知觉系统(如视觉或听觉系统)觉察或注意到。目前主要有两类数字水印,一类是空间数字水印,另一类是频率数字水印。空间数字水印的典型代表是最低有效位(LSB)算法,其原理是通过修改表示数字图像的颜色或颜色分量的位平面,调整数字图像中感知不重要的像素来表达水印的信息,以达到嵌入水印的目的。 数字水印的主要目的是将特定的信息加入到需要保护的媒体信息中,加入的信息一般是能够代表媒体信息版权的内容,而且要保证数字水印能够抵抗一定的攻击,而不被轻易的破坏和修改,同时数字水印要能够被提取或者能够被检测到。数字水印的具体内容、算法、提取或检测过程根据实际应用有不同的要求。数字水印的嵌入和提取或检测的通用模型如图3.1、图3.2所示。 水印信息 原始信息 数字水印嵌入算法 加入水印的信息 密钥 图3.1 数字水印的嵌入过程 原始信息 数字水印提取 /检测算法 加入水印的信息 加入水印的信息 密钥 图3.2 数字水印的提取或检测过程 4

沈阳理工大学数字图像处理课程设计

图3.1是数字水印的嵌入过程,通过密钥可以提高数字水印的隐藏性、抗攻击性,并非必须的输入。根据不同的用途,嵌入的水印有些是需要还原的,而有些则需要验证水印的存在性,前者需要数字水印的提取算法,而后者需要数字水印的检测算法,根据具体的水印算法,嵌入或提取过程可能有所不同。

数字水印技术是从信息隐藏技术发展而来的,是数字信号处理,图像处理,密码学应用,算法设计等学科的交叉领域。数字水印最早在1993年由Tirkel等人提出,在国际学术会议上发表题为”Electronicwatermark”的第一篇有关水印的文章,提出了数字水印的概念及可能的应用,并针对灰度图像提出了两种向图像最低有效位中嵌入水印的算法。1996年在英国剑桥牛顿研究所召开了第一届国际信息隐藏学术研讨会,标志着信息隐藏学的诞生。

4 基于LSB的数字水印算法

4.1 LSB算法原理

最低有效位方法是最早提出来的最基础的空域图像信息隐藏方法,其他的许多空域算法都是从它的基本原理进行改进扩展得到的,使得LSB方法成为使用最广泛的隐藏技术之一。现在有一些简单信息隐藏软件大多是运用LSB和调色板调整等相关技术将信息隐藏在24bit图像或256色图像之中,如:Hide and Seek,Stego-Dos,White Noise S-tools等经典信息隐藏软件。

最低有效位( least significant bit,LSB)指的是一个二进制数字中的第0位(即最低位),具有权值为2^0,可以用它来检测数的奇偶性。最低有效位和最高有效位是相对应的概念。在大端序中,lsb指最右边的位。LSB(全大写)有时也指Least Significant Byte,指多字节序列中最小权重的字节。

LSB算法利用了数字图像处理中位平面的原理,即改变图像的最低位的信息,对图像信息产生的影响非常小,人眼的视觉感知系统往往不能察觉。以一幅256灰度的图像为例,256灰度共需要8个位来表示,但其中每一个位的作用是不一样的,越高位对图像的影响越大,反之越低的位影响越小,甚至不能感知。

5

沈阳理工大学数字图像处理课程设计

图4.1显示了一幅200×200像素的图像的8个位平面。

图4.1 200×200像素图像的8个位平面

图4.1中的第一张是原始图像,后面依次是从高到低的位平面。可以看出,较高的位平面反映了图像的轮廓等主要信息,而较低的位平面反映的是图像的细节信息,最低的2个位平面看上去和原始图像几乎没有相关性,像是噪声。

4.2 LSB算法的实现

LSB算法实现较为简单,首先,需要考虑嵌入的数字水印的数据量,如果嵌入最低的1位,则可以嵌入的信息量是原始图像信息量的1/8,如果适用最低两位则可以嵌入的信息量是1/4,以此类推。适用的最低位越多,嵌入的数字水印的信息量越大,同时

6

沈阳理工大学数字图像处理课程设计

对图像的视觉效果影响也越大。然后,适当调整数字水印图像的大小和比特位数,以适应数字水印图像数据量的要求。最后,对原始图像中要使用的最低位置0,再将数字水印数据放入原始图像的最低位即可。下面通过MATLAB7.1来实现这一算法。

LSB算法原理程序代码: clc; clear all;

A = imread('color.bmp'); % 显示原始图像 subplot(3,3,1);

imshow(A);title('原始图像'); % 显示8个位平面图像 for i=8:-1:1

A_bitplane = bitshift(bitget(A,i),i-1); subplot(3, 3, 9-i+1); %显示8个位图 imshow(A_bitplane);

title(['位平面' num2str(i)]); end

MATLAB是MathWorks公司推出的一套高性能的数值计算和可视化工具软件,利用MATLAB只需要几个函数和十来行语句就可以实现基本的LSB算法,而如果用C语言等程序语言来实现则可能需要上百行的语句。

以下是水印嵌入算法和提取算法的程序代码。 4.2.1 水印嵌入算法

[C,map]=imread('color.bmp'); %读入原始图片 [m,map1]=imread('word.bmp'); %读入水印图片 Mc=size(C,1); %原图的行数 Nc=size(C,2); %原图的列数 Mm=size(m,1); %水印的行数 Nm=size(m,2); %水印的列数 w_i=C; %将原图值赋给w_i

7

沈阳理工大学数字图像处理课程设计

for ii=1:Mc; %将原图的最低有效位值换为水印的值 for jj=1:Nc;

w_i(ii,jj)=bitset(w_i(ii,jj),1,m(ii,jj));

%调用bitset()函数将原图的最低位值换为水印的值

end end

imwrite(w_i,'lsb_watermark.bmp','bmp');

%将嵌入水印图像写入lsb_ watermark.bmp

figure(1) imshow(w_i,[])

title('嵌入水印后') %显示嵌入水印后的图片

figure(2) imshow(C,[])

title('嵌入水印前') %显示原始图片

figure(3) imshow(m,[])

title('水印图片') %显示水印图片

算法分析:

这里选用一幅200×200像素的图像,数字水印用纯文字二值图像。MATLAB中可以用bitset()函数实现位平面置0,和嵌入数字水印数据。

置0的方法是调用函数bitset(A,bit)。A表示要置0的图像,bit表示要对哪一位置0。若要对最低位置0,则可以写为:bitset(A,1)。

嵌入水印的方法是:w_i(ii,jj)=bitset(w_i(ii,jj),1,w(ii,jj)),w_i表示要嵌入水印的图像,1表示在最低位嵌入,2表示在第二个位平面嵌入,以此类推,w表示水印图像。

8


基于Matlab的数字水印设计 - 基于空域的水印实现(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:4.2.2化学电源(人教版选修4)

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: