好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

2023年图像数字水印+matlab程序培训讲学.pdf

18页
  • 卖家[上传人]:cn****1
  • 文档编号:578494235
  • 上传时间:2024-08-24
  • 文档格式:PDF
  • 文档大小:994.52KB
  • / 18 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 图像数字水印+mat l ab 程序 精品文档 收集于网络,如有侵权请联系管理员删除 第三章 图像数字水印的方案 3.1 图像数字水印的技术方案 在数据库中存储在国际互联网上传输的水印图像一般会被压缩,有时达到很高的压缩比因此,数字水印算法所面临的第一个考验就是压缩JPEG 和 EZW(Embedded Zero-Tree Wavelet)压缩是最常见的两种压缩方法JPEG 是基于离散余弦变换域的压缩方法,而 EZW 是基于小波变换域的压缩方法前人的研究证明采用与压缩算法相同的变换域水印方法,对于压缩的稳健性较强因此,我研究图像文件水印算法主要集中在变换域算法及利用人眼视觉特性上 数字水印的嵌入要求即要考虑视觉透明性,又要保证嵌入水印后图像的稳健性,这两个方面存在着矛盾保证视觉透明性,就要将水印嵌入到人眼不敏感区,也就是嵌入到图像的高频分量中而多数图像处理方法对于图像高频部分的损坏程度较高,如有损压缩、高频滤波等水印很容易在经历图像处理的过程中丢失这样,则无法保证图像数字水印的稳健性如果要获得很好的稳健性,数字水印应加在人眼敏感的低频部分,图像的大部分能量集中在低频部分,如果对于低频部分进行处理,水印固然会失去,而图像也没有了利用价值,然而,水印的嵌入会对图像的质量有非常大的影响,这又无法保证视觉透明性。

      数字水印算法的实现基本分为三个部分:宿主图像的变换,水印的嵌入和水印的检测,分别描述如下 3.2 基于 DCT域的图像数字水印技术 离散余弦变换(Discrete Cosine Transform )属于正交变换图像编码方法中的一种正交变换图像编码始于 1968 年当时安德鲁斯(Andrews)等人发现大多数自然图像的高频分量相对幅度较低,可完全舍弃或者只用少数码字编码,提出不对图像本身编码,只对其二维傅立叶(DFT)系数进行编码和传输但 DFT 是一种正交变换,运算量很大,常常使实时处理发生困难,第二年他们就用 Walsh-Hadamard变换(WHT)取代 DFT 可以使运算量明显减少,这是因为 WHT 变换只有加减法而无需乘法但是更有意义的是离散余弦变换和离散正旋变换的出现,它们具有快速算法,精确度高其中最重要的是 1974 年提出的 DCT,因为其变换矩阵的基向量很近似于托伯利兹矩阵的特征向量,而托伯利兹矩阵又体现了人类语言及见的两种压缩方法是基于离散余弦变换域的压缩方法而是基于小波变换域的压缩方法前人的研究证明采用与压缩算法觉特性上数字水印的嵌入要求即要考虑视觉透明性又要保证嵌入水印图像的稳健性这两个方面存在着矛盾保证视觉透坏程度较高如有损压缩高频滤波等水印很容易在经历图像处理的过程中丢失这样则无法保证图像数字水印的稳健性如 精品文档 收集于网络,如有侵权请联系管理员删除 图像信号的相关性。

      因此,DCT 常常被认为是语音与图像信号变换的准最佳变换 图像是二维的,所以在研究时主要用到二维 DCT,以及二维 IDCT 来对图像进行处理 3.2.1 离散余弦变换(DCT )的定义 数字图像 X(m,n)是具有 M 行 N 列的一个矩阵为了同时减弱或去除图像数据相关性,可以运用二维 DCT,将图像从空间域转换到 DCT 变换域 根据定义,二维离散余弦变换(DCT)定义如下: NlnMkmnmXlckcMNlkYMmNn2) 12(cos2) 12(cos),()()(2),(1010 式中: m,k=0,1,…,M-1; n, l=0,1,…,N-1 1,, 2 , 11021)(Mkkkc其中函数1,, 2 , 11021)(Nkklc 二维逆离散余弦变换(IDCT)的定义如下: 10102) 12(cos2) 12(cos),()()(2),(MKNLNlnMkmlkYlckcMNnmX 式中:m,k=0,1,…,M -1; n,l=0,1,…N-1 3.2.2 离散余弦变换的特点 在基于 DCT 的变换编码中,图像是先经分块(8×8 或 16×16)后再经 DCT,这种变换是局部的,只反映了图像某一部分的信息。

      当然也可以对整幅图像的特点,但是运算速度比分块DCT 要慢图像经 DCT 后,得到的 DCT 图像有三个特点: 一是系数值全部集中到 0 值附近(从直方图统计的意义上),动态范围很小,这说明用较小的量化比特数即可表示DCT 系数; 二是 DCT 变换后图像能量集中在图像的低频部分,即DCT 图像中不为零的系数大部分集中在一起(左上角),因此编码效率很高 见的两种压缩方法是基于离散余弦变换域的压缩方法而是基于小波变换域的压缩方法前人的研究证明采用与压缩算法觉特性上数字水印的嵌入要求即要考虑视觉透明性又要保证嵌入水印图像的稳健性这两个方面存在着矛盾保证视觉透坏程度较高如有损压缩高频滤波等水印很容易在经历图像处理的过程中丢失这样则无法保证图像数字水印的稳健性如 精品文档 收集于网络,如有侵权请联系管理员删除 三是没有保留原图像块的精细结构,从中反映不了原图像块的边缘、轮廓等信息,这一特点是由 DCT 缺乏时局域性造成的 如下左图 3—1 是原始图像经过 DCT 变换后的系数图像为图 3—2两条线划分出图像的低频、中频和高频分别所在的矩形区域可以看出,图像 DCT 变换后大部分参数接近于零,只有左上角的低频部分有较大的数值,中频部分参数值相对较小,而大部分高频参数值非常小,接近于零。

      图 3—1:原图像 图 3—2:变换后的系数图像 3.2.3 离散余弦变换的数字水印算法 根据离散余弦变换后的参数性质,本文采用了以ZigZag 方式重排变换域系数的方法,选出中频分量,用数字水印序列对其进行非线性调制水印检测时,待检测图像仍按比方式选择变换域系数,与待水印进行相关运算,与阈值比较来判断是否所含水印 离散余弦域的数字水印算法的具体实现分为三步:宿主图像的变换,数字水印的嵌入,数字水印的检测 3.2.3.1 宿主图像的 DCT变换 对于 N×N 大小的 256 灰度级的宿主图像I进行 N×N 二维离散余弦变换(DCT)以 ZigZag 方式对于 DCT 变换后的图像频率系数重新排列成一维向量 Y={y1, y2,…yN× N}. 并取出序列中第 L+1 到 L+M 的中频系数部分,得到 YL={ YL+1, YL+2,…, YL+M} 3.2.3.2 数字水印的嵌入 假设数字水印 W 为一服从标准正态分布的随机实数序列,用数字序列表示为 W={W1 ,W2 ,…WM }用 W 对 Y 序列中第 L+1 到 L+M 的中频系数部分的值进行修改,按以下公式进行: ''2,0iiiiiiyyiLiLmyyy wLiLM    或 M MMM MM M M M M MM M M M M MM M M M M MM M M见的两种压缩方法是基于离散余弦变换域的压缩方法而是基于小波变换域的压缩方法前人的研究证明采用与压缩算法觉特性上数字水印的嵌入要求即要考虑视觉透明性又要保证嵌入水印图像的稳健性这两个方面存在着矛盾保证视觉透坏程度较高如有损压缩高频滤波等水印很容易在经历图像处理的过程中丢失这样则无法保证图像数字水印的稳健性如 精品文档 收集于网络,如有侵权请联系管理员删除 经过修改的系数序列 Y′ ={ Y1′, Y2′,... Y′N× N} 以 ZigZag 逆变换形式重组,再进行 N×N DCT 逆变换,得到嵌有数字水印的图像 I′。

      3.2.3.3 数字水印的检测 待检测的可能含有水印的图像 I" 假设 I"未损失大量信息,可以近似认为 I"= I′在此假设下可以运用统计的方法来检测水印 (1)待检水印域待检图像中频系数相关性的测定 同样对 I′进行 DCT 变换,以 ZigZag 方式将 DCT 系数排成一维向量 Y "= { Y1 ", Y2 ",... YN× N"} 由于假设 I"=I′,则 Y"= Y ′ 取出 Y"(等于 Y′)中第 L+1 到 L+M 的中频系数部分 YL "={ YL+1 ", YL+2"’,... YL+M"} 假设待检测的数字水印 X={X1,X2,... XM}为一符合标准正态分布的实数伪随机序列则可以通过待检水印与图像中频系数作相关运算来判断是否所加入了水印只有在待检水印为所加入的水印时,才能得到较大的相关值否则相关值很小,接近于零 ))()((1)(1), 'cov(21XiWYXYMXYMXYZiiLiiLMiiiLL 用符号E 表示数学期望,得到: (2)阈值的确定 根据中心极限定理,参照水印匹配与不匹配两种情况得到阈值为2/ )(2LzYET。

      由于原始图像难以得到,因此从实用性出发,阈值定义为: MiiLLZYMYET122/ )( 综上所述,满足5 . 022ZZTTZ或时,则表明检测到匹配水印否则,未检测到匹配的水印 2( )()( )0( )0E zE YXWE zXWE z没有水印存在见的两种压缩方法是基于离散余弦变换域的压缩方法而是基于小波变换域的压缩方法前人的研究证明采用与压缩算法觉特性上数字水印的嵌入要求即要考虑视觉透明性又要保证嵌入水印图像的稳健性这两个方面存在着矛盾保证视觉透坏程度较高如有损压缩高频滤波等水印很容易在经历图像处理的过程中丢失这样则无法保证图像数字水印的稳健性如 精品文档 收集于网络,如有侵权请联系管理员删除 3.3 MATLAB工具简介 3.3.1. 简介 Matlab 是当前在国内外十分流行的工程设计和系统仿真软件包它是MathWorks 公司于 1982 年推出的一套高性能的数值计算和可视化软件,它集数值分析、矩阵运算、信号处理和图形显示于一体,构成了一人方便的、界面友好的用户环境。

      Matlab 的推出得到了各个领域专家、学者的广泛关注,其强大的扩展功能为各个领域的应用提供了基础由各个专家学者相继推出了 MATLAB 工具箱,其中的信号处理(signal processing) 、控制系统(control system) 、神经网络(neural network) 、图像处理(image processing) 、鲁棒控制(robust control)、非线性系统控制设计(nonlinear system control design) 、系统辨识(system identification) 、最优化(optimization) 、模糊逻辑(fuzzy logic) 、小波(wavelet) 、通信(communication) 、统计(statistics)等工具箱,这些工具箱给各个领域的研究和工程应用提供了有力的工具,借助于这些“ 巨人肩上的工具” ,各个层次的研究人员可直观、方便地进行分析、计算及设计工作,从而大大地节省了时间 3.3.2. MATLAB 研究数字水印的优点 ① 集成了 DCT、DWT 等函数有丰富的小波函数和处理函数,这不仅方便了研究人员,而且使源程序简洁明了、易实现。

      ② 强大的数学运算功能能够方便、高效地实现音频、视频中的大量矩阵运算 ③ 提供了图像处理工具箱、小波分析工具箱、数字信号处理工具箱用来编制跨数字图像处理技术、数字信号处理等多学科的数字水印技术是非常好的选择 ④ MATLAB 与目前最强大的编程工具——Visual C++具有良好的接口 3.3.3. MATLAB 函数介绍 在介绍函数之前,我们必须明确一点:作水印程序时,处理的图像数据是二维信号,而声音信号是一维信号这里,我们仅仅简单介绍与水印有关的函数 ① 数据输入输出函数 见的两种压缩方法是基于离散余弦变换域的压缩方法而是基于小波变换域的压缩方法前人的研究证明采用与压缩算法觉特性上数字水印的嵌入要求即要考虑视觉透明性又要保证嵌入水印图像的稳健性这两个方面存在着矛盾保证视觉透坏程度较高如有损压缩高频滤波等水印很容易在经历图像处理的过程中丢失这样则无法保证图像数字水印的稳健性如 精品文档 收集于网络,如有侵权请联系管理员删除 imread()和 imwrite ():可以读写 bmp,jpg/jpeg, tif/tiff, png, hdf, pcx, wxd格式文件读索引文件时,还可以得到相应的调色板数据。

      auread()、auwrite()、wavread()和 wavwrite ():可以方便地读写au 和 wav 文件,并可控制其中的位及频率 ② 图像显示 imshow() :显示一幅图像;imfinfo() :可以得到读入图像的信息如文件的大小、格式、格式版本号、图像的高度、宽度、颜色类型(真彩色,灰度图还是索引图)等 ③ 变换频函数 对信号采用不同的变换,是实现频域法水印的至关重要的一步,MATLAB 中对一维信号和二维信号分别提供了各种变换和逆变换函数  离散余弦变换(DCT) dct(),dct2(): 分别实现一维信号和二维信号的 DCT(离散余弦变换); idct(),idct2(): 分别实现一维信号和二维信号的 IDCT(逆向离散余弦变换);  离散小波变换(DWT) dwt(),dwt2(): 分别实现一维信号和二维信号的 DWT(离散小波变换) idwt(),idwt2(): 分别实现一维信号和二维信号的 IDWT(离散小波变换); Wavedec2(): 多级二维小波分解函数; Waveinfo(): 提供小波包中所有的小波信息; ④攻击函数 对算法进行攻击测试是对水印鲁棒性检测的一种重要手段,一个好的水印算法必须经过各种攻击测试才能对之做出客观的评价。

      MATLAB 中的许多函数可以直接用来做攻击测试 旋转:rotate()可以对图像进行任意角度的旋转; 剪裁:imcrop() 可以按精确定位的各点坐标进行剪裁; 滤波:filter()和 filter2() 可实现对一维信号和二维信号的滤波; 抖动:dither()对图像进行抖动;抖动攻击考验水印鲁棒性的一个很好的攻击; jpeg 压缩:imwrite() 中 jpg 和 quality 参数能对图像进行可控 jpg 压缩; 加各种噪声:imnoise() 可以对图像加入各种噪声,如白噪声、椒盐噪声等,加入噪声是对水印鲁棒性考验的一种常见的攻击; 放大/缩小:imresize() 可以以指定的插值方法来对图像进行放大和缩小 见的两种压缩方法是基于离散余弦变换域的压缩方法而是基于小波变换域的压缩方法前人的研究证明采用与压缩算法觉特性上数字水印的嵌入要求即要考虑视觉透明性又要保证嵌入水印图像的稳健性这两个方面存在着矛盾保证视觉透坏程度较高如有损压缩高频滤波等水印很容易在经历图像处理的过程中丢失这样则无法保证图像数字水印的稳健性如 精品文档 收集于网络,如有侵权请联系管理员删除 第四章: 图像数字水印技术的实现 4.1 基于离散余弦变法(DCT )实现数字水印技术 ① 打开原始及水印图像: subplot(2,2,1) I=uigetfile('*.bmp','打开原始彩色图像文件'); RGB=imread(I); image(RGB); title('原始彩色图像'); subplot(2,2,2) I=uigetfile('*.bmp','打开水印灰度图像文件'); imshow(I); title('灰度水印图像'); subplot(2,2,3) H=imread(I); J=dct2(H); imshow(log(abs(J)),[]),colorbar; title('水印图像经 DCT 变换后能量分布情况') 运行结果: ② 水印全过程: 0%水印加入程序 Q=input('请输入放缩因子的值(建议小于 1):Q=') subplot(2,3,1) RGB=imread(' 浙江台州学院','jpg'); imshow(RGB); 见的两种压缩方法是基于离散余弦变换域的压缩方法而是基于小波变换域的压缩方法前人的研究证明采用与压缩算法觉特性上数字水印的嵌入要求即要考虑视觉透明性又要保证嵌入水印图像的稳健性这两个方面存在着矛盾保证视觉透坏程度较高如有损压缩高频滤波等水印很容易在经历图像处理的过程中丢失这样则无法保证图像数字水印的稳健性如 精品文档 收集于网络,如有侵权请联系管理员删除 title('原始图像'); subplot(2,3,2) N=dct2(RGB(:,:,3)); imshow(log(abs(N)),[]),colorbar; title('Y 分量能量分布'); subplot(2,3,4) I=imread('lena1','bmp'); imshow(I); title('灰度水印图像'); subplot(2,3,5) M=dct2(I); imshow(log(abs(M)),[]),colorbar; title('水印能量分布'); subplot(2,3,6) J=M(1:128,1:128); J(128:364,128:400)=0; J=rot90(J); J=rot90(J); J(365:600,401:750)=0; J=rot90(J); J=rot90(J); N=N+Q*J; K=idct2(N); RGB(:,:,3)=K; imshow(RGB); title('加入水印后图像'); %水印提取程序 subplot(2,3,3) RGB1=imread(' 浙江台州学院','jpg'); N=dct2(RGB(:,:,3)); M=dct2(RGB1(:,:,3)); M=(N-M)/Q; B=idct2(M(236:365,350:401)); Y=mat2gray(B); imshow(Y); 见的两种压缩方法是基于离散余弦变换域的压缩方法而是基于小波变换域的压缩方法前人的研究证明采用与压缩算法觉特性上数字水印的嵌入要求即要考虑视觉透明性又要保证嵌入水印图像的稳健性这两个方面存在着矛盾保证视觉透坏程度较高如有损压缩高频滤波等水印很容易在经历图像处理的过程中丢失这样则无法保证图像数字水印的稳健性如 精品文档 收集于网络,如有侵权请联系管理员删除 title('提取的水印图像') 运行结果: ③ 水印全过程(经剪切检测水印) %水印加入程序 Q=input('请输入放缩因子的值(建议小于 1):Q=') subplot(3,3,1) RGB=imread('MM','jpg'); imshow(RGB); title('原始图像'); subplot(3,3,2) imshow(RGB(:,:,3)); title('B 分量'); subplot(3,3,3) N=dct2(RGB(:,:,3)); imshow(log(abs(N)),[]),colorbar; title('B 分量能量分布'); subplot(3,3,4) I=imread('lena1','bmp'); imshow(I); title('灰度水印图像'); subplot(3,3,5) M=dct2(I); imshow(log(abs(M)),[]),colorbar; title('水印能量分布'); subplot(3,3,7) 见的两种压缩方法是基于离散余弦变换域的压缩方法而是基于小波变换域的压缩方法前人的研究证明采用与压缩算法觉特性上数字水印的嵌入要求即要考虑视觉透明性又要保证嵌入水印图像的稳健性这两个方面存在着矛盾保证视觉透坏程度较高如有损压缩高频滤波等水印很容易在经历图像处理的过程中丢失这样则无法保证图像数字水印的稳健性如 精品文档 收集于网络,如有侵权请联系管理员删除 J=M(1:128,1:128); J(128:464,128:364)=0; J=rot90(J); J=rot90(J); J(465:800,365:600)=0; J=rot90(J); J=rot90(J); N=N+Q*J; K=idct2(N); RGB(:,:,3)=K; imshow(RGB); title('加入水印后图像'); subplot(3,3,8) I=imcrop(RGB,[1 1 598 798]); imshow(I); subplot(3,3,9) %水印提取程序 subplot(3,3,6) RGB1=imread('MM','jpg'); J=RGB1(:,:,3); X=J(1:799,1:599); N=dct2(I(:,:,3)); M=dct2(X); M=(N-M)/Q; B=idct2(M(337:464,237:364)); Y=mat2gray(B); imshow(Y); title('经放缩后提取的水印图像') 运行结果: 见的两种压缩方法是基于离散余弦变换域的压缩方法而是基于小波变换域的压缩方法前人的研究证明采用与压缩算法觉特性上数字水印的嵌入要求即要考虑视觉透明性又要保证嵌入水印图像的稳健性这两个方面存在着矛盾保证视觉透坏程度较高如有损压缩高频滤波等水印很容易在经历图像处理的过程中丢失这样则无法保证图像数字水印的稳健性如 精品文档 收集于网络,如有侵权请联系管理员删除 ④ 水印全过程(经空域压缩检测水印) 程序源代码 %水印加入程序 Q=input('请输入放缩因子的值(建议小于 1):Q=') P=input('请输入您所希望的图像放缩系数值(建议取值不要小于 0.5):P=') subplot(3,3,1) RGB=imread(' 浙江台州学院','jpg'); imshow(RGB); title('原始图像'); subplot(3,3,2) imshow(RGB(:,:,3)); title('B 分量'); subplot(3,3,3) N=dct2(RGB(:,:,3)); imshow(log(abs(N)),[]),colorbar; title('B 分量能量分布'); subplot(3,3,4) I=imread('lena1','bmp'); 见的两种压缩方法是基于离散余弦变换域的压缩方法而是基于小波变换域的压缩方法前人的研究证明采用与压缩算法觉特性上数字水印的嵌入要求即要考虑视觉透明性又要保证嵌入水印图像的稳健性这两个方面存在着矛盾保证视觉透坏程度较高如有损压缩高频滤波等水印很容易在经历图像处理的过程中丢失这样则无法保证图像数字水印的稳健性如 精品文档 收集于网络,如有侵权请联系管理员删除 imshow(I); title('灰度水印图像'); subplot(3,3,5) M=dct2(I); imshow(log(abs(M)),[]),colorbar; title('水印能量分布'); subplot(3,3,7) J=M(1:128,1:128); J(128:364,128:400)=0; J=rot90(J); J=rot90(J); J(365:600,401:750)=0; J=rot90(J); J=rot90(J); N=N+Q*J; K=idct2(N); RGB(:,:,3)=K; imshow(RGB); title('加入水印后图像'); subplot(3,3,8) I=imresize(RGB,P,'nearest'); imshow(I); title('压缩 P 倍图像'); subplot(3,3,9) J=imresize(I,1/P,'nearest'); imshow(J); title('再放大 P 倍还原图像') %水印提取程序 subplot(3,3,6) RGB1=imread(' 浙江台州学院','jpg'); N=dct2(J(:,:,3)); M=dct2(RGB1(:,:,3)); M=(N-M)/Q; B=idct2(M(236:365,350:401)); Y=mat2gray(B); 见的两种压缩方法是基于离散余弦变换域的压缩方法而是基于小波变换域的压缩方法前人的研究证明采用与压缩算法觉特性上数字水印的嵌入要求即要考虑视觉透明性又要保证嵌入水印图像的稳健性这两个方面存在着矛盾保证视觉透坏程度较高如有损压缩高频滤波等水印很容易在经历图像处理的过程中丢失这样则无法保证图像数字水印的稳健性如 精品文档 收集于网络,如有侵权请联系管理员删除 imshow(Y); title('经放缩后提取的水印图像'): 运行结果: 4.2 图像水印的 dwt 算法 % 以下是水印提取算法 clear all ; clc; % 保存时间 start_time=cputime; figure(1); % 读出原始图像 subplot(1,2,1); input=imread('2.jpg'); imshow(input); title(' 原始图像' ); % 读出水印图像 subplot(1,2,2); watermarked_image=imread('watermarked.bmp'); imshow(watermarked_image,[]); title(' 水印图像' ); % 三色分离 input=double(input); watermarked_image=double(watermarked_image); inputr=input(:,:,1); watermarked_imager=watermarked_image(:,:,1); inputg=input(:,:,2); watermarked_imageg=watermarked_image(:,:,2); inputb=input(:,:,3); 见的两种压缩方法是基于离散余弦变换域的压缩方法而是基于小波变换域的压缩方法前人的研究证明采用与压缩算法觉特性上数字水印的嵌入要求即要考虑视觉透明性又要保证嵌入水印图像的稳健性这两个方面存在着矛盾保证视觉透坏程度较高如有损压缩高频滤波等水印很容易在经历图像处理的过程中丢失这样则无法保证图像数字水印的稳健性如 精品文档 收集于网络,如有侵权请联系管理员删除 watermarked_imageb=watermarked_image(:,:,3); % 水印图像R的分解 [Cwr,Swr]=WAVEDEC2(watermarked_imager,2,'haar'); % 图像R的分解 [Cr,Sr]=WAVEDEC2(inputr,2,'haar'); % 水印图像G的分解 [Cwg,Swg]=WAVEDEC2(watermarked_imageg,2, 'haar'); % 图像R的分解 [Cg,Sg]=WAVEDEC2(inputg,2, 'haar'); % 水印图像B的分解 [Cwb,Swb]=WAVEDEC2(watermarked_imageb,2, 'haar'); % 图像B的分解 [Cb,Sb]=WAVEDEC2(inputb,2, 'haar'); % 提取水印小波系数 % 提取水印R的小波系数 r=0.06; for k=0:3 whr(k+1,:)=Cwr(1+size(Cwr,2)/4+k*size(Cwr,2)/16:... size(Cwr,2)/4+(k+1)*size(Cwr,2)/16)-... Cr(1+size(Cr,2)/4+k*size(Cr,2)/16:... size(Cr,2)/4+(k+1)*size(Cr,2)/16); wvr(k+1,:)=Cwr(1+size(Cwr,2)/2+k*size(Cwr,2)/16:... size(Cwr,2)/2+(k+1)*size(Cwr,2)/16)-... Cr(1+size(Cr,2)/2+k*size(Cr,2)/16:... size(Cr,2)/2+(k+1)*size(Cr,2)/16); wdr(k+1,:)=Cwr(1+3*size(Cwr,2)/4+k*size(Cwr,2)/16:... 3*size(Cwr,2)/4+(k+1)*size(Cwr,2)/16)-... Cr(1+3*size(Cr,2)/4+k*size(Cr,2)/16:... 3*size(Cr,2)/4+(k+1)*size(Cr,2)/16); end whr=(whr(1,:)+whr(2,:)+whr(3,:)+whr(4,:))/(4*r); wvr=(wvr(1,:)+wvr(2,:)+wvr(3,:)+wvr(4,:))/(4*r); wdr=(wdr(1,:)+wdr(2,:)+wdr(3,:)+wdr(4,:))/(4*r); war=(Cwr(1:size(Cwr,2)/16)-Cr(1:size(Cr,2)/16))/r; % 提取水印小波系数 % 提取水印G的小波系数 见的两种压缩方法是基于离散余弦变换域的压缩方法而是基于小波变换域的压缩方法前人的研究证明采用与压缩算法觉特性上数字水印的嵌入要求即要考虑视觉透明性又要保证嵌入水印图像的稳健性这两个方面存在着矛盾保证视觉透坏程度较高如有损压缩高频滤波等水印很容易在经历图像处理的过程中丢失这样则无法保证图像数字水印的稳健性如 精品文档 收集于网络,如有侵权请联系管理员删除 g=0.03; for k=0:3 whg(k+1,:)=Cwg(1+size(Cwg,2)/4+k*size(Cwg,2)/16:... size(Cwg,2)/4+(k+1)*size(Cwg,2)/16)-... Cg(1+size(Cg,2)/4+k*size(Cg,2)/16:... size(Cg,2)/4+(k+1)*size(Cg,2)/16); wvg(k+1,:)=Cwg(1+size(Cwg,2)/2+k*size(Cwg,2)/16:... size(Cwg,2)/2+(k+1)*size(Cwg,2)/16)-... Cg(1+size(Cg,2)/2+k*size(Cg,2)/16:... size(Cg,2)/2+(k+1)*size(Cg,2)/16); wdg(k+1,:)=Cwg(1+3*size(Cwg,2)/4+k*size(Cwg,2)/16:... 3*size(Cwg,2)/4+(k+1)*size(Cwg,2)/16)-... Cg(1+3*size(Cg,2)/4+k*size(Cg,2)/16:... 3*size(Cg,2)/4+(k+1)*size(Cg,2)/16); end whg=(whg(1,:)+whg(2,:)+whg(3,:)+whg(4,:))/(4*g); wvg=(wvg(1,:)+wvg(2,:)+wvg(3,:)+wvg(4,:))/(4*g); wdg=(wdg(1,:)+wdg(2,:)+wdg(3,:)+wdg(4))/(4*g); wag=(Cwg(1:size(Cwg,2)/16)-Cg(1:size(Cg,2)/16))/g; % 提取水印小波系数 % 提取水印B的小波系数 b=0.12; for k=0:3 whb(k+1,:)=Cwb(1+size(Cwb,2)/4+k*size(Cwb,2)/16:... size(Cwb,2)/4+(k+1)*size(Cwb,2)/16)-... Cb(1+size(Cb,2)/4+k*size(Cb,2)/16:... size(Cb,2)/4+(k+1)*size(Cb,2)/16); wvb(k+1,:)=Cwb(1+size(Cwb,2)/2+k*size(Cwb,2)/16:... size(Cwb,2)/2+(k+1)*size(Cwb,2)/16)-... Cb(1+size(Cb,2)/2+k*size(Cb,2)/16:... size(Cb,2)/2+(k+1)*size(Cb,2)/16); wdb(k+1,:)=Cwb(1+3*size(Cwb,2)/4+k*size(Cwb,2)/16:... 3*size(Cwb,2)/4+(k+1)*size(Cwb,2)/16)-... Cb(1+3*size(Cb,2)/4+k*size(Cb,2)/16:... 3*size(Cb,2)/4+(k+1)*size(Cb,2)/16); end whb=(whb(1,:)+whb(2,:)+whb(3,:)+whb(4,:))/(4*b); wvb=(wvb(1,:)+wvb(2,:)+wvb(3,:)+wvb(4,:))/(4*b); wdb=(wdb(1,:)+wdb(2,:)+wdb(3,:)+wdb(4,:))/(4*b); wab=(Cwb(1:size(Cwb,2)/16)-Cb(1:size(Cb,2)/16))/b; % 重构水印图像 cwr=[war,whr,wvr,wdr]; 见的两种压缩方法是基于离散余弦变换域的压缩方法而是基于小波变换域的压缩方法前人的研究证明采用与压缩算法觉特性上数字水印的嵌入要求即要考虑视觉透明性又要保证嵌入水印图像的稳健性这两个方面存在着矛盾保证视觉透坏程度较高如有损压缩高频滤波等水印很容易在经历图像处理的过程中丢失这样则无法保证图像数字水印的稳健性如 精品文档 收集于网络,如有侵权请联系管理员删除 swr(:,1)=[sqrt(size(war,2)),sqrt(size(war,2)),2*sqrt(size(war,2))]; swr(:,2)=[sqrt(size(war,2)),sqrt(size(war,2)),2*sqrt(size(war,2))]; wr = waverec2(cwr,swr,'haar'); cwg=[wag,whg,wvg,wdg]; swg(:,1)=[sqrt(size(wag,2)),sqrt(size(wag,2)),2*sqrt(size(wag,2))]; swg(:,2)=[sqrt(size(wag,2)),sqrt(size(wag,2)),2*sqrt(size(wag,2))]; wg=waverec2(cwg,swg,'haar'); cwb=[wab,whb,wvb,wdb]; swb(:,1)=[sqrt(size(wab,2)),sqrt(size(wab,2)),2*sqrt(size(wab,2))]; swb(:,2)=[sqrt(size(wab,2)),sqrt(size(wab,2)),2*sqrt(size(wab,2))]; wb=waverec2(cwb,swb,'haar'); % 将R,G,B叠加 temp=size(wr); pic=zeros(temp(1),temp(2),3); for i=1:temp(1); for j=1:temp(2); pic(i,j,1)=wr(i,j); pic(i,j,2)=wg(i,j); pic(i,j,3)=wb(i,j); end end output=uint8(round(pic)); % 转化为uint8 watermark_image_uint8=uint8(output); imwrite(watermark_image_uint8,'watermark.bmp', 'bmp' ); figure(2); imshow(watermark_image_uint8); title(' 提取出的水印' ); 原始图像 见的两种压缩方法是基于离散余弦变换域的压缩方法而是基于小波变换域的压缩方法前人的研究证明采用与压缩算法觉特性上数字水印的嵌入要求即要考虑视觉透明性又要保证嵌入水印图像的稳健性这两个方面存在着矛盾保证视觉透坏程度较高如有损压缩高频滤波等水印很容易在经历图像处理的过程中丢失这样则无法保证图像数字水印的稳健性如 精品文档 收集于网络,如有侵权请联系管理员删除 加入小波的图像 小波 提取的小波 见的两种压缩方法是基于离散余弦变换域的压缩方法而是基于小波变换域的压缩方法前人的研究证明采用与压缩算法觉特性上数字水印的嵌入要求即要考虑视觉透明性又要保证嵌入水印图像的稳健性这两个方面存在着矛盾保证视觉透坏程度较高如有损压缩高频滤波等水印很容易在经历图像处理的过程中丢失这样则无法保证图像数字水印的稳健性如 。

      点击阅读更多内容
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.