基于LSB的数字水印算法及MATLAB实现
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
%=========================
LSB 是 Least Singificant Bit 的缩写,意思是 最不重要比特位。LSB 数字水印算法按照上文 介绍的四种数字水印分类方法分别属于:鲁棒 性数字水印、图像数字水印、空域数字水印、 不可见数字水印。
LSB 算法利用了数字图像处理中位平面的 原理,即改变图像的最低位的信息,对图像信 息产生的影响非常小人眼的视觉感知系统往 往不能察觉。以一幅 256 灰度的图像为例,256 灰度共需要 8 个位来表示,但其中每一个位的 作用是不一样的,越高位对影像的影响越大, 反之越低的位影响越小,甚至不能感知。
ma(2*i,2*j-1) = imgread(i,j);
嵌入一个二值的图像。然后,适当调整数字水
ma(2*i-1,2*j) = imgread(i,j);
印图像的大小和比特位数,以适应数字水 印
ma(2*i,2*j) = imgread(i,j);
图像数据量的要求。最后,对原始图像中要使
mb(2*i-1,2*j-1) = mbt(i,j);
水印信息
载体图片来自百度文库
加密算法
水印图片
密钥
图 2 数字水印的提取过程
图 1 是数字水印的嵌入过程,加入密钥可 以提高数字水印的隐蔽性、抗攻击性,而并非 是必须的。根据用途不同,,嵌入的水印有些 是需要还原的,而有些则只需验证水印的存在 性,前者需要数字水印的提取算法,而图 2 需 要数字水印的检测算法,根据具体的水印算 法,嵌入或提取的过程可能有所不同。
end end ma = ma+mb*3; %======================= % attack %======================= noise = normrnd(0,0.2,2*maa,2*mab); %
Gaussian, uniform, % laplace,salt-pepper ma = double(ma); ma = ma+ noise; ma = uint8(ma); figure(1); subplot(2,2,1);imshow(imgread); subplot(2,2,2);imshow(mbt,[0,1]); subplot(2,2,3);imshow(ma); %subplot(2,2,1);imshow(mb,[0,1]);subplot(
图 1 数 字水印的嵌入过程
都可以嵌入数字水 印,也就产生了相应的数 将得到的数值与原水印相减,从而得到最低位
字水印算法。
为 0 的图片。(使用两位最低有效位的话则用
·按数字水印的可见性可以分为可见数字 模 4 函数 mod(a,4)然后相减)。
水印和非可见数字水印。可见数字水印通常是
因为这里加入了噪声干扰,所以对水印和
II. 数字水印技术的基本原理 数字水印的主要 目的是将特定的信息加入 到需要保护的媒体信息中,加入的信息一般 是能够代表媒体信息版权的内容,如公司标 志、媒体作者、特定代码等,而且要保证数 字水印能够抵抗一定的攻击,而不被轻易的 破坏和修改,同时数字水印要能够被提取或 者能够被检测到。数字水印的具体内容、算 法、提取或检测过程根据实际应用有不同的 要求。数字水印的嵌入和提取过程如图 1, 图 2 所示。
觉系统感知的,其算法相对复杂。
程序如下:
关于数字水印算法的分类还有很多不同的 分类方法,比如按用途划分,按检测过程划分 等,限于篇幅,本文仅介绍了较为常见的几种 分类。
clear all close all %========================= % read image
IV. 基于 LSB 的数字水印算法
图 4 水印图片
附带全部代码: clear all close all %========================= % read image %========================= mat = imread('1.jpg'); mbt = imread('2.bmp'); imgread = rgb2gray(mat); mbt = uint8(mbt); [maa,mab] = size(imgread); %[mba,mbb] = size(mbt); md = ones(maa,mab); ma = zeros(2*maa,2*mab); ma = im2uint8(ma); %======================== % progress the image %======================== for i=1:1:maa for j=1:1:mab
VI. 结束语
数字水印技术是近年来兴起的一门较前 沿的技术,还处在发展阶段,没有统一的国 际标准,缺乏完善的软件系统。但是数字水 印技术作为信息加密技术的分支,在知识产 权的保护方面有着广泛的应用前景。LSB 数 字水印算法作为最早提出的数字水印算法, 特点是原理简单,实现容易,掌握这以算法 对于深入研究学习数字水印技术很有必要。
ma(2*i,2*j) = imgread(i,j); mb(2*i-1,2*j-1) = mbt(i,j); mb(2*i,2*j-1) = mbt(i,j); mb(2*i-1,2*j) = mbt(i,j); mb(2*i,2*j) = mbt(i,j); end end ma = ma+mb*3; %======================= % attack %======================= noise = normrnd(0,0.3,2*maa,2*mab); ma = double(ma); ma = ma+ noise; ma = uint8(ma); figure(1); subplot(2,2,1);imshow(imgread); subplot(2,2,2);imshow(mbt,[0,1]); subplot(2,2,3);imshow(ma); 得到的图形如下所示:
用的最低位置 0,再将数字水印数据放人原始
mb(2*i,2*j-1) = mbt(i,j);
图像的最低位即可。下面通过 MATLAB 2010b2
实现这一算法
这里选用一幅 300×400 像素,256 灰度
的图像,数字水印用“山东科技大学”的字样
的二值图像。
置 0 的方法是调用模 2 函数 mod(a,2),
图 3 原始图片
图 5 加入水印后的图片
LSB 算法简单,实现容易,同时可以保 证数字水印的不可见性,由于可以在最低位 的每个像素上都插人数字水印信息,因此有 较大的信息嵌入量。LSB 算法一般嵌入图像 的最低一位或者两位,如果嵌入的位数太 多,则会被人眼察觉到。
但是由于数字水印位于图像的不重要 像素位上,因此很容易被图像过滤、量化和 几何型变等操作破坏,以致无法恢复数字水 印。针对基本的 LSB 算法的缺点,一些研究 者也提出了一些改进的算法,如奇偶标识位 隐藏算法、索引数据链隐藏算法等,这些算 法能增强数字水印的隐蔽性。
的加密过程进行了仿真。
密钥
解密算法
水印信息
关键词:LSB 数字水印 信息隐藏 MATLAB
I. 介绍 随着计算机应用逐渐广泛、网络技术的迅 速发展,使音频、视频等多媒体信息都能以数 字形式传输和播放,从而使大规模非授权拷贝 成为了可能,而这样会损害音乐、电影、书籍 和软件等出版业的发展,为了保护知识产权引 发了一个很有意义的研究方向:信息隐藏。本 文首先介绍了了数字水印技术的原理和分类, 接着对 LSB 算法原理及 LSB 算法实现进行了 介绍,最后使用 MATLAB 对其加密过程进行 了仿真。
基于 LSB 的数字水印算法及 MATLAB 实现 加密算法
宗岳,王恺
山东科技大学 山东,中国
ggxxsol@163.com
摘要—LSB 是一种简单传统的信息隐藏算法,属于 数字水印技术中的一种。本文首先介绍了 LSB 技
水印图片
术的原理和特点,然后讨论了基于 LSB 的数字水
印算法。最后利用 MATLAB 2010 b2 对这一算法
V. LSB 算法的实现
mat = imread('1.jpg'); mbt = imread('2.bmp'); imgread = rgb2gray(mat); mbt = uint8(mbt); [maa,mab] = size(imgread); %======================== % progress the image %======================== for i=1:1:maa
将公司表示叠加到原始图像上,算法比较简 原始图片进行了重编码,首先将原图片扩大两
单,也有相应的应用软件,如 Undreamt Marking 倍,并且使用两位最低有效位然后图片相加得
Technologies 公司的 Photo Watermark。而不可 到加入水印的图像。然后对图片加入噪声得到
见数字水印要求嵌入的水印是不能被人的视 输出图像。
2,2,2);imshow(ma);subplot(2,2,3);imshow(mc) ;
%======================= % watermark extraction %======================= for i=1:1:maa
for j=1:1:mab
a=mod(ma(2*i-1,2*j-1),2)+mod(ma(2*i,2*j-1), 2)+mod(ma(2*i-1,2*j),2)+mod(ma(2*i,2*j),2);
for j=1:1:mab imgread(i,j)=imgread(i,j)-mod(imgread(i,j),4);
end end %========================
LSB 算法实现较为简单,首先,需要考虑
% Enlarge the image
嵌入的数字水印的数据量,如果嵌入最低的 1
imgread(i,j)=imgread(i,j)-mod(imgread(i,j),4); end
end %======================== %enlarge image %======================= for j=1:1:mab
for i=1:1:maa ma(2*i-1,2*j-1) = imgread(i,j); ma(2*i,2*j-1) = imgread(i,j); ma(2*i-1,2*j) = imgread(i,j); ma(2*i,2*j) = imgread(i,j); mb(2*i-1,2*j-1) = mbt(i,j); mb(2*i,2*j-1) = mbt(i,j); mb(2*i-1,2*j) = mbt(i,j); mb(2*i,2*j) = mbt(i,j);
%=======================
位,则可以嵌入的信息量是原始图像信息量的
for j=1:1:mab
1/8,如果适用最低两位则可以嵌入的信息量
for i=1:1:maa
是 1/4。但是嵌入的数字水印的信息量越大,
ma(2*i-1,2*j-1) = imgread(i,j);
同时对图像的视觉效果影响也越大。在这里要
III. 数字水印的分类 数字水印技术可以从不同的角度进行分 类,因此有多种分类方法。 按数字水印的特性可分为鲁捧数字水印和 脆弱数字水印。鲁棒数字水印主要用于标识数 字媒体信息的版权信息,它要求嵌入的水印能 够抵抗对媒体的常规编辑和恶意攻击,在对媒 体进行如:裁剪、旋转、缩放、压缩的变换后 水印信息不受到较大损害。而脆弱水印相反, 它对攻击敏感,可以根据脆弱水印的状态判断 原始信息是否被修改过。 按数字水印所附载的媒体可分为图像水 印、音频水印、视频水印和文本水印等。每一 种数字化的媒体都有相应的水印算法,这也造 成了数字水印算法的复杂性。 按数字水印隐藏的位置划分可以分为空 (时)域数字水印、频域数字水印、时/频域数 字水印和时间/度数字水印。原始信息通常在 空域或者时域上表示,根据信号处理理论有多 种变换将信号变化到另外的域上,每一种域上