資源簡介
在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)
- 上一篇:GM11模型matlab程序
- 下一篇:HMM的Matlab代碼
評論
共有 條評論