• 大小: 2KB
    文件类型: .m
    金币: 1
    下载: 0 次
    发布日期: 2021-05-25
  • 语言: Matlab
  • 标签: dct  

资源简介

在matlab中,基于离散余弦变换的音频水印

资源截图

代码片段和文件信息

%水印嵌入*********************************************************************************************(1)
%1同步信号,在音频起始点嵌入10个幅值相同的点
[xfsnbits]=wavread(‘E:\wave1\0000.wav‘);
lenx=length(x);
w=wavread(‘E:\wave1\0000.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)
   [x11index]=sort(x1);
   j=fix(i/k)+1;   
   for t=1:3
      %4修改中频系数
      x1(index(t+1))=x11(t+1)*(1+a*w(j));
      %纪录被改变的系数和序号
      recordx(jt)=x11(t+1);
      recordi(jt)=index(t+1);
      %5离散余弦逆变换
      x(i:i+k-1)=idct(x1);
   end
end
%6合并得到嵌入水印后的音频信号
x=[y;x];
%将嵌入水印后的音频信号保存
wavwrite(xfsnbits‘E:\wave1\00000.wav‘);
%水印提取*********************************************************************************************(2)

评论

共有 条评论