-1-基于Matlab的数字音频水印量化算法【Abstract】Digitalwatermarkingtechnologyisahottopicinrecentyears,copyrightprotectioninthefieldofaudio,woodpaper,basedonwavelettransformanddiscretecosinetransformdigitalaudiowatermarking,theextractionalgorithmMatlab7.0implementation.Experimentsshowthatthealgorithmforresampling,quantization,andMP3compressionattackshaverobust.Keywords:wavelettransform:DCT:Digitalwatermarking:Matlab【摘要】:数字水印技术是近年来音频版权保护领域的一个热点,木文提出了一种基于小波变换和离散余弦变换的数字音频水印嵌入、提取算法的Matlab实现。实验表明,该算法对于重采样,重量化,及MP3压缩等攻击都具有较好的鲁棒性。【关键词】:小波变换:离散余弦变换:数字水印:Matlab一、IntroductionAsaneffectivemeansofdigitalmediaworksofintellectualpropertyprotection,digitalwatermarkinghasbeenwidespreadconcern,andhasbecomeahotinternationalacademicresearch.Thedigitalwatermarkingtechnologyrelatedtotheamountofpeopleimage,audioprocessingalgorithms,mathematicaltools,theamountoftimepeoplespendinprogrammingandpreparationofthealgorithmIfonlyusingprogrammingtoolsprovidedHingfunctionstoachieve.Therefore,ahigh-performancescientificandengineeringcalculationsoftwareisnecessary.Matlabiscurrentlyverypopularindomesticandforeignengineeringdesignandsystemsimulationsoftwarepackages.ItisTheMathWorksintroducedin1982ahigh-performancenumericalcomputationandvisualizationsoftware'whichprovidesimageprocessingtoolbox,waveletanalysistoolbox,digitalsignalprocessingtoolboxwritedigitalwatermarkingtechnologyisaverygoodchoice.Programswrittenusingtheabovealgorithm,onlyafewdozenstatementscanachieveadigitalwatermark.IftheseprocedureswritteninClanguageorotherhigh-levellanguageprogramatleastmorethan100lines.Muwenfordigitalaudiowatermarkingitself.一、引言作为数字媒体作品知识产权保护的一种有效手段,数字水印得到了广泛关注,并己成为国际学术界研究的一个热点。而数字水印技术涉及到人量图像,音频处理算法、数学计算工具等,如果仅仅采用兴通编程工具所提供的功能来实现将花费人量的时间在上述算法的编程及调制上。因此,采用一种高性能的科学与工程计算软件是很有必要的。Matlab是当前在国内外十分流行的工程设计和系统仿真软件包。它是MathWorks公司于1982年推出的一套高性能的数值计算和可视化软件‘它提供的图像处理工具箱、小波分析工具箱、数字信写处-2-理工具箱是实现数字水印技术非常好的选择。利用上述算法编写的程序,只需几十条语句便可实现数字水印。而这些程序如果用C语言或其他高级语言编写程序至少在100行以上。木文针对数字音频水印本身的。二、基于DWT的数字音频水印的基本原理木文以直观丰富的二值图像作为水印信写。将宿主音频根据图像水印的人小进行均匀分段,然后对每一段音频进行H层小波变换{DWT)后取其部分低频系数并进行离散余弦变换(DCT)得到部分低中频系数f,将水印信息量化嵌入其中f',得到表示量化处理后的小波系数,P表示量化间隔,则量化修改系数嵌入数字水印过程如下:二、TheprinciplesbasedonthedigitalaudiowatermarkingDWTTakingthevisuallyrichwoodbinaryimageaswatermarktowrite.Theimagewillhostanaudiowatermarkuniformsmallsegmentofpeople,theneachsectionaudiolevelwavelettransformH{DWT)whicheverpartafterlowfrequencycoefficientsandthediscretecosinetransform(DCT)togivepartofthelowfrequencycoefficientsf,whereinwatermarkinformationisembeddedquantizationf',toobtainquantizedwaveletcoefficientsrepresentedin,Prepresentsthequantizationinterval,themodificationcoefficientquantizeddigitalwatermarkembeddingprocessisasfollows:-3-当水印信息为1时,量化为以之最接近的A类的重点,反之,量化为与之最接近的B类的中点。(每个音频数据段将嵌入二值水印图像的一行水印信息)。然后进行离散余弦反变换和小波变换,得到含有水印的一段音频。重复以上步骤并重组音频得到含有水印的音频。数字水印的具体嵌入过程如图1所示3、水印嵌入算法的MATLAB实现1)读取原始音频music.wav到一维数组I,利用length求出音频数组I的长度;I=wavread(‘D:\music.wav’);Len_wav=length(I);2)读取黑白水印图像到二维数组w,同时利用size求出二维数组的长度与宽度。W=imread(‘D:\flower.jpg’);[m,n]=size(w);3)将原始音频I根据水印图像的高度进行均匀分段,并对段长进行取下整操作。len_seg=floor(len_wav/m);4)对每一段音频进行小波基为”dbl的二层小波变换,分别得到低频系数和高频系数。设一段音频段为BLOCK.[c,l]=wavedec(BLOCK,3,'db1');%提取3级小波分解的低频系数和高频系数:ca3=appcoef(c,l,'db1',3);cd3=detcoef(c,1,3);cd2=detcoef(c,1,2);cdl=detcoef(c,l,l);5)对低频系数进行DCl'变换ca3=dct(ca3);6)选取DCT系数中的低中频系数进行水印嵌入,文本采取每一段音频嵌入一行水-4-印的策略,应用此举,无需将二维的水印转换为一维,提高了程序的效率。其中i表示第i段音频中嵌入第i行水印信息。forj=l:ntemp=floor((ca3(j))/D);if(mod(temp,2)==w(i,j))ca3(j)=temp*D+D/2;elseca3(j)=temp*D-D/2;endend%其中D为量化系数.木文取值0.035。7)进行反DCT变换ca3=idct(ca3);8)将小波高频系数cd1,cd2,cd3与含有水印的小波低频系数ca3进行逆小波变换,得到含有水印的音频段。c1=[ca3',cd3',cd2',cd1'];s1=waverec(c1,l,'db1');9)将所得到的音频段,重组为数组I1,得到含有水印的音频,并保存为音频文件wavetext.wav。wavwrite(I1,44100,'wavetext.wav');4.水印提取算法的MATLAB实现水印的提取算法与嵌入算法过程相似:1)读取含有水印的音频wavetext.wav到一维数组I,利用length求出音频数组I的长度;I=wavread('wavetext.wav');len_wav=length(I);、2)由于在对音频进行分段的过程中,仍需要水印的大小信息,所以提取过程仍需要读取黑白水印图像到二维数组w,同时利用size求出二维数组的长度与宽度。w=imread('flower.bmp');[m,n]=size(w);3)将含有水印的音频I根据水印图像的高度进行均匀分段,并对段长进行下取整操作。Len_seg=floor(len_wav/m);4)对每一段音频进行小波基为“dbl”的三层小波变换,由于在提取水印过程中,我们只关心含有水印的低频系数ca3,因此在提取过程中,只计算低频系数。设一段音频段为block。[c,l]=wavedec(BLOCK,3,’dbl’);Ca3=appcoef(c,l,’dbl’,3);-5-5)对低频系数进行DCT变换Ca3=dct(ca3);6)提取第i段音频内多含的一行水印信息。Forj=1:nWl(i,j)=mod(floor(ca3(j)/D),2);End7)循环执行,得到水印数组w1,并显示其结果Imshow(w1);5.性能分析为了消除观测者的经验,身体条件,实验条件等主观因素的影响,须采用归一化的相关系数(NormalizedCross–Correlation,NC),对提取出的水印和原始水印的相似性进行定量评价,其定义为其中,w为原始水印图像,w1为提取出的水印图像。如果该归一化相关系数NC超过某一阀值,我们就判定待测的音频信号中存在此二值水印图像,否则不含水印。利用matlab函数实现性能分析:FunctionA=nc(W,W1)X=sum(W(:),*W1(:)).;Y=sum(W(:)*W(:));Z=sum(W1(:).*W1(:);A=x/(sqrt(z));6.仿真实验本文数字音频算法的高效性,以下分别给出了实验结果。实验中,所选的原始音频均是采样频率为44.1kHz,分别率为16比特,长度为10秒的单声道数字音频信号(波形分别如图2-(1),2-(2)所示)。数字水印采用了64*64的二值图像。小波变换采用了常见的Daubechies-1小波基。小波变换级别数寻去为H=3。由于采用的水印在感觉上市可视的,所以提取的水印信息很容易辨别。通过如下语句显示音频波形:I=wavread(‘D:music.wav’);I1=wavread(‘wavetext.wav’);Subplot(2,1,1);Plot(I,’k’);Xlabel(‘(1)originalaudio’);Subplot(2,1,2);Plot(I1,’k’);Xlabel(‘(2)watermarkedaudio’);-6-为了检测算法的鲁棒性,仿真实验分别对本文算法和含水印音频信号wavetext.wav进行了一系列攻击,包括:重新采样,重新量化,高斯噪声干扰,低通滤波和MP3压缩。其中⑴重新采样:将音频信号采样频率下降为22.05kHz,再还