📄 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 + -