当前位置 : 主页 > 编程语言 > python >

【数字水印】基于lsb实现音频水印嵌入提取Matlab源码

来源:互联网 收集:自由互联 发布时间:2022-06-15
1 简介 作为信息隐藏技术的一个具体表现形式,数字水印是一种有效的数字产品版权保护和数据安全维护技术,在版权保护、"指纹"识别、拷贝保护、广播监视等方面有重要的应用[1]。用

1 简介

作为信息隐藏技术的一个具体表现形式,数字水印是一种有效的数字产品版权保护和数据安全维护技术,在版权保护、"指纹"识别、拷贝保护、广播监视等方面有重要的应用[1]。用LSB算法对水印进行了嵌入和提取,并用Matlab实现了水印算法的仿真。通过仿真结果可以看出,LSB算法不影响原始图像的视觉效果,而且水印提取效果也较好,说明LSB算法具有较好的稳健性和良好的水印不可见性。

2 部分代码

[x1,fs]=audioread('music1.wav');
cy1=x1(:,1);
cy2=x1(:,2);
% [x1,fs]=audioread('music2.wav');
%从底部到顶部,底部的平面有细节,而高阶的比特平面则包含了大多数的数据。
%而比特分层的实现就是依靠阈值处理函数:
xmax=max(abs(x1)); %计算最大幅度
xmin=min(abs(x1)); %计算最小幅度
l1=size(x1); %计算出载频的总长度l1,便于FFT分析频谱
t1=(0:length(x1)-1)/fs; %由采样率计算音频时长单位为s
y1=fft(x1,fs); %对信号x1做FFT变换
f=fs*(1:8192)/fs; %选取前8192个点绘图,之所以不选44100是
%因为周期性
figure(1)
plot(t1,cy1) %做原始语音信号的时域图形
grid on;axis tight;
title('原始语音信号');
xlabel('time(s)');
ylabel('幅度');
figure(2)
plot(f,abs(y1(1:8192))) %做原始语音信号的FFT频谱图
grid on;axis tight;
title('原始语音信号FFT频谱')
xlabel('HZ');
ylabel('幅度');
% sound(x1,fs); %播放原始语音信号
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%sound(QRH,fs)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%----------------取出水印信号并去量化的信号
for i=1:(8*l2)
qfdshuiyin(i)=bitand(qrh(i),1);
end
for i=1:l2
wei1=qfdshuiyin(8*i-7);
wei2=qfdshuiyin(8*i-6)*2;
wei3=qfdshuiyin(8*i-5)*4;
wei4=qfdshuiyin(8*i-4)*8;
wei5=qfdshuiyin(8*i-3)*16;
wei6=qfdshuiyin(8*i-2)*32;
wei7=qfdshuiyin(8*i-1)*64;
wei8=qfdshuiyin(8*i)*128;
qshuiyin(i)=wei1+wei2+wei3+wei4+wei5+wei6+wei7+wei8; %把各个比特位合并
end
lh=255/symax(1); %前面就是除了最大值再乘以255,现在反过来处理
Qshuiyin=qshuiyin/lh;
figure(8)
plot(t2,qshuiyin); %做水印信号的FFT频谱图
grid on;axis tight;
title('取出的水印信号波形');
xlabel('time(s)');
ylabel('幅度');
%sound(Qshuiyin,fs) %播放提取的水印

3 仿真结果

【数字水印】基于lsb实现音频水印嵌入提取Matlab源码_语音信号

4 参考文献

[1]王东东, 王福明. 基于LSB数字水印算法的研究与实现[J]. 山西电子技术, 2014(5):2.

博主简介:擅长智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真,相关matlab代码问题可私信交流。

部分理论引用网络文献,若有侵权联系博主删除。

【数字水印】基于lsb实现音频水印嵌入提取Matlab源码_语音信号_02


网友评论