📄 water_out.m
字号:
%水印提取
%读取原始宿主音频
audio_name='D:\sound\钢琴曲 - 少女的祈祷.wav';%
% audio_name='D:\sound\大地.wav';
% audio_name='D:\sound\001.wav';
[y,fs,br]=wavread(audio_name);
audio=y(:,1);
%读取嵌入水印后的音频
audio_name_new='D:\sound\钢琴曲 - 少女的祈祷_new22.wav';
% audio_name='D:\sound\重采样\大地_new.wav';
% audio_name_new='D:\sound\001_new.wav';
[audio_1,fs]=wavread(audio_name_new);
audio_h_length=size(audio_1,1);
water_length=4096;
watermark=ones(1,water_length);
% audio_h=audio_1;
%白噪声攻击
% audio_h=audio_1+randn(1,audio_h_length)'/100;%加入高斯白噪声
%低通滤波攻击,截止频率6khz,滤波后采样点平移279位
load('C:\MATLAB7\work\filter_44100_6k.mat')%截止频率6khz
L1=length(filter_44100_6k);
audio_h=conv(filter_44100_6k,audio_1);
sect=1024;
% k1=100000;
k1=100000+279;%低通滤波
k=100000;
w=1;%w为水印标号
%汉明窗
for i=0:1023
h(i+1)=sqrt(8/3)*0.5*(1-cos(2*pi*i/1024));
end
while k<=audio_h_length&w<=water_length
for i=1:sect
audio1(i)=audio(k,1);
audio2(i)=audio_h(k1,1);
k=k+1;
k1=k1+1;
end
power=sum(audio1.^2);
if power>0.02%在能量大于0.02的帧嵌入水印
audio11=audio1.*h;
f=abs(fft(audio11)).^2;
t=10*log10(geomean(f(1:128))/mean(f(1:128)));
%对每帧进行分析,判断水印嵌入位数
if t>=-14.5
N=4;
else
N=0;
k=k-512;
k1=k1-512;
end
if N>0
[C1,L1]=wavedec(audio1,3,'db1');
[C2,L2]=wavedec(audio2,3,'db1');
a1=appcoef(C1,L1,'db1',3);
a2=appcoef(C2,L2,'db1',3);
watermark1=tiqu_3(a1,a2,N);
watermark(w:w+N-1)=watermark1;
w=w+N;
end
end
end
miyao=ones(1,12);
watermark=huifu(watermark,miyao);%置乱逆处理
%升维操作
k=1;
for i=1:64
for j=1:64
image(i,j)=watermark(k);
k=k+1;
end
end
imwrite(image,'D:\wav\水印_new.bmp','bmp');
image=imread('D:\wav\水印_new.bmp');
figure(1)
imshow(image,[])
%计算误码率
image_name='D:\wav\水印.bmp';
watermark_image=imread(image_name);
ww=1;
for i=1:64
for j=1:64
watermark0(ww)=watermark_image(i,j);
ww=ww+1;
end
end
err=sum(xor(watermark,watermark0))/4096
% image_write;
% err=sum(xor(watermark,water_mark))/water_length
% figure(3)
% subplot(2,1,1)
% plot(audio_1)
% subplot(2,1,2)
% plot(audio_h)
% wavwrite(audio_h,fs,'D:\wav\钢琴曲 - 少女的祈祷_new4.wav')
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -