摘要

数字水印(Digital Watermarking)技术是我们生活中经常见到的信息隐藏技术。它将一些标识信息(即数字水印)直接嵌入数字载体中,但不影响原载体的使用价值,也不容易被人的知觉系统觉察或注意到。

空间数字水印是信息隐藏技术的一个重要研究方向,另一类是频率数字水印。空间数字水印采用最低有效位(LSB)算法,通过修改表示数字图像的颜色或颜色分量的位平面,调整数字图像中感知不重要的像素来表达水印的信息,以达到嵌入水印的目的。本实验是基于matlab的数字水印设计——基于空域的水印实现。

关键词:信息隐藏技术;空间数字水印; LSB算法;matlab

目录

1 设计任务与目的2

2 MATLAB的简介及应用2

2.1 MATLAB简介2

2.2 MATLAB应用2

3 数字水印技术2

3.1 数字水印技术的发展2

3.2 水印分类2

3.3 数字水印的特点2

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

4 基于LSB的数字水印算法2

4.1 LSB算法原理2

4.2 LSB算法的实现2

4.2.1 水印嵌入算法2

4.2.2 水印提取算法2

5 MATLAB软件仿真2

5.1 仿真结果2

5.1.1 水印嵌入仿真2

5.1.2 水印提取仿真2

5.2 仿真分析2

结论2

参考文献2

基于Matlab的数字水印设计

——基于空域的水印实现

1 设计任务与目的

  1. 通过设计把自己在大学中所学的知识应用到实践当中。
  2. 在设计的过程中掌握程序编译及软件设计的基本方法。
  3. 深入了解利用Matlab设计基于Matlab的数字水印设计——基于空域的水印实现。
  4. 提高自己对于新知识的学习能力及进行实际操作的能力。

3 数字水印技术

3.1 数字水印技术的发展

数字水印是一个崭新的信息隐藏技术,首次提出这个概念至今也不到20年。由于还处在学术研究的高峰阶段,仅有少数应用研究和应用案例,所以还没有形成国际标准、国家标准和行业标准,目前发现除了"国际知名的五家电脑及消费型电子产品主流公司,包括IBM及索尼等已就数字"水印"技术的共同标准达成协议"的报道外,仅发现有宇飞信息工程XX公司起草并获得国家标准化部门备案的两个企业标准《印刷打印数字水印软件》(备案号:1104-2002)和《基于容的、非密码机制的计算机与移动存储设备信息安全系统》企业标准(备案号:400-2010)。所以,学术界对数字水印技术的概念也没有统一的表述和界定。

3.2 水印分类

数字水印技术可以从不同角度进行分类,因此有多种分类方法。

  1. 按特性划分

按水印的特性可以将数字水印分为鲁棒数字水印和易损数字水印两类。

  1. 按水印所附载的媒体划分

按水印所附载的媒体,我们可以将数字水印划分为图像水印、音频水印、视频水印、文本水印以及用于三维网格模型的网格水印等。

  1. 按容划分

按数字水印的容可以将水印划分为有意义水印和无意义水印。

  1. 按用途划分

按水印的用途,我们可以将数字水印划分为票证防伪水印、保护水印、篡改提示水印和隐蔽标识水印。

  1. 按水印隐藏的位置划分

按数字水印的隐藏位置,我们可以将其划分为时(空)域数字水印、频域数字水印、时/频域数字水印和时间/尺度域数字水印。时(空)域数字水印是直接在信号空间上叠加水印信息,而频域数字水印、时/频域数字水印和时间/尺度域数字水印则分别是在DCT变换域、时/ 频变换域和小波变换域上隐藏水印。随着数字水印技术的发展,各种水印算法层出不穷,水印的隐藏位置也不再局限于上述四种。应该说,只要构成一种信号变换,就有可能在其变换空间上隐藏水印。本实验重点研究基于空域的数字水印技术。

3.3 数字水印的特点

作为数字水印技术基本上具有下面几个方面的特点。

1)安全性:数字水印的信息应是安全的,难以篡改或伪造,同时,应当有较低的误检测率,当原容发生变化时,数字水印应当发生变化,从而可以检测原始数据的变更;当然数字水印同样对重复添加有很强的抵抗性

2)隐蔽性:数字水印应是不可知觉的,而且应不影响被保护数据的正常使用;不会降质;

3)鲁棒性:是指在经历多种无意或有意的信号处理过程后,数字水印仍能保持部分完整性并能被准确鉴别。可能的信号处理过程包括信道噪声、滤波、数/模与模/数转换、重采样、剪切、位移、尺度变化以及有损压缩编码等。主要用于保护的数字水印易损水印(Fragile Watermarking),主要用于完整性保护。当容发生改变时,这些水印信息会发生相应的改变,从而可以鉴定原始数据是否被篡改。

4)水印容量:是指载体在不发生形变的前提下可嵌入的水印信息量。嵌入的水印信息必须足以表示多媒体容的创建者或所有者的标志信息,或购买者的序列号,这样有利于解决纠纷,保护数字产权合法拥有者的利益。尤其是隐蔽通信领域的特殊性,对水印的容量需求很大。

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

数字水印技术(Digital Watermark):技术是将一些标识信息(即数字水印)直接嵌入数字载体(包括多媒体、文档、软件等)当中,但不影响原载体的使用价值,也不容易被人的知觉系统(如视觉或听觉系统)觉察或注意到。目前主要有两类数字水印,一类是空间数字水印,另一类是频率数字水印。空间数字水印的典型代表是最低有效位(LSB)算法,其原理是通过修改表示数字图像的颜色或颜色分量的位平面,调整数字图像中感知不重要的像素来表达水印的信息,以达到嵌入水印的目的。

数字水印的主要目的是将特定的信息加入到需要保护的媒体信息中,加入的信息一般是能够代表媒体信息的容,而且要保证数字水印能够抵抗一定的攻击,而不被轻易的破坏和修改,同时数字水印要能够被提取或者能够被检测到。数字水印的具体容、算法、提取或检测过程根据实际应用有不同的要求。数字水印的嵌入和提取或检测的通用模型如图3.1、图3.2所示。

图3.1 数字水印的嵌入过程

图3.2 数字水印的提取或检测过程

图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个位来表示,但其中每一个位的作用是不一样的,越高位对图像的影响越大,反之越低的位影响越小,甚至不能感知。

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

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

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

4.2 LSB算法的实现

LSB算法实现较为简单,首先,需要考虑嵌入的数字水印的数据量,如果嵌入最低的1位,则可以嵌入的信息量是原始图像信息量的1/8,如果适用最低两位则可以嵌入的信息量是1/4,以此类推。适用的最低位越多,嵌入的数字水印的信息量越大,同时对图像的视觉效果影响也越大。然后,适当调整数字水印图像的大小和比特位数,以适应数字水印图像数据量的要求。最后,对原始图像中要使用的最低位置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

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

forjj=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表示水印图像。

4.2.2 水印提取算法

clear all;

file_name='lsb_watermark.bmp';

watermark_image=imread(file_name); %读入嵌入水印图像

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

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

file_name='word.bmp';

orig_watermark=imread(file_name); %读入原始水印

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

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

for ii=1:Mw

forjj=1:Nw

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

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

%用bitget()函数重建水印

end

end

watermark=2*double(watermark); %将提取水印变为原始水印大小

for ii=1:Mm-1

forjj=1:Nm-1

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

end

end

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

figure(1)

subplot(1,2,1);

imshow(watermark_image,[])

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

figure(2)

subplot(1,2,1);

imshow(watermark1,[])

title('提取水印') %显示原始图片

figure(2)

subplot(1,2,2);

imshow(orig_watermark,[])

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

算法分析:

这里选用一幅200×200像素、256灰度的图像,数字水印用纯文字二值图像。MATLAB中可以用bitget()函数实现提取数字水印数据。

提取水印的方法是:watermark(ii,jj)=bitget(watermark_image (ii, jj) ,1),watermark_image表示要嵌入水印的图像,1表示在最低位提取,2表示在第二个位平面提取,以此类推,最高位是8。

5 MATLAB软件仿真

用MATLAB软件对上述水印嵌入和提取算法源程序代码进行编译、仿真,可以得到如下仿真结果,对仿真图分析,可以得到相应的结论。

5.1 仿真结果

5.1.1 水印嵌入仿真

水印图像如图5.1所示,是200×200像素图像,256灰度图像,是颜色单一的二值文字“你好吗”图像。

图5.1 水印图像

图5.2 嵌入水印前图5.3 嵌入水印后

图5.2是原始图像,这是一幅200×200像素的彩色图像,由于LSB算法利用了数字图像处理中位平面的原理,即改变图像的最低位的信息,图像信息产生的影响非常小,人眼的视觉感知系统往往不能察觉,因此嵌入水印后,如图5.3看起来嵌入水印后的图像与原始图像没有区别。

若改变图像的较高位信息,修改语句w_i(ii,jj)=bitset(w_i(ii,jj),1,m(ii,jj));为w_i(ii,jj)=bitset(w_i(ii,jj),8,m(ii,jj));如图5.4、图5.5所示。

图5.4 嵌入水印前图5.5 嵌入水印后

对比嵌入水印时改变高、低位信息,即对比图5.5和图5.3,可以发现当改变图像高位信息时,可以从肉眼看出嵌入水印图像后与原始图像有细微差别(为了可以更清晰的效果,我们选用8位),因此选用低位1可以实现较高的性,不易被察觉,并且可以保证原始图像的特征属性,便于选择和提取。

5.1.2 水印提取仿真

嵌入水印后的图像如图5.6所示,由于LSB算法利用了数字图像处理中位平面的原理,即改变图像的最低位的信息,对图像信息产生的影响非常小,人眼的视觉感知系统往往不能察觉,看起来嵌入水印后的图像与原始图像没有区别。

图5.6 嵌入水印图像

图5.7提取的水印图像图5.8 原水印图像

图5.7是对图像进行低位水印提取,与原水印图像(图5.8)相比较,可以发现提取的水印很模糊,但能够看得出原始水印的轮廓。

5.2 仿真分析

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

由于是在最低位嵌入数字水印图像,因此嵌入前的图像和嵌入后的图像没有明显的差别,数字水印得到更好的隐藏。MATLAB程序如上,其中word.bmp是水印图像文件,color.bmp是原始图像文件,lsb_watermark.bmp是嵌入水印之后的图像文件。

结论

通过本次的设计,理解到的水印的嵌入、提取过程,了解到水印的用处和价值,在以后的实际生活中也可以采用LSB算法实现水印的嵌入,可以有效维护图像或防止无权限的修改。本设计采用的是基于空域的水印实现,通过LSB算法实现起来比较简单,同时可以保证数字水印的不可见性。

在实践的课程中,发现如果嵌入的位数太多,则会被人眼察觉到。但是由于数字水印位于图像的不重要像素位上,因此很容易被图像过滤、量化和几何型变等操作破坏,以致无法恢复数字水印,所以通常可采用一些增强数字水印的隐蔽性的算法,如奇偶标志位隐藏算法、索引数据链隐藏算法等,从而使水印的隐蔽性更高。

在水印提取过程中,需注意水印嵌入算法中的改变位,若为低位1,则在提取时应选用相同的低位1,否则提取的水印有很大的噪声,得不出与原始水印相同的图像。

参考文献

[1] 刚等. MATLAB数字图像处理[M].机械工业,2010:135-150.

[2] 龚声蓉等.数字图像处理与分析[M].清华大学,2006: 269.

[3] 哲学.精通MATLAB[M].电子工业,2008: 2-8.

[4] 圣勤. MATLAB7.0实用教程[M].机器工业,2006: 90-118.

[5] 仲康,振康.数字图像处理的应用[M].国防工业,2008:132-158.

[6] 龚声蓉等.数字图像处理与分析(第二版)[M].清华大学.2014:267

[7] 阮勇.MATLAB程序设计[M].电子工业,2004: 70-85.

[8] 敏. 数字图像处理[M].机械工业,2006: 52-60.

[9] 桂明.应用MATLAB语言处理数字信号与图像处理[M]. 科学.2000: 50-65.

[10] 荣椿.数字图像处理导论[M].西北工业大学,2003: 65-72.

MATLABA数字水印处理技术实现相关推荐

  1. 简单的数字水印加密技术

    最近我一个朋友问谍战情节里是怎样办到将数据隐藏到一般图片里的,正好有一段时间我也研究过这个问题,既然他问了干脆我就写出来和大家也一起分享一下吧,大都是自己琢磨的,如有更加专业的做法欢迎大家讨论啊. 由 ...

  2. 清华校友吴旻当选IEEE SPS首位华裔女主席,曾发明“数字水印”防伪技术

    明敏 发自 凹非寺 量子位 报道 | 公众号 QbitAI 刚刚,IEEE信号处理学会 (SPS)2022-2023候任主席公布. 我们获悉,马里兰大学教授.清华校友吴旻从候选者中脱颖而出,将在202 ...

  3. 数字水印技术研究综述

    数字水印技术研究综述 引言 信息媒体的数字化为信息的存取提供了极大的便利性,同时也显著提高了信息表达的效率和准确性.特别是随着计算机网络通讯技术的发展,数据的交换和传输变成了一个相对简单的过程,人们借 ...

  4. 基于小波变换的数字水印技术研究

    摘要:算法基于Haar小波变换,把小波系数分块,并计算每个块的平均值.在一系列信号处理之后,这些块(尤其是大的块)的平均值不会有很大改变,否则,重构的图像就与原始图像有很大差别.通过对这些块的平均值进 ...

  5. 数字水印技术:概念、应用及现状

    数字水印技术:概念.应用及现状 --伯晓晨 沈林成 常文森 一. 引言 ---- 随着信息时代的到来,特别是Internet的普及,信息的安全保护问题日益突出.当前的信息安全技术基本上都以密码学理论为 ...

  6. 数字水印技术的研究现状与发展趋势

    数字水印概念是Tirkel等人在1993年发表的一篇名为"A digital watermark"的文章中正式提出来.他们提出了两种在灰度图像最低有效位(Least Signifi ...

  7. 姚殊清华计算机科学与技术,王道顺(清华大学计算机科学与技术系副教授)_百度百科...

    王道顺 (清华大学计算机科学与技术系副教授) 语音 编辑 锁定 讨论 上传视频 王道顺,毕业于四川大学理学博士 (应用数学),现为 清华大学计算机科学与技术系副教授. 中文名 王道顺毕业院校 职    ...

  8. [数据加密]GIS空间数据水印信息隐藏与加密技术方法[转]

    到目前为止,国内外数字水印技术的研究主要集中在图像.视频和声音等多媒体信息的版权保护上,在GIS空间数据中,通过隐藏水印信息并对其加密.压缩以实现其安全保护的研究还很少,这是数字水印技术应用的一个新领 ...

  9. 音视频技术开发周刊 | 216

    每周一期,纵览音视频技术领域的干货. 新闻投稿:contribute@livevideostack.com. 小提示:链接跳转仅支持公众号相关链接 个性化语音识别模型,帮助语言障碍人士正常交流 语言障 ...

最新文章

  1. 使用模板元编程快速的得到斐波那契数。。
  2. VMware Workstation Pro 无法在Windows上运行的解决方案
  3. boost::geometry::append用法的测试程序
  4. flowable 任务节点多实例使用
  5. Linux 系统应用编程——网络编程(服务器模型)
  6. 华为p10plus能用鸿蒙吗,华为P10/P10 Plus对比评测:自家兄弟大对决
  7. java select下拉标签_java中下拉框select和单选按钮的回显操作
  8. 关于memcpy和 strcpy的区别 以及memset
  9. H3C交换机定时重启配置方法
  10. 什么是matlab拟合工具箱,Matlab拟合工具箱的使用
  11. foobar 2000 介绍
  12. SPSS在物流业中的应用
  13. python关键词排名批量查排名_Python批量查询百度排名
  14. python中集合的符号_python集合中的操作符有哪些?怎么用?
  15. Windows定时开机并开启工作软件
  16. Elasticsearch个人学习笔记
  17. 编写c语言数据从结构时头文件,C语言与数据结构 实验指导.doc
  18. navicat连接postgresql时报错:authentication method 10 not supported
  19. CAD中如何旋转图片
  20. 利用163 邮箱发送邮件

热门文章

  1. oppo android多大内存,oppo r11 plus内存多大
  2. xp系统为什么停止服务器,xp系统停止服务怎么办
  3. python做简单的笑脸的编程_python 利用turtle库绘制笑脸和哭脸的例子
  4. Ubuntu18 没有/etc/rc.local文件 SSH自启动设置 WSL中和单独ubuntu系统中
  5. 从1.0到4.0,公交WiFi卷土重来胜算几何?
  6. Android DHCP服务配置
  7. 【汇编】求十进制数的补码并转二进制和十六进制输出
  8. python保存gif动图
  9. 双十一女友闹分手,好不容易脱单的程序员又要落单
  10. 【鸡汤帖】别问,问就是正能量