数字音频水印MATLAB程序

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

利用logistic映射产生混沌序列x(n)

a=3.571

x{1}=0.2

while 0

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);

相关文档
最新文档