嘿,亲!知识可是无价之宝呢,但咱这精心整理的资料也耗费了不少心血呀。小小地破费一下,绝对物超所值哦!如有下载和支付问题,请联系我们QQ(微信同号):813200300
本次赞助数额为: 2 元微信扫码支付:2 元
请留下您的邮箱,我们将在2小时内将文件发到您的邮箱
数字音频水印_源代码。希望对大家能有所帮助。
%贡献今天做的一个基于均值量化音频水印嵌入和提取的matlab程序
用的音频是svega.wav,水印是32*32二值图像,量化步长那q=absmin(ca3),的absmin是一个小函数:对ca3取绝对值后取非0的最小值。
嵌入:
clear all
clc
[a,fs,bits]=wavread('D:\procedure\matlab code\my\简单量化水印\s.wav');
subplot(3,1,1);plot(a);
title('原始音频波形图')
w=imread('D:\procedure\matlab code\my\简单量化水印\32.bmp');
subplot(3,1,2);imshow(w)
title('原始水印')
w1=w();
[c,l]=wavedec(a,3,'haar');
ca3=appcoef(c,l,3,'haar');
cd3=detcoef(c,l,3);
cd2=detcoef(c,l,2);
cd1=detcoef(c,l,1);
q=absmin(ca3)
for i=1:1024
ave(i)=sum(ca3(i*20(i 1)*20))/20
z(i)=fix(ave(i)/q 1/2)
end
for i=1:1024
if mod(z(i),2)==w1(i)
cxzc=0;
else
if mod(z(i),2)~=w1(i)&&z(i)==fix(ave(i)/q)&&z(i)>=0||mod(z(i),2)~=w1(i)&&z(i)~=fix(ave(i)/q)&&z(i)<0
ca3(i*20(i 1)*20)=ca3(i*20(i 1)*20) q;
else
ca3(i*20(i 1)*20)=ca3(i*20(i 1)*20)-q;
end
end
end
c1=[ca3',cd3',cd2',cd1'];
b=waverec(c1,l,'haar');
subplot(3,1,3);
plot(b);
title('嵌入水印后的音频');
wavwrite(b,fs,bits,'D:\procedure\matlab code\my\简单量化水印\S32marked.wav');
提取:
clear all
clc
a=wavread('D:\procedure\matlab code\my\简单量化水印\S32marked.wav');
subplot(3,1,1);plot(a);
title('嵌入水印的音频波形图')
w_source=imread('D:\procedure\matlab code\my\简单量化水印\32.bmp');
subplot(3,1,2);imshow(w_source)
title('原始水印')
[c,l]=wavedec(a,3,'haar');
ca3=appcoef(c,l,3,'haar');
q=1.7263e-004; %q应该是作为密钥在嵌入时就保存下来,这里直接用的嵌入时的值
for i=1:1024
ave(i)=sum(ca3(i*20(i 1)*20))/20;
w1(i)=(mod(fix(ave(i)/q 1/2),2));
end
w=reshape(w1,32,32);
subplot(3,1,3);imshow(w)
title('提取出的水印')
imwrite(w,'D:\procedure\matlab code\my\简单量化水印\tiqu32.bmp','bmp');