基于MATLAB的数字图像水印技术

发布时间 : 星期四 文章基于MATLAB的数字图像水印技术更新完毕开始阅读

《MATLAB应用与通信仿真》课程设计

4.4 攻击函数

对算法进行攻击测试是对水印鲁棒性检测的一种重要手段,一个好的水印算法必须经过各种攻击测试才能对之做出客观的评价。MATLAB中的许多函数可以直接用来做攻击测试。

1.旋转: ro2tate( )可以对图像进行任意角度的旋转。 2.剪裁: imcrop( )可以按精确定位的各点坐标进行剪裁。 3.滤波: filter( )和filter2( )可实现对一维信号和二维信号的滤波。 4.抖动: dither( )对图像进行抖动;抖动攻击考验水印鲁棒性的一个很好的攻击。

5.jpeg压缩:imwrite( )中jpg和quality参数能对图像进行可控jpg压缩。 6.加各种噪声:imnoise( )可以对图像加入各种噪声,如白噪声、椒盐噪声等,加入噪声是对水印鲁棒性考验的一种常见的攻击。

7.对比度调整:imadjust( )可以调整图象的对比度,来达到攻击目的。 8.放大/ 缩小:imresize( )可以以指定的插值方法来对图像进行放大和缩小。

4.5 本设计所用MATLAB函数

MATLAB含有丰富的库函数,大大简化了算法的实现,下面简要介绍本设计所用的一些常用MATLAB函数功能。

rand:产生随机序列。

randn:产生正态分布的随机序列。

imread:从文件读取图像,图像文件可以使bm ,pdf, jpeg,pcx,tiff,xwd等格式。 imwrite:把图像写成文件。 imshow:用于显示图像。 size:计算图像(矩阵)的大小。 im2col:重排图像块为矩阵列。 col2im:重排矩阵为图像块。 std:计算标准方差。 sum:对元素求和。

sort:对给定的向量或矩阵排序。 median:求向量元素的中位数。

13

《MATLAB应用与通信仿真》课程设计

reshape:重新排列矩阵。

sign:符号函数,获取数值的符号,返回值为0,1或者-1。 mod:求除法后的模数。 floor:朝负无穷大方向取整。 corr2:计算图像间相关系数。 max:找出数组的最大元素。 fspecial:产生预定义滤波器。 filter2:实现二维信号的滤波。 histeq:用直方图均衡增强对比度。 imadjust:调整图像的强度值或颜色。

imnoise:给图像增加噪声(高斯白噪声、黑白像素点噪声、乘积性噪声)。

14

《MATLAB应用与通信仿真》课程设计

5 程序运行结果

在MATLAB中对于一些比较简单的问题,从命令窗口中直接输入指令进行计算是十分轻松简单的事。但随着指令数的增加,或随控制流复杂度的增加,以及重复计算要求的提出,直接从命令窗口进行计算就显得繁琐,而此时脚本文件(Script file)最为适宜。“脚本”本身反映一个事实:MATLAB只是按文件所写的指令执行。这种文件的构成比较简单,其特点是:它只是一串按用户意图排列而成的(包括控制流指令在内)MATLAB指令集合。脚本文件运行后,所产生的所有变量都驻留在MATLAB基本空间中。只要用户不使用clear指令加以清除,且MATLAB指令窗不关闭,这些变量将一直保存在基本工作间中。本设计的脚本文件命名为shuiyin.m,在MATLAB2007a中运行该脚本文件,试验结果及分析如下:

5.1 嵌入水印

原始图像和嵌入水印后的图像,仿真结果表明具有很好的视觉效果,嵌入的水印对原始图像的改变很小,以至于不易觉察。如图5.1

水印原始图像嵌入水印的图像

图5.1 水印的嵌入

15

《MATLAB应用与通信仿真》课程设计

5.2 JPEG压缩及水印提取

首先对嵌入水印后的图像进行JPEG(Quality=30),而后从压缩的图像中提取出水印,如图5.2所示。

提取的水印受JPEG攻击压缩后的水印图像

图5.2 JPEG压缩和水印提取

5.3 攻击试验

数字水印在实际应用中可能会遭到各种各样的攻击,从JPEG攻击压缩后的图像中可以恢复出水印图像,下面给出其他几种攻击后的水印图像,如图5.3。

高斯滤波直方图图像增亮图像变暗增加对比度降低对比度

图5.3 攻击试验

16

联系合同范文客服:xxxxx#qq.com(#替换为@)