?? aduiowatermark.m
字號:
clc
clear all
close all
m=wavread('MM03.WAV');%讀取音頻文件m.wav
L=size(m);
p=imread('black.jpg');
pw=im2bw(p);%將原始灰度圖像轉換為二值圖像
imshow(pw);%顯示該二值圖像
[m2,m1]=size(pw);
% m1=90;
% m2=129;%統計水印二值圖像的行列數據位數
%音頻信號分段處理, 用于嵌入水印的音頻數據部分等分成(m1*m2)個音頻數據段
n=10;
length=m1*m2*n;
i=1:length;
j=[1];
me=m(i,j);
i=length+1:L;
mr=m(i,j);
k=1;
B=cell(m1*m2,1);%建立元胞B
while(k<m1*m2*n)
i=k:(k+9);
s=(k+9)/10;
B{s,1}=me(i,j);
k=k+10;
end
%水印二值圖像(pw)降維處理
C=reshape(pw,1,m1*m2);
%將水印嵌入數字音頻信號中
D=cell(m1*m2,1);
for i=1:m1*m2
D{i,1}=dct(B{i,1});%離散余弦變換
end
E=cell(m1*m2,1);
E=D;
for i=1:m1*m2
E{i,1}(3)=D{i,1}(3)*(1+2*C(i));%加入水印的函數
end
F=cell(m1*m2,1);
for i=1:m1*m2
F{i,1}=idct(E{i,1}); %離散余弦逆變換
end
G=[F{1,1};F{2,1}];
for i=3:m1*m2
G=[G;F{i,1}];
end
G=[G;mr];%獲得嵌入水印的數字音頻信號
%采用適當帶通濾波顯示加水印前后音頻信號的波形圖比較,并回放比較聲音質量
N=5;wc=[0.3,0.6];
[b,a]=butter(N,wc);%適當的帶通濾波處理
figure,subplot(2,1,1);plot(m);title(' 加水印前音頻信號的波形');
N=5;wc=[0.3,0.6];
[b,a]=butter(N,wc);
subplot(2,1,2);plot(G);title(' 加水印后音頻信號的波形');
% wavplay(m);%回放原始數字音頻信號
% sound(G);%回放帶水印的數字音頻信號
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -