📄 water_in4.m
字号:
clear all
%水印嵌入程序
%读取掩护媒体
% audio_name='D:\sound\钢琴曲 - 少女的祈祷.wav';
% audio_name='D:\sound\大地.wav';
audio_name='D:\sound\001.wav';
[y,fs,br]=wavread(audio_name);
%若掩护媒体为双声道则取第一个声道,在audio中嵌入水印
audio=y(:,1);
audio_length=size(audio,1);%掩护媒体长度
audio_new=audio;%audio_new为嵌入水印后的音频媒体
image_read;%读取水印图象
sect=1024;%将掩护媒体分帧的每帧长度为1024
k=10000;%起始点
w=1;%w为水印标号
s=0.005;%嵌入强度
aa=[1 0 0 0 1 0 0 1 1 0 1 0 1 1 1];%扩频伪随机序列,长度15
aa=2*aa-1;%将aa取值变为1或-1
N=1;%N为嵌入位数
while k<=audio_length&w<=water_mark_length
for i=1:sect
audio1(i)=audio(k,1);
k=k+1;
end
power=sum(audio1.^2);
if power>0.02%只在能量大于0.02的帧嵌入水印
for i=1:N
water_mark1(i)=water_mark(w);
w=w+1;
end
a=dct(audio1);
%水印嵌入
if water_mark1==1
a(1:4:57)=a(1:4:57)+aa*s;
else
a(1:4:57)=a(1:4:57)-aa*s;
end
iaudio1=idct(a);
xx=1;
for iii=k-sect:k-1
audio_new(iii)=iaudio1(xx);
xx=xx+1;
end
end
end
%嵌入水印的音频文件名
% audio_new_name='D:\sound\钢琴曲 - 少女的祈祷_new.wav';
% audio_new_name='D:\sound\大地_new.wav';
audio_new_name='D:\sound\001_new555.wav';
wavwrite(audio_new(1:k+40000),fs,audio_new_name);
%画时域图
% figure(1)
% subplot(2,1,1)
% plot(audio(70000:k))
% title('原始信号')
% subplot(2,1,2)
% plot(audio_new(70000:k))
% title('嵌入水印信号')
% subplot(3,1,3)
% plot(audio(70000:k)-audio_new(70000:k))
% title('误差')
%画频谱图
% cc=1:k/2;
% fr=(0:k/2-1)*2/k*fs;
% f1=fft(audio(1:k));
% figure(1)
% subplot(2,1,1)
% plot(fr,abs(f1(cc)))
% title('原始信号频谱')
% % figure(2)
% subplot(2,1,2)
% f2=fft(audio_new(1:k));
% plot(fr,abs(f2(cc)))
% title('嵌入水印信号的频谱')
% figure(3)
% plot(fr,abs(f2(cc)-f1(cc)))
% ylabel('误差');
% xlabel('频率/HZ');
% title('频谱误差')
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -