⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 watermarking_dct_matlab.txt

📁 一种DCT变换的数字音频水印技术
💻 TXT
字号:
%水印嵌入*********************************************************************************************(1)
%1同步信号,在音频起始点嵌入10个幅值相同的点
[x,fs,nbits]=wavread('E:\wave1\0000.wav');
lenx=length(x);
w=wavread('E:\wave1\0001.wav');
y=[0.02; 0.02 ;0.02; 0.02 ;0.02; 0.02 ;0.02; 0.02 ;0.02 ;0.02];
%input m
m=1000;
k=fix(lenx/10/m)*10;
w1=w(1:m);
%input a
a=50;
%2分段处理,
for i=1:k:m*k
  %3离散余弦变换
   x1=dct(x(i:i+k-1));
  %排序找出中频系数mid 用公式mid'=mid(1+a*w)
  [x11,index]=sort(x1);
  j=fix(i/k)+1;   
  for t=1:3
     %4修改中频系数
     x1(index(t+1))=x11(t+1)*(1+a*w(j));
     %纪录被改变的系数和序号
     recordx(j,t)=x11(t+1);
     recordi(j,t)=index(t+1);
     %5离散余弦逆变换
     x(i:i+k-1)=idct(x1);
  end
end
%6合并得到嵌入水印后的音频信号
x=[y;x];
%将嵌入水印后的音频信号保存
wavwrite(x,fs,nbits,'E:\wave1\00000.wav');
%水印提取*********************************************************************************************(2)
%1同步检测
[x2,fs,nbits]=wavread('E:\wave1\00000.wav');
lenxx=length(x2)-m*k;
i=1;
%input b
b=0.001;
while and(or(or(abs(x2(i)-0.02)>b,abs(x2(i+1)-0.02)>b),abs(x2(i+2)-0.02)>b),i<lenxx)
   i=i+1;
end
while  and(abs(x2(i+3)-0.02)<b, i<=lenxx)
  i=i+1;
end
%判断是否有同步检测信号
if i>lenxx
 error('没有同步检测信号 ');
end
%2含有水印的音频信号做分段处理
x3=x2((i+3):(i+2+m*k));
length(x3)
%3原始音频信号做分段处理
for i=1:k:m*k  
%4含有水印的音频信号做离散余弦变换
  x4=dct(x3(i:i+k-1));
  j=fix(i/k)+1;
%5水印提取
  w21=(x4(recordi(j,1))/recordx(j,1)-1)/a;
  w22=(x4(recordi(j,2))/recordx(j,2)-1)/a;
  w23=(x4(recordi(j,3))/recordx(j,3)-1)/a;
  w2(j)=(w21+w22+w23)/3;
end
%6求相关系数
cox1=(w1'*w2')/(norm(w1)*norm(w2))
%水印攻击*********************************************************************************************(3)
%1加噪音,    转(2)
%2滤波   ,  转(2)
%3剪切,     转(2)
%4重量化,   转(2)
%5重采样,   转(2)
%6MPEG压缩,转(2)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -