一种基于DWT水印源代码
一种基于DWT的数字水印算法
第13期2020年7月无线互联科技WirelessInternetTechnologyNo.13July,2020基金项目:人工智能背景下基于静态图片的人脸表情识别技术研究;项目编号:20MDQ08。
陕西省教育厅专项;项目编号:19JK0887。
校内重大培育;项目编号:19MDZ03。
作者简介:王菽裕(1991—),男,甘肃天水人,助教,硕士;研究方向:数字图像处理。
一种基于DWT的数字水印算法王菽裕,刘 璐,宋俊芳,张春玉(西藏民族大学信息工程学院,陕西 咸阳 712082)摘 要:网络技术和多媒体技术迅速发展。
为了更好地保障图像信息传输的安全性和可靠性,解决数字图像的版权保护问题,图像信息隐藏技术已成为图像处理领域的研究热点之一。
文章结合离散小波变换和矩阵奇异值分解优点并采用Matlab编程环境实现了一种水印软件,使数字水印理论得到了实际的应用。
关键词:版权保护;数字水印;水印软件0 引言数字水印技术发展迅速,出现了各种水印算法,最低有效位(LeastSignificantBit,LSB)数字水印技术是最早的空域水印添加算法,它原理简单且易实现,但鲁棒性差。
变换域水印算法大大提高了水印的鲁棒性,常见的有基于离散余弦变换(DualClutchTransmission,DCT)和离散小波变换(DiscreteWaveletTransform,DWT)水印算法。
黄西娟[1]、陈善学等[2]人对于数字水印算法的研究使数字水印算法不断完善优化。
综合考虑DWT和SVD的优点,本文将DWT和SVD结合起来对原载体图像进行水印的嵌入和提取。
与传统的DCT变换相比,小波变换是一种时域与频域相结合的变分辨率变换方法。
时间窗口的大小随频率自动调整,更符合人的视觉特征并且小波分析在时域和频域都有很好的局部性,为传统的时域分析和频域分析[3]提供了很好地结合方法。
目前,小波分析已广泛应用于数字图像和视频压缩编码、纹理特征识别[4]、信息隐藏[5]等领域,出现了许多典型的基于离散小波变换的数字水印算法[6]。
一种基于DWT域的彩色图像数字水印算法
( S 特 点 , 们 采 用 YI 色 彩 空 间 , 水 印 信 号 嵌 入 到 载 体 图像 的亮 度 分 量 Y 的 D T后 的低 频 系 数 上 。实 验 结果 证 明 HV ) 我 Q 将 W
n 该算法对加噪 ,P G压缩 , JE 低通滤波 , 中值滤波 , 几何剪切等攻击具有很好 的鲁棒性 。 g
1 引 言
随着 多媒体 和 网络 技术 的迅 猛 发 展 以 及信 息
( 南 师 范 学 院 物 理 与 电气 工程 学 院 渭
渭南
74O) 1 OO
摘
要
针 对 目前 实用 的彩 色 图像 数 字 水 印 技 术 不 多 , 别 是 灰 度 级 水 印信 号 的 嵌 入 算 法 比 较 少 , 章 提 出 一 种 二 维 特 文
E
的 D T彩 色 图像 数 字 水 印 的 新算 法 。基 本 思 想 是 : 取 二 维 条 形 码 作 为 嵌 入 的 水 印 , 嵌 入 之 前 对 其 进 行 二 值 化 , 对 结 W 选 在 再 果 进 行 分 块 并 且 对 各个 子块 进 行 编码 , 后将 各 个 排列 作 为水 印 。考 虑 到 人 类 的视 觉 系 统 最 O
f t r g, e m e t r pn ta k e a. i ei g o ri co igat c t1 l n c
K y W ors D T,YI c lrs a e D ac d e d W Q oo p c ,2 b ro e
Cls m b r TP 9 . 】 a s Nu e 3 ] 4
总第 20 6 期 2 1 年第 6 01 期
计 算 机 与 数 字 工 程
C mp tr& Diia gn eig o ue gtl En ie rn
一种基于DWT域的数字水印算法
Ke wo d Di i lw tr r i g I g e mu a in Di r t v ltt n f r y rs g t a emak n ma e p r tt a o s e ewa e e r so c a m
1 引言
随着计 算机网络 技术和多媒体技术 的迅速发展 , 为数 作
L2 L L H2
HL 2 HL 1 HH2 HHl
字媒体版权 保护的有 效手段 , 数字水 印得到 了人们 的密 切关 注, 成为 国内外学者研究的热点 … 。 数字水 印是“ 不可 感 知的 在作 品 中嵌 入信 息 的操 作 行 为” 。 目前的算 法 大致 分 为 两类 : J 空域 和 变换 域 ( F D T,
与 JE 20 P G00兼容 , 因此 ,WT域数 字水 印技 术是 目前 的 主 D
要研究方向 … 。
将 A o 变换应用在数字图像上, n d rl 可以通过像素图表的
改变 而改变 图像灰 度值 的布 局 , 而取 得 图像 隐藏 的效果 。 从
2 图像 的离散小 波变换 和图像 置乱
维普资讯
僵矗拄木 与僵J亿 一
一
种基 于 D WT域 的数 字 水 印算 法
An Dii lW aemak n g r h B s d o W T gt tr r ig Alo i m a e n D a t
林 瑞 娟 ’ 侯 德 文
式:
信号局部特征的能力 , 是一种窗1大小固定但其形状可变, 3 时 间窗和频率窗都可改变 的时频局 部化分析方法 。 小波变换 的基本 思 想就 是 对信 号 进行 多 分 辨 率分 解 。
一种基于DWT变换的音频水印算法
一种基于DWT变换的音频水印算法[摘要] 实现了一种基于小波变换的音频水印算法。
算法首先对水印图片进行了置乱预处理,对音频信号进行小波变换,在低频系数量化嵌入水印信息。
实验表明该算法具有较好的鲁棒性。
[关键词] 音频水印小波变换均值量化伴随着数字多媒体技术以及互联网技术的飞速发展,数字信息作品的创作、存储和传输都变的十分方便与快捷,但同时也暴露出了严重的问题,多媒体技术版权的创作者和所有者有着强烈、紧迫的反盗维权的要求和渴望[1]。
数字水印技术可以保证数字信息的完整性和可靠性,成为知识产权保护和数字多媒体防伪的有效手段[2]。
数字水印技术被认为是解决版权问题的有效方式[3]。
1.算法概述小波分析是一种很好的信号分析和处理方法,受到了越来越多的水印研究者的青睐。
基于小波变换(DWT)的数字水印算法,体现出了更优良的性能特性。
最大限度地把水印信息隐藏而不被人们所察觉,并且计算量较小。
本文首先改进实现了基于小波变换的音频水印算法。
该算法首先对水印图片进行了置乱预处理,对音频信号进行小波变换,在低频系数量化嵌入水印信息。
1.1Arnold变换Arnold变换,又称猫脸变换,此变换只适用于正方形数字图像。
运用Arnold 变换对一幅正方形的图像进行迭代变换,若干次后,图像一定能恢复到原先[4]。
Arnold变换公式:。
其中,mod表示取模运算;,表示原来图像的像素点位置;,表示变换后图像的像素点位置。
图1中,(a)为原始图像,64×64;(b)经过3次迭代后图像;(c) 经过15次迭代后图像;(d) 经过30次迭代后图像;(e) 经过45次迭代后图像;(f) 经过48次迭代后图像。
Arnold变换起到了加密保护的作用,Arnold变换具有周期性,64×64的二值图像在经过48次迭代回到了原始图像。
图 1 水印图像经Arnold变换后的水印图像1.2 系数量化原理量化的算法的思路是,首先,定义量化步长,用量化步长把待量化的系数取值范围划分为如图2所示A、B两个区间集,嵌入的水印比特为(1或0);量化处理后的系数为。
基于-DWT的图像压缩与数字水印设计
“数字图像处理”课程设计基于DWT的图像压缩及数字水印系统设计班级:13电信A1组长:高利组员:余世芝、石燕、冰王娜娜、锐2016年1月4摘要随着网络带宽、计算能力、图像压缩技术和存储设备的快速发展,人们对图像压缩技术及数字图像水印技术提出了更高的要求,良好的图像压缩技术不仅能实现高压缩率和高保真度,还能满足图像存储及图像数据传输的现实要求。
数字化图像数据的使用与传播的普及,为数字图像在保护、认证、防拷贝、防篡改、保障数据安全等方面提供了有效的技术手段。
采用密码学的加密与解密技术虽然能够保护数字产品的安全传输,但不能保证数字产品解密后的盗版问题。
为解决这一问题,在原图像中加入不可见的信息来标注是近年来图像技术研究领域的一个热点。
目前提出的数字水印的嵌入方法大致可以分为空间域数字水印和变换域数字水印两大类。
从总体性能来看,变换域的方法比空间域的方法有更多的优越性。
基于变换域的数字水印技术又分为DET(离散傅氏变换)、DCT(离散余弦变换)、DWT(离散小波变换)等。
由于小波变换具有很好的时域—频域特性,作为一种多分辨率的分析方法,小波变换成为新一代静止图像压缩标准JPEG-2000和运动图像压缩标准MPEG-4 中的一种关键的技术,所以基于小波变换的数字水印研究是非常必要。
MATLAB作为一款高性能的数值计算和可视化软件,为图像压缩及数字水印的嵌入与提取提供了方便。
关键词:图像压缩,数字水印,MATLAB,小波变换,嵌入与提取目录1 引言 (5)2 基于DWT的图像压缩和数字水印方法 (5)2.1 基于DWT的图像压缩 (6)2.1.1图像压缩编码的目的与可能性 (6)2.2 数字水印方法 (7)2.2.1数字水印系统的组成 (7)2.2.2基于DCT领域的鲁棒水印的实现 (9)2.2.3基于空域的脆弱水印实现 (11)2.2.4水印的提取及篡改检测 (12)3 基于DWT的图像压缩和数字水印的Matlab实现 (13)3.1基于DWT的图像压缩的Matlab实现 (13)3.1.1基于DWT的图像压缩的设计与实现 (13)3.2数字水印的Matlab实现 (18)3.2.1数字水印的嵌入与提取 (18)3.2.2基于空域的脆弱水印实现 (20)3.2.3水印的提取及篡改检测 (21)3.2.4数字水印嵌入与提取的比较与分析 (23)4 结束语 (25)参考文献 (26)附录:程序源代码 (27)1 引言今天,计算机及网络的告诉发展为数字作品的传播提供了便利的途径。
小波实验报告dwt水印
一、题目:dwt水印二、目的:编程实现水印的嵌入与还原三、算法及其实现:水印的嵌入与还原小波变换具有空间-频率的多尺度性,对图像的分解可以连续地从低分辨率过渡到高分辨率,也可以对图像整体进行变换,DWT还具有多分辨率特性,可以很好地与人类视觉系统(HVS)特性相匹配。
本算法将载体图像进行小波分解,利用公式实现水印信息的嵌入。
将2值图像中0和1的值变成-1和1。
将水印入宿主图形重要的小波系数上。
水印的提取完全是水印嵌入的逆过程。
四、实现工具:Matlab五、程序代码:(1)dwt1_embed.m%嵌入源码clcclear all;% 保存开始时间start_time=cputime;k=20;blocksize=8; % 设置块的大小% 读入原图像file_name='zimu.bmp';cover_object=double(imread(file_name));% 原图像的行数与列数Mc=size(cover_object,1); %原图像行数Nc=size(cover_object,2); %原图像列数% 最大嵌入信息量max_message=Mc*Nc/(blocksize^2);% 读入水印图像file_name='c.bmp';message=double(imread(file_name));%%水印图像的行数与列数Mm=size(message,1); %水印行数Nm=size(message,2); %水印列数message_vector=reshape(message,1,Mm*Nm);% 检查水印信息是否过大if (Mm*Nm> max_message)error('水印太大')end%将随机数发生器的状态置为1100randn('state',1100);% 产生watermarked_image,并写入原图信息watermarked_image=cover_object;% 将图像分块嵌入% 当(2,2) > (2,3) 且message_pad(kk)=0% 当(2,2) < (2,3) 且message_pad(kk)=1%%经过分析可以得出结论:在提取水印时,如果cD1(2,2)>cD1(2,3)便是嵌入了水印的黑色像素,%%反之则是嵌入了白色像素x=1;y=1;h=waitbar(0,'嵌入水印,请等待');for (kk = 1:length(message_vector))% 对块进行DWT变换[cA1,cH1,cV1,cD1] = dwt2(cover_object(x:x+blocksize-1,y:y+blocksize-1),'haar');a=cD1;% 如果message_pad(kk)== 0if (message_vector(kk) == 0)% 且(2,2) < (2,3) ,交换它们if (cD1(2,2) < cD1(2,3))temp=cD1(2,3);cD1(2,3)=cD1(2,2);cD1(2,2)=temp;end% 如果message_pad(kk) == 1,elseif (message_vector(kk) == 1)% 且(2,2) > (2,3) ,交换它们if (cD1(2,2) >= cD1(2,3))temp=cD1(2,3);cD1(2,3)=cD1(2,2);cD1(2,2)=temp;endend% 检查(2,2) ,(2,3)的差是否>= kif cD1(2,2) > cD1(2,3)if cD1(2,2) - cD1(2,3) < kcD1(2,2)=cD1(2,2)+(k/2);cD1(2,3)=cD1(2,3)-(k/2);endelseif cD1(2,3) - cD1(2,2) < kcD1(2,3)=cD1(2,3)+(k/2);cD1(2,2)=cD1(2,2)-(k/2);endend%IDWTwatermarked_image(x:x+blocksize-1,y:y+blocksize-1)= idwt2(cA1,cH1,cV1,cD1,'haar',[Mc,Nc]);% 移动到下一块if (x+blocksize) >= Ncx=1;y=y+blocksize;elsex=x+blocksize;endwaitbar(kk/length(message_vector),h);endclose(h);% 转换为uint8并写入dwt_watermarked.bmp watermarked_image_uint=uint8(watermarked_image);imwrite(watermarked_image_uint,'dwt_watermarked.bmp','bmp');% 显示运行时间elapsed_time=cputime-start_time,% 计算psnr值psnr=psnr(cover_object,watermarked_image),% 显示图像figure(1)imshow(message);title('水印');figure(2)subplot(1,2,1);imshow(watermarked_image,[])title('嵌入水印图像')subplot(1,2,2);imshow('zimu.bmp');title('原图');(2)dwt1_recover.m%DWT源码%提取源码clear all;% 保存开始时间start_time=cputime;blocksize=8; % 设置块的大小% 读入嵌入水印图像file_name='dwt_watermarked.bmp';watermarked_image=double(imread(file_name));% 嵌入水印图像的行数与列数Mw=size(watermarked_image,1); %嵌入水印图像的行数Nw=size(watermarked_image,2); %嵌入水印图像的列数% 最大嵌入信息量max_message=Mw*Nw/(blocksize^2);% 读入原始水印file_name='c.bmp';orig_watermark=double(imread(file_name));% 原始水印的行数与列数Mo=size(orig_watermark,1); %原始水印的行数No=size(orig_watermark,2); %原始水印的列数% 将图像分块提取水印x=1;y=1;h=waitbar(0,'水印提取中,请等待');for (kk = 1:max_message)% 对块进行dwt变换[cA1,cH1,cV1,cD1] = dwt2(watermarked_image(x:x+blocksize-1,y:y+blocksize-1),'haar');% 如果cD1(2,2) > cD1(3,3) 那么message_vector(kk)=0% 否则message_vector(kk)=1if cD1(2,2)>cD1(3,3)message_vector(kk)=0;elsemessage_vector(kk)=1;end% 移动到下一块if (x+blocksize) >= Mwx=1;y=y+blocksize;elsex=x+blocksize;endwaitbar(kk/max_message,h);endclose(h);% 将message重新排列message_vector=message_vector(1,1:Mo*No); %%只需前Mo*No个message=reshape(message_vector,Mo,No);% 显示运行时间elapsed_time=cputime-start_time,% 显示提取水印与原始水印figure(3)subplot(1,2,1);imshow(message,[]);title('提取水印')subplot(1,2,2);imshow(orig_watermark,[])title('原始水印');六、运行结果:1、把C嵌入到图形中把c从水印图形中提取出来并对比七:结果分析:。
一种基于DWT的音频水印算法
保 护 的一种 较为有 效 的技术 手段 。
目前 常 用 的音 频水 印技 术 _ , 水 印嵌 入 方 式 来 2按 ] 分可 以分 为两类 : ( ) 法和 变换域 法 。 ( ) 算 时 空 域 时 空 域 法 的算法 简单 、 运行 速度快 , 但抗 干扰 能 力差 。变换 域 法 有 离 散 傅 里 叶 变 换 ( F 算 法 、 散 余 弦 变 换 D T) 离 ( C 算 法 、 散 小 波变 换 ( WT) 法 等 , 类 算 法 D T) 离 D 算 该 复杂 度较高 , 但鲁 棒性 好 。 由于 小波变 换具 有 良好 的时 频局 部特性 , 因此 成 为 目前 频域 法水 印 的主 流技术 。
数 字 水 印[( ii l tr rig 技 术 是 2 1 Dgt emakn ) ] a Wa O世
纪9 O年代 正式提 出的一种 版权 保护 手段 。 它可 以标示
是 把信 号 _() 厂 f表示 为 一簇 函数 的加权 和 , 这簇 函数 而
是 由基本 小 波 ( )经 过伸 缩 和平 移 而形成 的。伸缩 £
维普资讯
一
种 基 于 D T 的音 频 水 印 算 法 W
文 章 编 号 : 0 3 5 5 ( 0 6 1 — 0 20 10 —8 0 2 0 ) 201 -3
一
种 基 于 D T 的 音 频 水 印 算 法 W
李 建锋 张 雪英 00 2 ) 3 0 4
本文提 出一 种基 于小 波变换 与人 类 听觉特 性 的数
() 1
小波 分析 的主 要特 点就 是 能够分 析信 号 的局部 特
征 , 用 小波 变换 可 以非常 准确 地分 析 出信号特 性 , 利 可 以检 测 出许多 被其 他 分析方 法 忽 略的特 性 。所 以本 文
一种基于DWT域的数字水印算法
h t : w w. n sn t i t / w d z .e . 1 p/ e
T 1 8 — 5 - 6 0 6 5 9 9 4 e: 6 5 5 9 9 3 + 1 60 6
一
种基于 D WT域 的数字水印算法
董 枢1 学 , 2
(. 州 大学 信 息 _程 学 院 , 苏 扬 州 2 5 0 ;. 海 职 业 技 术 学 院 信 息 工 程 系 , 苏 扬 州 2 5 0 ) 1 扬 _ I = = 江 2 1 12江 江 2 1 1
D 0 N G u -s X e hu ,
(. h o o fr t n S i c n n ie r gY n z o ie i , a g h u 2 5 0 , hn ; . p r n f noma o , i g a 1 c o l f noma o c n e a dE g ei , a g h u Unv r t Y n z o 2 1 1 C ia 2 S I i e n n sy De a me t f r t n J n h i t oI i a
a pi d m ul —rs u in a ltta f r o e be aem ak t he lw e ue c a l tc fiint a d p r he e e c p le t —eolto ofw vee rnso i m t m d w tr r o t o f nq n y w vee oe ce s n atofot rf qu n y r w a ee ft rgia m a eEx rm e tlr s lsd m on tae t a h m be v lto he o i n li g . pei n a e ut e sr t h tt e e dde tr akig siv s e a d h sgo o d wae m r n i n ii n a od r busn s g i t bl t e sa ans
DWT源码
blocksize=8 %图像分块大小b=0.318 %水印嵌入程度的调制参数message_v ector=reshape(message,1,r_message*l_message);%message 为水印图像,r,l_message分别为水印突袭那个的行和列% 图像分块,嵌入水印信息x=1;y=1;f or kk=1:length(message_v ector);w=cov er_object(x:x+blocksize-1,y:y+blocksize-1); %cov er_object为未嵌入水印的图像[cA1,cH1,cV1,cD1]=dwt2(w,'haar'); %二级haar小波变换[cA2,cH2,cV2,cD2]=dwt2(cA1,'haar');a=[cA2,cH2,cV2,cD2];ca=reshape(a,1,(blocksize^2)/4);ca2=reshape(cA2,1,(blocksize^2)/16);ch2=reshape(cH2,1,(blocksize^2)/16);cv2=reshape(cV2,1,(blocksize^2)/16);cd2=reshape(cD2,1,(blocksize^2)/16);E=(sum(ca)-sum(ca2))/(16-4); % 二级细节子图的小波系数的平均值c=[ch2,cv2,cd2]-E;s=0;for nn=1:length(c)s=s+c(nn)^2; %%%%??????end;s=sqrt(s); %%%??????t=s^b;p=A+t*B; % 调制参数if message_v ector(kk)==0C=c+p; %C代表什么?为什么要+pend;if message_v ector(kk)==1C=c;end;cH2=reshape(C(1:4),2,2);cV2=reshape(C(5:8),2,2);cD2=reshape(C(9:12),2,2);cA1=idwt2(cA2,cH2,cV2,cD2,'haar',[blocksize/2,blocksize/2]); %二级haar小波逆变换watermarked_image(x:x+blocksize-1,y:y+blocksize-1)= idwt2(cA1,cH1,cV1,cD1,'haar',[blocksize,blocksize]);if (x+blocksize) >= r_cov er %r_cov er为原图像行的数目x=1;y=y+blocksize;elsex=x+blocksize;end;waitbar(kk/length(message_v ector),h);end;close(h);a是把图像做小波分解后的低频分量再做一次小波分解的结果。
基于DWT的数字水印处理(答辩)
对于数字图像信号(矩阵),我们可以用二维DWT进行分解,实质就是
用DWT分别对矩阵行列进行两次一维变换,就可得到图像的一级分解。
近似值系数
水平细节系数ຫໍສະໝຸດ 原始图像1行和列的低频 输出(低频成分 )近似原图
垂直细节系数
2行的高频列的低 频出(中频成分 )水平细节
对角细节系数
3列的高频行的低 4行和列的高频 频(中频成分) 输出(高频成分 垂直细节 )对角细节
山东科技大学
基于离散小波变换的数字水印处理
课题项目:基于DWT数字水印处理 课题设计人: 指导老师: 设计日期:2014年4月12日
内容提要
1.概述;
2.数字水印基本原理;
3.算法实现;
4.实验代码;
5.实验结果;
1.概述
数字水印技术是目前信息安全技术领域的一个 新方向,是一个在开放的网络环境下,保护版 权和认证来源及完整性的新型技术 。 本课题采用小波变换DTW,基于小波域的二 值图像水印算法。该算用识别度较高的二值图 像作为原始水印信息嵌入宿主图像,已达到对 宿主图像版权保护和内容鉴别的目的。
近似值系数水平细节系数垂直细节系数对角细节系数原始图像输出低频成分近似原图频出中频成分水平细节频中频成分垂直细节输出高频成分对角细节高中低频只是在局限于本图的局限划分很多文献都统称称234为高频细节子图所以用这个方法可以对图像就行二级分解将一级分解中的低频近似成分再进行dwt2分解便又得到四个子图这就是二级分解
傅里叶变换
加窗傅里叶变换
小波变换
离散小波变换可以用来分析或者叫做分解信号,这个过程叫做分解或者叫 做分析。把分解的系数还原成原始信号的过程叫做小波重构或者叫做合成, 数学上叫做逆离散小波变换。 DWT的实质就是把信号进行滤波 分别得到A(低频成分),B(高 频成分),而我们已经知道信号 低频成分是信号的主体,而高频 成分就像“添加剂”,它是信号细 的识别度(就是特征细节),声音 信号高频对应音色音域等,图像 高频对应图像文理边缘等细节信息 ,语音信号去掉高频成分仍能听清 ,图像信号去掉高频仍能识别。反之 低频图像,声音我们都无法识别。 所以低频对应信号主体 一维DWT 。
一种基于DWT的同步数字音频水印算法
f1 t 0 , :
圳
数 字 音 频 水 印 技 术 … 是 在
变 换 的 音 频 水 印 算 法 , 将 水 印 嵌
入 到D T 低频 系 数 中 。 W 的 由 于 音 频 信 号 是 时 间 轴 上 的 函 数 , 考 虑 到 各 种 攻 击 , 本 文 引 入 同 步 信 号 J引来 定 位 水 印 的 嵌 『 入 位 置 。 提 出 了 一 种 基 于 DW T域
维普资讯
测 试 技 术
Test Technol O
需 要 原 始 音 频 。 仿 真 实 验 表 明 , 所 提 出 的 方 法 具 有 较 强 的 鲁 棒 性 和 不 可 感 知 性 , 并 能 有 效 抵 御各 种 常见攻击 。 关键 词 : 字音 频水 印 ; 数 离散 小 波 变 换 ; 同步 信 号 ; 水 印 盲
o f em be ddi g n sync oni si hr c gnalw hi ch used he t syn chr i s gnalt s on c i o ear ch he a er ar I aton t w t m k oc i was i r ntoduc ed f or n der c han o en ce obu ness.s r st ynchr oni gnal d at n1 k wer em be ded n t c si an w er ar e d i he owest I
的 同 步 音 频 水 印 算 法 , 为 了 达 到
较 好 的 鲁 棒 性 , 把 同 步 信 号 和 水 印 都 隐 藏 在 了 DWT 的 低 频 系 数 域
则 判 定 < bn)是 一 个 同 步 信 号
( 中 _ 其 厂是 一 个 适 当 的 阈 值 , 取
一种基于DWT变换的稳健水印算法
摘
要 : 出 了一种 基 于 D 给 WT的稳健 水 印 算 法 , 印采 用灰 度 图像 。将 载 体 图像进 行 3级 小 波 变换 , 水 选择
C 3 C 3 C 3 C 3 C 2 C 2 C 2作 为 载体 系数 , 入 时 , 据 视 觉特 性 , 入 不 同的 强度 。水 印在 嵌 入 A 、 H 、 V 、 D 、 H 、V 、D 嵌 根 嵌
率的分析方法, 小波变换成 为新一代静止 图像压缩 标准 JE 20 P G 00和运 动 图像 压 缩 标 准 MP G 4中 的 E2 种关键的技术所以基于小波变换的数字水印研究 是非 常必要 。根 据 人 眼视觉 特性 可知 低频 区集 中了 图象的主要能量嵌入 的水印容量少 , 高频 区代表纹 理和边缘嵌入的水印容量多, 但容易受到破坏 。 本 文 给 出 了一 种 基 于 D WT 的稳 健 水 印 算 法 , 水印采用灰度 图像 。将载体 图像进行 3级小波 变
t mp o e i o u te s oi rv t rb s s . s n
ee p r n h w a h lo tm a ih a it oa an t P c mpe s n, , x e me t o st tteag r h h sh g bl yt g is EG o rsi i s h i i J o
陕西 能源职业技术 学院学报
20 0 8年第 3期总第 7期
Jun l f h a x E e y Is tt o ra o S a n i n r t u g n i e
No 7 u 3 2 0 . S m. 0 8
一
种基 于 D WT变换 的稳健水 印算法
一种改进的基于DWT的数字水印算法设计与实现
[ 摘 要] 数字水印技术是目前信息安全技术领域的~个新方向。 此技术近年来得到了较大的发展 。 本文针对传统的基于D wT的算法大都是二值图像或者 是直 接在 图像 中嵌 入一 些 二进 制序列 作 为水 印 , 水 印的安 全性 较低 的 问题 , 通 过对 图像进 行 A mo l d  ̄ L 变换 预处 理来 解决 这一 问题 。 通 过 仿真实 验 , 证 明本 算法 在保 证水 印不可 见性 的 同时 , 对常 见 的J P E G 图像 压缩 、 噪声 滤波 、 剪 切等 , 均有 较好 的鲁棒 性 。 [ 关 键词] 数字 水 印 , D WT 变换, 鲁棒 性 中图 分类号 : T P 3 9 1 . 4 1 文献 标识码 : A 文 章编号 : 1 0 0 9 —9 1 4 X( 2 O l 5 ) 4 8 — 0 2 5 5 — 0 1
表 明实 验效果 较 好 。 3 . 实验 结 果及 分析 这里 采用 经典 的L e n a 图像( 2 5 6 ×2 5 6 ) 作 为测试 图像 , 以灰 度 图像E l a i n e 6 4 ( 6 4×6 4 ) 作 为水 印 , 在Ma t l a b 7 . 1 和 Wi n d o ws X P 平 台上 进 行仿 真 实 验 。 对 于 原始 图像分 别按 照前述 的 两种 方法 进行水 印的嵌入 和 提取 。 实验 结 果如 下 : 由于 采用 的 图像及 水 印在感 知 上可 视 , 故提 取 的水 印信息 鉴 别起 来很 容 易。 那么 为 定量分 析水 印提取 的相 似性 , 采 用峰值 信噪 比( P e a k S i g n a l t o No i s e Ra t i o s , P S NR) 和互 相 关系 数归 一 化( No r ma l i z e C r o s s _C o r r e l a t i o n , NC ) [ 8 】 来判 断 原始的 图像和 加水 印后图像 之间 的差别 。 当Nc 值大 于0 . 7 时就认 为提 取 出有效 水 印。 当P S NR 值超 过3 0 i r B时, 人 的视 觉很难 分辨 原 始 图像和 嵌入 水 印 的图像 的差别 。 通过 实验 数据可 得 , 典型算 法 中, 当 图像受 到J P E G 压 缩时 , 图像 的P S NR 值 达 到3 5 . 5 5 4 9 d B, 满 足 水 印的不 可见 性 I NC 值 为0 . 9 8 8 1 , 大于 0 . 7 , 可 以有 效 提 取 出水 印 。 改 进后 , 图像受 J P E G 压缩, P S NR值为 3 5 . 5 3 7 5 d B, 同 样满 足水 印 的不可见性 , NC 值 为0 . 8 9 0 4 , 小 于0 . 9 8 8 1 , 但仍可 以提 取 出水 印。 典 型算法 中, 当图像受到剪切攻击时, 图像的P S NR 值达到3 5 . 5 5 4 9 d B, 满足水 印的不 可见性 ; NC 值 为0 . 8 1 9 2 , 大于0 . 7 , 可 以有效 提取 出水 印。 改 进后 , 图像 受 剪 切攻 击 , P S N  ̄S为 3 5 . 5 3 7 5 d B , 同样 满足 水 印的不 可见 性 l NC 值 为0 . 7 3 4 9 , 小 于0 . 8 1 9 2 , 但仍 可 以提取 出水 印。 综上说 明加入 A mo l d 置乱后, 既提 高 了水 印的安 全性 , 又不 影响 其透 明性 , 仍 可 以提 取 出有 效水 印 。 4 . 结 论 本文着 重提 出了 图像 预处理 这一 思想 , 结 合D w暾 字水 印算法 , 利用 图像 的剪 切和 缩放 技术在MA Ⅱ. A B 7 . 哪 境 下进 行 了仿 真 , 同时给 出了嵌 入和提 取 的 源程序 便于 比较 。 从 中得 出结论 : 以增强 图像 的对 比度使 用剪 切技 术和 缩放 技术 在数 字水 印技 术的前 期准备 工作 中起 到 了较好 的作 用 。 结 合小 波变换 与 图 像混 合迭 代技术 , 提 出 了一种基 于D Wr 与混合 迭代技 术的数 字水 印算法 , 水 印 图像嵌 入 一级 小 渡分 解 后 的高 频 子带 , 在 水 印嵌入 前 ,用Am o l d置 乱 变换 对 水 印图像进 行预 处理 , 水 印安全 性得 以增 强 。 该算法 针对 数字 水 印这一 技术 将 信息 隐藏 中的混合 迭 代 思想得 以运用 , 可在 图像 中嵌入 灰度 图像水 印,很 大程 度上 提高 水 印嵌入 的容 量 , 对数 字水 印这 —领域 的算法研 究提供 了一 种新 的 思路 。 数 字水 印这一 技术 横跨 密码学 、 计 算机 科学 、 通 信等 等多 门学科 , 随着 不 断增 多的人 员对 其研究 , 在 不 同的领域 产生 了许 多研究 思路 , 这 也让 数字 水 印这 一 技术 成为 一个研 究 热点 的必 然的 发展 结果 。 参 考文献 [ 1 】 金聪. 数字 水 印理 论与 技术 . 清华 大学 出版 社 , 2 0 0 8 ( 1 ) . 作 者简介
一种基于DWT的数字水印新算法
文章编号:1008-1402(2009)05-0686-03一种基于DW T 的数字水印新算法杨春风, 张贵仓, 吕宝成, 朱贤坤(西北师范大学数学与信息科学学院,甘肃兰州730070)摘 要: 提出了基于DWT 与迭代混合的图像水印算法,在小波变换的高频子带应用迭代混合技术嵌入灰度图像作为水印.仿真实验结果表明本文所提出的水印算法对于剪切和添加噪声等攻击具有较好的抵抗能力,是迭代混合技术在数字水印方面的一个成功应用.关键词: 数字水印;小波变换;迭代混合中图分类号: TP391 文献标识码: A0 引 言近年来数字水印技术研究取得了很大进展,并且相继有一系列优秀的数字水印算法问世.然而,现有的数字水印算法大都是在载体图像中嵌入一些二进制序列或者是二值图像作为水印的,也就是说水印的嵌入容量还是一个亟待解决的问题.迭代混合技术[1]就是在视觉允许的范围内选取尽可能小的混合参数,将一幅图像隐藏在与其尽可能相像的载体图像中,以便于最大程度地保证恢复图像质量的一种技术.该技术是信息隐藏领域的一个重要理论.迭代混合与数字水印是信息隐藏领域的两个分支,都是描述将隐秘信息嵌入到伪装载体中,进而使所传送的信息不可察觉的技术.因此文献[1]中所提出的图像迭代混合思想完全可以应用到数字水印技术中,文献[2]也同样将该方法应用于图像隐藏,但是,在文献[1,2]中,都只是在在空域中对图像的简单隐藏.而变换域方法是研究图像处理的一个常用的而同时又非常有效的方法之一,常见的变换域方法主要有傅里叶变换、离散小波变换以及离散余弦变换等.本文选取离散小波变换的方法,应用迭代混合的思想进行水印算法的研究,将灰度水印图像嵌入到原始载体图像中,一方面可以达到较好的不可见性,更重要的是,大大提高了数字水印的嵌入容量.1 数字图像的迭代混合文献[1]在研究信息隐藏技术时提出了一种利用迭代混合方法进行图像隐藏的思想,并且给出了数字图像混合的定义:若F 与G 分别表示尺寸为M N 的数字图像, 为满足0! !1的任一实数,则称S = F +(1- )G(1)为数字图像F 和G 的 混合.文献[1]中也给出了迭代混合的定义:设F 与G 分别表示尺寸为M N 的数字图像,{ i |0! i !1,i =1,2,∀,n }为给定的n 个实数,对数字图像F 和G 进行 1混合得S 1= 1F +(1- 1)G(2)将数字图像F 和S 1进行 2混合,得S 2= 2F +(1- 2)S 1(3)依次进行混合得S n = n F +(1- n )S n -1(4)则数字图像S n 称为图像F 和G 的关于 i 的n 重迭代混合.2 基于D W T 与迭代混合的水印嵌入算法2.1 算法设计为了充分考虑水印的安全性,本文首先对水印图像进行Arnold 置乱变换预处理,另一方面,为了充分考虑数字水印的不可见性,本文选择在原始图像离散小波变换域的最高频子带HH1进行水印的嵌入.基于这种思想的水印嵌入模型如图1所示.收稿日期:2009-08-24基金项目:西北师范大学青年教师基金项目(NWN U-LK QN-08-3).作者简介:杨春风(1973-),女,甘肃靖远人,西北师范大学讲师,硕士.第27卷第5期 佳木斯大学学报(自然科学版) Vol.27No.5 2009 年09月 Journal of Jiamusi University (Natural Science Edition)Sep. 20092.2 水印嵌入算法Step1 对水印图像W 进行k 次Arnold 置乱变换,得到W *;Step2 对原始图像F 进行一级离散小波分解,选取最高频子带HH1作为嵌入位置;Step3 将置乱后的水印图像W *迭代n 次嵌入到高频子带HH1中;Step4 迭代嵌入水印后对小波系数进行重构,进行小波逆变换,得到嵌入水印后的图像F *.图1 水印嵌入模型2.3 水印提取算法水印的提取是嵌入的逆过程,步骤如下:Step1 对原始图像F 及含水印图像F *分别进行一级小波分解,分别提取其最高频子带HH1和HH1*.Step2 根据式(4)求出恢复表达式:S n -1=(S n - n F )(1- )(5)重复使用(5)式,代入不同的n 及 n 等参数,对HH1*子带中的水印图像进行恢复.Step3 对求出的水印图像依据置乱密钥k 进行逆置乱,最终得到水印图像W.3 实验结果与分析3.1 水印嵌入和提取实验本文以8位灰度图像Lena(512 512)作为原始载体图像,选取灰度图像ca meraman (256 256)作为水印图像,水印图像W 的Arnold 置乱次数为k =10,原始图像进行一级Haar 小波分解,迭代混合参数分别为:迭代次数n =3,迭代因子 1=0.5, 2=0.6, 3=0.7,对水印的嵌入、提取和攻击进行了测试实验.利用峰值信噪比PSNR(Peak Signal -to-Noise Ratio)作为水印图像的客观评价标准,采用归一化相关系数NC(Normalized C ross-Correla tion)作为提取水印与原始水印的相似性评价标准.实验结果如图2所示.实验中的峰值信噪比和归一化相关系数分别为PSNR=38.2121dB,NC=1.0000.3.2 攻击实验图像在使用和传输的过程中,经常会面临一些非恶意攻击,如图像在传送过程中的信道噪声、有损压缩、图像增强等;除此之外,也可能会受到一些恶意攻击,如图像剪切、涂改等操作.为了验证本文687第5期杨春风,等:一种基于DW T 的数字水印新算法算法的鲁棒性,对嵌入水印后的图像进行了一些常规的攻击方法,以进行鲁棒性评估.对含水印图像分别进行图像剪切和添加噪声等操作以后的实验结果分别如表1~2所示;其中进行剪切攻击的剪切位置如图3所示.4 总 结结合小波变换与图像的迭代混合技术,提出了一种基于DW T 与迭代混合技术的数字水印算法,算法采用一级小波分解后的高频子带进行水印图像的嵌入,在水印嵌入之前,对水印图像进行Arnold 置乱变换预处理,增加了水印的安全性.该算法将信息隐藏技术中的迭代混合思想应用于数字水印技术,可以在图像中进行灰度图像水印的嵌入,大大提高了水印的嵌入容量,为数字水印领域的算法研究提供了一种新的思路.参考文献:[1] 张贵仓,王让定,章毓晋.基于迭代混合的数字图像隐藏技术[J].计算机学报.2003,26(5):569-574.[2] 张永红,康宝生.基于迭代混合的图像隐藏技术[C].第三届中国几何设计与计算大会论文集.北京,电子工业出版社.2007.271-274.[3] 罗军辉,冯平,哈力旦#A.MA TLAB7.0在图像处理中的应用[M ].北京:机械工业出版社,2005.[4] 潘蓉,高有行.基于小波变换的图像数字水印嵌入方法[J].中国图象图形学报,2002,7(7):667-671.Digital Watermarking Algorithm Based on Wavelet Transformand Iterative BlendingY ANG Chun -feng , Z HANG Gui -cang , LU Bao -cheng , Z HU Xian -kun(College of Mathematic and Information Science ,Northwest Normal University ,Lanzhou 730070,Ch in a )Abstract : An algorithm based on DW T and iterative hybrid is proposed to embed a gray-scale ima ge as a wa termark in high frequency sub-band of wavelet transform.Simulation results show that the proposed watermarking al gorithm has a better resistance to the cutting and noise etc.,which is a successful application for the iterative hybrid technology in the digital watermark.Key words : watermarking;wavelet transform;iterative blending688佳木斯大学学报(自然科学版)2009年。
一种基于DWT的彩色水印算法
隐藏 的概 念—— 数 字水 印 (i M w t makn ) d ̄t a r rig 。数字 水 印技 e
术 是一 种 可 以在 开放 网 络环 境 下保 护 版权 和认 证 来 源 及完 整 性 的新型 技术 , 作者 的创 作信 息和个 人标 志 通过 数字 水 印系 创 统 以人所 不可感 知 的水 印形式 嵌 入在 多媒体 中 。 们无 法从 表 人 面上 感知 水印 , 只有 专用 的 检测 器或计 算机 软件 才 可 以检测 出 隐藏 的数 字水 印 。
了一 个 相对 简单 的 过程 , 助 于 电子设 备 可 以方 便 、 速 地将 借 迅 数字信 息传 输到 目的地 , 随之 而来 的副 作用 是这 些数 据 文件 或 作 品使某 些 个人 和 团体 有 可能 在 没有 得 到 作 品所 有者 的许 可 下拷 贝 和传 播有 版权 的 内容 , 涉及 司法 诉讼 、 如 政府 文 件 等信
1 . 嵌入 水 印分 量的 比例 2 在对 原始 图像 与水 印 图像进 行 色彩 空 问转 换后 , 由RG B的
蔽特性 , 将水 印嵌入 到图像 的纹 理 和边缘 等 不易 被察 觉 。离散 小 波 变换 不仅 可 以较好 地 匹 配HV ( m nV sa S s m) S Hu a i l yt 的 u e 特 性 , 且 与J E 2 0 、 E 4 而 P G 0 0 MP G 压缩 标 准 兼 容 , 用 小 波 变 换 利
代 替D T D srt C s eT a s r ) 为 变换 域数 字 水 印算 法 C ( i ee oi rnfm 成 c n o
0 引 言
随着计 算机 网络 通讯 技术 的发展 . 数据 的交 换 和传 输变成
的主要 工具 。
基于DWT数字水印源码
DWT水印源码1%DWT水印源码%完全根据DCT1修改,只为了抛砖引玉%人生在于尝试,快乐。
%有错误的地方希望大家指正%嵌入源码clcclear all;% 保存开始时间start_time=cputime;k=20;blocksize=8; % 设置块的大小% 读入原图像file_name='_lena_std_bw.bmp';cover_object=double(imread(file_name));% 原图像的行数与列数Mc=size(cover_object,1); %原图像行数Nc=size(cover_object,2); %原图像列数% 最大嵌入信息量max_message=Mc*Nc/(blocksize^2);% 读入水印图像file_name='c.bmp';message=double(imread(file_name));%%水印图像的行数与列数Mm=size(message,1); %水印行数Nm=size(message,2); %水印列数message_vector=reshape(message,1,Mm*Nm);% 检查水印信息是否过大if (Mm*Nm> max_message)error('水印太大')end%将随机数发生器的状态置为1100randn('state',1100);% 产生watermarked_image,并写入原图信息watermarked_image=cover_object;% 将图像分块嵌入% 当(2,2) > (2,3) 且message_pad(kk)=0% 当(2,2) < (2,3) 且message_pad(kk)=1%%经过分析可以得出结论:在提取水印时,如果cD1(2,2)>cD1(2,3)便是嵌入了水印的黑色像素,%%反之则是嵌入了白色像素x=1;y=1;h=waitbar(0,'嵌入水印,请等待');for (kk = 1:length(message_vector))% 对块进行DWT变换[cA1,cH1,cV1,cD1] = dwt2(cover_object(x:x+blocksize-1,y:y+blocksize-1),'haar'); a=cD1;% 如果message_pad(kk)== 0if (message_vector(kk) == 0)% 且(2,2) < (2,3) ,交换它们if (cD1(2,2) < cD1(2,3))temp=cD1(2,3);cD1(2,3)=cD1(2,2);cD1(2,2)=temp;end% 如果message_pad(kk) == 1,elseif (message_vector(kk) == 1)% 且(2,2) > (2,3) ,交换它们if (cD1(2,2) >= cD1(2,3))temp=cD1(2,3);cD1(2,3)=cD1(2,2);cD1(2,2)=temp;endend% 检查(2,2) ,(2,3)的差是否>= kif cD1(2,2) > cD1(2,3)if cD1(2,2) - cD1(2,3) < kcD1(2,2)=cD1(2,2)+(k/2);cD1(2,3)=cD1(2,3)-(k/2);endelseif cD1(2,3) - cD1(2,2) < kcD1(2,3)=cD1(2,3)+(k/2);cD1(2,2)=cD1(2,2)-(k/2);endend%IDWTwatermarked_image(x:x+blocksize-1,y:y+blocksize-1)= idwt2(cA1,cH1,cV1,cD1,'haar',[Mc,Nc]);% 移动到下一块if (x+blocksize) >= Ncx=1;y=y+blocksize;elsex=x+blocksize;endwaitbar(kk/length(message_vector),h);endclose(h);% 转换为uint8并写入dwt_watermarked.bmpwatermarked_image_uint=uint8(watermarked_image);imwrite(watermarked_image_uint,'dwt_watermarked.bmp','bmp');% 显示运行时间elapsed_time=cputime-start_time,% 计算psnr值psnr=psnr(cover_object,watermarked_image),% 显示图像figure(1)imshow(message,[]);title('水印');figure(2)subplot(1,2,1);imshow(watermarked_image,[])title('嵌入水印图像')subplot(1,2,2);imshow(cover_object,[]);title('原图');%提取源码clear all;% 保存开始时间start_time=cputime;blocksize=8; % 设置块的大小% 读入嵌入水印图像file_name='dwt_watermarked.bmp';watermarked_image=double(imread(file_name));% 嵌入水印图像的行数与列数Mw=size(watermarked_image,1); %嵌入水印图像的行数Nw=size(watermarked_image,2); %嵌入水印图像的列数% 最大嵌入信息量max_message=Mw*Nw/(blocksize^2);% 读入原始水印file_name='c.bmp';orig_watermark=double(imread(file_name));% 原始水印的行数与列数Mo=size(orig_watermark,1); %原始水印的行数No=size(orig_watermark,2); %原始水印的列数% 将图像分块提取水印x=1;y=1;h=waitbar(0,'水印提取中,请等待');for (kk = 1:max_message)% 对块进行dwt变换[cA1,cH1,cV1,cD1] = dwt2(watermarked_image(x:x+blocksize-1,y:y+blocksize-1),'haar');% 如果cD1(2,2) > cD1(3,3) 那么message_vector(kk)=0% 否则message_vector(kk)=1if cD1(2,2)>cD1(3,3)message_vector(kk)=0;elsemessage_vector(kk)=1;end% 移动到下一块if (x+blocksize) >= Mwx=1;y=y+blocksize;elsex=x+blocksize;endwaitbar(kk/max_message,h);endclose(h);% 将message重新排列message_vector=message_vector(1,1:Mo*No); %%只需前Mo*No个message=reshape(message_vector,Mo,No);% 显示运行时间elapsed_time=cputime-start_time,% 显示提取水印与原始水印figure(3)subplot(1,2,1);imshow(message,[]);title('提取水印')subplot(1,2,2);imshow(orig_watermark,[]) title('原始水印');。
一种基于DWT的数字水印新算法
一种基于DWT的数字水印新算法
杨春风;张贵仓;吕宝成;朱贤坤
【期刊名称】《佳木斯大学学报(自然科学版)》
【年(卷),期】2009(027)005
【摘要】提出了基于DWT与迭代混合的图像水印算法,在小波变换的高频子带应用迭代混合技术嵌入灰度图像作为水印.仿真实验结果表明本文所提出的水印算法对于剪切和添加噪声等攻击具有较好的抵抗能力,是迭代混合技术在数字水印方面的一个成功应用.
【总页数】3页(P686-688)
【作者】杨春风;张贵仓;吕宝成;朱贤坤
【作者单位】西北师范大学数学与信息科学学院,甘肃,兰州,730070;西北师范大学数学与信息科学学院,甘肃,兰州,730070;西北师范大学数学与信息科学学院,甘肃,兰州,730070;西北师范大学数学与信息科学学院,甘肃,兰州,730070
【正文语种】中文
【中图分类】TP391
【相关文献】
1.基于DWT域的混沌置乱二值图像数字水印新算法 [J], 朱从旭;陈志刚
2.一种基于DWT的数字水印新算法 [J], 杨春风;张贵仓;吕宝成;朱贤坤
3.一种基于CNN和Logistic的双混沌DWT-SVD数字水印新算法 [J], 同贞;李国东
4.一种基于最优块的DWT-DCT-SVD的图像数字水印算法 [J], 黄根岭;刘成;黄海
于
5.一种新的DWT域彩色图像数字水印算法及其实现 [J], 李孟涛;孙刘杰
因版权原因,仅展示原文概要,查看原文内容请购买。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
function dwtg1clear all;clc;%保存开始时间start_time=cputime;figure(1);%读出原始图像subplot(1,3,1);input=imread('2010101405231310.bmp');imshow(input);title('原始图像');%读出水印subplot(1,3,2);water=imread('华侨大学256bmp.bmp');imshow(water,[]);title('水印');%三色分离input=double(input);water=double(water);inputr=input(:,:,1);waterr=water(:,:,1);inputg=input(:,:,2);waterg=water(:,:,2);inputb=double(input(:,:,3));waterb=double(water(:,:,3));%系数r大.增加鲁棒性,r小增加透明性r=0.06;%水印R的分解[Cwr,Swr]=WAVEDEC2(waterr,1,'haar');%图像R的分解[Cr,Sr]=WAVEDEC2(inputr,2,'haar');%水印的嵌入Cr(1:size(Cwr,2)/16)=...Cr(1:size(Cwr,2)/16)+r*Cwr(1:size(Cwr,2)/16);k=0;while k<=size(Cr,2)/size(Cwr,2)-1Cr(1+size(Cr,2)/4+k*size(Cwr,2)/4:size(Cr,2)/4+...(k+1)*size(Cwr,2)/4)=Cr(1+size(Cr,2)/4+...k*size(Cwr,2)/4:size(Cr,2)/4+(k+1)*size(Cwr,2)/4+...r*Cwr(1+size(Cwr,2)/4:size(Cwr,2)/2));Cr(1+size(Cr,2)/2+k*size(Cwr,2)/4:size(Cr,2)/2+...(k+1)*size(Cwr,2)/4)=Cr(1+size(Cr,2)/2+...k*size(Cwr,2)/4:size(Cr,2)/2+(k+1)*size(Cwr,2)/4+...r*Cwr(1+size(Cwr,2)/2:3*size(Cwr,2)/4));Cr(1+3*size(Cr,2)/4+k*size(Cwr,2)/4:3*size(Cr,2)/4+...(k+1)*size(Cwr,2)/4)=Cr(1+3*size(Cr,2)/4+...k*size(Cwr,2)/4:3*size(Cr,2)/4+(k+1)*size(Cwr,2)/4+...r*Cwr(1+3*size(Cwr,2)/4:size(Cwr,2)));k=k+1;end;Cr(1:size(Cwr,2)/4)=Cr(1:size(Cwr,2)/4)+r*Cwr(1:size(Cwr,2)/4);g=0.03;%水印G的分解[Cwg,Swg]=WAVEDEC2(waterg,1,'haar');%图像G的分解[Cg,Sg]=WAVEDEC2(inputg,2,'haar');%水印的嵌入Cg(1:size(Cwg,2)/16)=...Cg(1:size(Cwg,2)/16)+g*Cwg(1:size(Cwg,2)/16);k=0;while k<=size(Cg,2)/size(Cwg,2)-1Cg(1+size(Cg,2)/4+k*size(Cwg,2)/4:size(Cg,2)/4+...(k+1)*size(Cwg,2)/4)=Cg(1+size(Cg,2)/4+...k*size(Cwg,2)/4:size(Cg,2)/4+(k+1)*size(Cwg,2)/4+...g*Cwg(1+size(Cwg,2)/4:size(Cwg,2)/2));Cg(1+size(Cg,2)/2+k*size(Cwg,2)/4:size(Cg,2)/2+...(k+1)*size(Cwg,2)/4)=Cg(1+size(Cg,2)/2+...k*size(Cwg,2)/4:size(Cg,2)/2+(k+1)*size(Cwg,2)/4+...g*Cwg(1+size(Cwg,2)/2:3*size(Cwg,2)/4));Cg(1+3*size(Cg,2)/4+k*size(Cwg,2)/4:3*size(Cg,2)/4+...(k+1)*size(Cwg,2)/4)=Cg(1+3*size(Cg,2)/4+...k*size(Cwg,2)/4:3*size(Cg,2)/4+(k+1)*size(Cwg,2)/4+...g*Cwg(1+3*size(Cwg,2)/4:size(Cwg,2)));k=k+1;end;Cg(1:size(Cwg,2)/4)=Cg(1:size(Cwg,2)/4)+g*Cwg(1:size(Cwg,2)/4); b=0.12;%水印B的分解[Cwb,Swb]=WAVEDEC2(waterb,1,'haar');%图像B的分解[Cb,Sb]=WAVEDEC2(inputb,2,'haar');%水印的嵌入Cb(1:size(Cwb,2)/16)=...Cb(1:size(Cwb,2)/16)+b*Cwb(1:size(Cwb,2)/16);k=0;while k<=size(Cb,2)/size(Cwb,2)-1Cb(1+size(Cb,2)/4+k*size(Cwb,2)/4:size(Cb,2)/4+...(k+1)*size(Cwb,2)/4)=Cb(1+size(Cb,2)/4+...k*size(Cwb,2)/4:size(Cb,2)/4+(k+1)*size(Cwb,2)/4+...b*Cwb(1+size(Cwb,2)/4:size(Cwb,2)/2));Cb(1+size(Cb,2)/2+k*size(Cwb,2)/4:size(Cb,2)/2+...(k+1)*size(Cwb,2)/4)=Cb(1+size(Cb,2)/2+...k*size(Cwb,2)/4:size(Cb,2)/2+(k+1)*size(Cwb,2)/4+...b*Cwb(1+size(Cwb,2)/2:3*size(Cwb,2)/4));Cb(1+3*size(Cb,2)/4+k*size(Cwb,2)/4:3*size(Cb,2)/4+...(k+1)*size(Cwb,2)/4)=Cb(1+3*size(Cb,2)/4+...k*size(Cwb,2)/4:3*size(Cb,2)/4+(k+1)*size(Cwb,2)/4+...b*Cwb(1+3*size(Cwb,2)/4:size(Cwb,2)));k=k+1;end;Cb(1:size(Cwb,2)/4)=Cb(1:size(Cwb,2)/4)+b*Cwb(1:size(Cwb,2)/4); %图像的重构inputr=WAVEREC2(Cr,Sr,'haar');inputg=WAVEREC2(Cg,Sg,'haar');inputb=WAVEREC2(Cb,Sb,'haar');%三色的叠加temp=size(inputr);pic=zeros(temp(1),temp(2),3);for i=1:temp(1);for j=1:temp(2);pic(i,j,1)=inputr(i,j);pic(i,j,2)=inputg(i,j);pic(i,j,3)=inputb(i,j);end;end;output=uint8(round(pic));%转化为unit8watermarked_image_uint8=uint8(output);imwrite(watermarked_image_uint8,'watermarked1.bmp','bmp');%显示时间elapsed_time=cputime-start_time,%输出结果subplot(1,3,3);imshow(watermarked_image_uint8);title('水印图像');%以下是水印提取算法clear all;clc;%保存时间start_time=cputime;%读出原始图像subplot(1,2,1);input=imread('2010101405231310.bmp');imshow(input);title('原始图像');%读出水印图像subplot(1,2,2);watermarked_image=imread('watermarked1.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的小波系数for k=0:3whr(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);endwhr=(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:3whg(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);endwhg=(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的小波系数for k=0:3whb(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);endwhb=(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);endendoutput=uint8(round(pic));%转化为uint8watermark_image_uint8=uint8(output);imwrite(watermark_image_uint8,'华侨大学.bmp','bmp');figure(2);subplot(1,2,1);imshow('华侨大学256bmp.bmp');title('原始水印');subplot(1,2,2);imshow(watermark_image_uint8);title('提取出的水印');这个是彩色图像加彩色水印的,怎么弄成彩色图像嵌入灰度水印啊。