在好例子网,分享、交流、成长!
您当前所在位置:首页Others 开发实例一般编程问题 → 基于DWT的数字音频水印MATLAB程序

基于DWT的数字音频水印MATLAB程序

一般编程问题

下载此实例
  • 开发语言:Others
  • 实例大小:0.05M
  • 下载次数:11
  • 浏览次数:202
  • 发布时间:2019-03-31
  • 实例类别:一般编程问题
  • 发 布 人:crazycode
  • 文件格式:.doc
  • 所需积分:2
 相关标签: 水印 音频 数字 MATLAB

实例介绍

【实例简介】基于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]);
&nbsp;
%%%%%%%%%%%%%%%%%%%%%%%%%%%低通滤波
[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);

实例下载地址

网友评论

发表评论

(您的评论需要经过审核才能显示)

查看所有0条评论>>

小贴士

感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。

  • 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
  • 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
  • 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
  • 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。

关于好例子网

本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明

;
报警