实例介绍
【实例简介】基于DWT的数字音频水印MATLAB程序,这是一个经典的信息隐藏算法。
【实例截图】
【核心代码】
利用logistic映射产生混沌序列x(n) a=3.571 x{1}=0.2 while 0<x{n}<1 x{n 1}=a.*x{n}.*(1-x{n}) n=n 1 end disp(x) 结果n=102 再对x(n)进行量化得0-1序列 于明文序列y(n)进行模2加,得到密文序列。 采样函数:linspace(0,0.8906,50) 先将47168bit的宿主音频等步长分段,分为1000段,然后混沌序列选择其中的102段,对每段进行3及小波分解,挑选出绝对值最大的系数,运用嵌入公式。 进行3及小波分解及重构图象的程序 问题:如何量化,进行模2加。 二进制如何按位进行加法。 %%%%%%%%%%%%%%%%%%%%生成水印程序 %读取声音文件 FILE='D:\audio\in\1.wav'; [y,Fs,bits]=wavread(FILE); %绘制出原始声音信号图 figure(1); subplot(3,1,1);plot(y); title( %用db4小波对读入的声音文件进行3级小波分解 [c,l]=wavedec(y,3,'db4'); %提取3级小波分解的低频系数和高频系数 ca3=appcoef(c,l,'db4',3); cd3=detcoef(c,l,3); cd2=detcoef(c,l,2); cd1=detcoef(c,l,1); x=ca3; lx=length(x); subplot(3,1,2);plot(x); s=max(abs(x))*0.2; i=find(abs(x)>s);%插入位置 lx=length(x(i)); %产生水印信号,sin mark=[0.001:0.001:7.901]; mm=[0.01:0.01:79.01]; mark=sin(mm); randn('seed',10); mark=randn(1,lx); figure(2); subplot(3,1,1);plot(mark); ss=mark; rr=ss*0.02; %水印信号嵌入 x(i)=x(i).*(1 rr'); %小波重构,生成加入了水印信号的声音信号 c1=[x',cd3',cd2',cd1']; s1=waverec(c1,l,'db4'); figure(1); subplot(3,1,2); plot(s1); whos('s1'); disp(''); %把加入了水印信号的声音作为sample2.wav保存 file1='sample2.wav'; wavwrite(s1,Fs,bits,file1); figure(1); subplot(3,1,3); diff1=s1-y'; plot(diff1); %%%%%%%%%%%%%%%%%%%%%水印恢复程序 %读取原始声音信号 FILE='s00.wav'; [y,Fs,bits]=wavread(FILE); %用db4小波对读入的声音文件进行3级小波分解 [c,l]=wavedec(y,3,'db4'); %提取3级小波分解的低频系数和高频系数 ca3=appcoef(c,l,'db4',3); cd3=detcoef(c,l,3); cd2=detcoef(c,l,2); cd1=detcoef(c,l,1); %读取含有水印的信号 FILE1='sample2.wav'; [y1,Fs1,bits1]=wavread(FILE1); %用db4小波对读入的含有水印的声音文件进行3级小波分解 [c1,l1]=wavedec(y1,3,'db4'); %提取3级小波分解的低频系数和高频系数 ca31=appcoef(c1,l1,'db4',3); cd31=detcoef(c1,l1,3); cd21=detcoef(c1,l1,2); cd11=detcoef(c1,l1,1); x=ca3;x1=ca31; lx=length(x);lx1=length(x1); s=max(abs(x))*0.2; i=find(abs(x)>s); lx=length(x(i)); z(i)=x1(i)-x(i); mark1=z(i)./x(i)'; mark1=mark1/0.02; figure(2); subplot(3,1,2); plot(mark1); diff=mark1-mark; figure(2); subplot(3,1,3); plot(diff); %%%%%%%%%%%%%%%%%%%压缩攻击 FILE='sam96.wav'; [y7,Fs,bits]=wavread(FILE); [c1,l1]=wavedec(y7,3,'db4'); %提取3级小波分解的低频系数和高频系数 ca31=appcoef(c1,l1,'db4',3); cd31=detcoef(c1,l1,3); cd21=detcoef(c1,l1,2); cd11=detcoef(c1,l1,1); x=ca3;x1=ca31; lx=length(x);lx1=length(x1); s=max(abs(x))*0.2; i=find(abs(x)>s); lx=length(x(i)); z(i)=x1(i)-x(i); mark1=z(i)./x(i)'; mark1=mark1/0.02; figure(3); subplot(3,1,1); plot(mark1); %axis([0 8000 -1 1]); FILE='sam128.wav'; [y7,Fs,bits]=wavread(FILE); [c1,l1]=wavedec(y7,3,'db4'); %提取3级小波分解的低频系数和高频系数 ca31=appcoef(c1,l1,'db4',3); cd31=detcoef(c1,l1,3); cd21=detcoef(c1,l1,2); cd11=detcoef(c1,l1,1); x=ca3;x1=ca31; lx=length(x);lx1=length(x1); s=max(abs(x))*0.2; i=find(abs(x)>s); lx=length(x(i)); z(i)=x1(i)-x(i); mark1=z(i)./x(i)'; mark1=mark1/0.02; figure(3); subplot(3,1,2); plot(mark1); axis([0 8000 -1 1]); FILE='sam160.wav'; [y7,Fs,bits]=wavread(FILE); [c1,l1]=wavedec(y7,3,'db4'); %提取3级小波分解的低频系数和高频系数 ca31=appcoef(c1,l1,'db4',3); cd31=detcoef(c1,l1,3); cd21=detcoef(c1,l1,2); cd11=detcoef(c1,l1,1); x=ca3;x1=ca31; lx=length(x);lx1=length(x1); s=max(abs(x))*0.2; i=find(abs(x)>s); lx=length(x(i)); z(i)=x1(i)-x(i); mark1=z(i)./x(i)'; mark1=mark1/0.02; figure(3); subplot(3,1,3); plot(mark1); axis([0 8000 -1 1]); %%%%%%%%%%%%%%%%%%%%%%%%%%%低通滤波 [b,a]=butter(10,10000/Fs); y2=y1; y5=filtfilt(b,a,y2); figure(4); freqz(b,a,128,10000) figure(5); subplot(3,1,1) plot(y5); subplot(3,1,2) plot(y); subplot(3,1,3) plot(y-y5); file1='sample3.wav'; wavwrite(y5,Fs,bits,file1); FILE1='sample3.wav'; [y5,Fs1,bits1]=wavread(FILE1); %用db4小波对读入的含有水印的声音文件进行3级小波分解 [c1,l1]=wavedec(y5,3,'db4'); %提取3级小波分解的低频系数和高频系数 ca31=appcoef(c1,l1,'db4',3); cd31=detcoef(c1,l1,3); cd21=detcoef(c1,l1,2); cd11=detcoef(c1,l1,1); x=ca3;x1=ca31; lx=length(x);lx1=length(x1); s=max(abs(x))*0.2; i=find(abs(x)>s); lx=length(x(i)); z(i)=x1(i)-x(i); mark1=z(i)./x(i)'; mark1=mark1/0.02; figure(4); subplot(2,1,1); plot(mark1); %%%%%%%%%%%%%%%%%%%%%产生随机信号作为噪声信号 noise0=randn(size(y)); y3=y1; y3=y3 noise0*200; %用db4小波对读入的含有水印的声音文件进行3级小波分解 [c3,l3]=wavedec(y1,3,'db4'); %提取3级小波分解的低频系数和高频系数 ca32=appcoef(c3,l3,'db4',3); cd32=detcoef(c3,l3,3); cd22=detcoef(c3,l3,2); cd12=detcoef(c3,l3,1); x=ca3;x1=ca32; lx=length(x);lx1=length(x1); s=max(abs(x))*0.2; i=find(abs(x)>s); lx=length(x(i)); z(i)=x1(i)-x(i); mark3=z(i)./x(i)'; mark3=mark3/0.02; figure(4); subplot(2,1,2); plot(mark3); nbsp; %%%%%%%%%%%%%%%%%%%%%%%%重采样 fs1=Fs*0.5; wavwrite(y1,fs1,bits,'ss.wav'); [y6,fs2,bits]=wavread('ss.wav'); %用db4小波对读入的含有水印的声音文件进行3级小波分解 [c4,l4]=wavedec(y6',3,'db4'); %提取3级小波分解的低频系数和高频系数 ca33=appcoef(c4,l4,'db4',3); cd33=detcoef(c4,l4,3); cd23=detcoef(c4,l4,2); cd13=detcoef(c4,l4,1); x=ca3;x1=ca33; lx=length(x);lx1=length(x1); s=max(abs(x))*0.2; i=find(abs(x)>s); lx=length(x(i)); z(i)=x1(i)-x(i)'; mark4=z(i)./x(i)'; mark4=mark4/0.02; figure(5); subplot(2,1,1); plot(mark4); axis([0 8000 -1 1]); fs1=Fs*0.25; wavwrite(y1,fs1,bits,'ss.wav'); [y6,fs2,bits]=wavread('ss.wav'); %用db4小波对读入的含有水印的声音文件进行3级小波分解 [c4,l4]=wavedec(y6',3,'db4'); %提取3级小波分解的低频系数和高频系数 ca33=appcoef(c4,l4,'db4',3); cd33=detcoef(c4,l4,3); cd23=detcoef(c4,l4,2); cd13=detcoef(c4,l4,1); x=ca3;x1=ca33; lx=length(x);lx1=length(x1); s=max(abs(x))*0.2; i=find(abs(x)>s); lx=length(x(i)); z(i)=x1(i)-x(i)'; mark4=z(i)./x(i)'; mark4=mark4/0.02; figure(5); subplot(2,1,2); plot(mark4); axis([0 8000 -1 1]); %%%%%%%%%%%%%%%%%%%%%%%%信号裁剪 llx=length(y1); llx=fix(llx*0.75); i=[1:llx]; y4(i)=y1(i); file1='sample4.wav'; wavwrite(y4,Fs,bits,file1); i=[llx 1:length(y1)]; y4(i)=y(i); %用db4小波对读入的含有水印的声音文件进行3级小波分解 [c4,l4]=wavedec(y4',3,'db4'); %提取3级小波分解的低频系数和高频系数 ca33=appcoef(c4,l4,'db4',3); cd33=detcoef(c4,l4,3); cd23=detcoef(c4,l4,2); cd13=detcoef(c4,l4,1); x=ca3;x1=ca33; lx=length(x);lx1=length(x1); s=max(abs(x))*0.2; i=find(abs(x)>s); lx=length(x(i)); z(i)=x1(i)-x(i)'; mark4=z(i)./x(i)'; mark4=mark4/0.02; figure(6); subplot(2,1,1); plot(mark4);
好例子网口号:伸出你的我的手 — 分享!
小贴士
感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。
- 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
- 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
- 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
- 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。
关于好例子网
本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明
网友评论
我要评论