数字音频水印MATLAB程序
利用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');