⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 water_out.m

📁 一些程序
💻 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 + -