matlab音频水印算法研究+代码
2023-09-14 09:14:36 时间
%加入白噪声的音频水印程序
clear;
[y ,fs] = audioread('mei.wav'); %读入原始音频文件
[c,l]=wavedec(y,3,'db4'); %三级小波分解
ca3=appcoef(c,l,'db4',3);%提取3级近似系数,绘制原始信号和近似系数。
cd3=detcoef(c,l,3);%提取 3 所指定的级别上的细节系数
cd2=detcoef(c,l,2);%提取 2 所指定的级别上的细节系数
cd1=detcoef(c,l,1);%提取 1 所指定的级别上的细系数节
x=ca3; %提取近似低频系数
len=length(y); %计算音频数据长度
x1=x;%x重新赋值给x1
s=max(abs(x))*0.2;%对近似系数的绝对值,求其中的最大值,再乘以0.2
i=find(abs(x)>s);lx=length(x(i)); %找出大于最大值0.2倍的序列
figure;%创建图窗窗口
subplot(2,2,1);%将当前图窗划分为 2×2 网格,并在1指定的位置创建坐标区
plot(ca3); %画出低频系数图
title('低频系数图形');%标题
subplot(2,2,2);%将当前图窗划分为 2×2 网格,并在2指定的位置创建坐标区
plot(cd3);%画出第3级的细节系数。
title('cd3');%标题
subplot(2,2,3);%将当前图窗划分为 2×2 网格,并在3指定的位置创建坐标区
plot(cd2);%画出第2级的细节系数。
axis([0 10e4 -0.5 0.5]);%设置坐标轴范围和纵横比
title('cd2');%标题cd2
subplot(2,2,4);%将当前图窗划分为 2×2 网格,并在3指定的位置创建坐标区
plot(cd1);%画出cd1
title('cd1');%标题cd1
randn('seed',10); %产生随机高斯序列
mark=randn(1,lx);%创建一个由随机数组成的 1×lx 向量。
ss=mark;%mark赋值给ss
rr=ss*0.1; %设置水印嵌入强度
x(i)=x(i).*(1+2*rr'); %嵌入水印
c1=[x',cd3',cd2',cd1']; %创建矩阵c1
s1=waverec(c1,l,'db4');%重建信号
file1='已加水印.wav';
dd=length(s1); %调整s1的长度,使之可以分成两列
s11=s1; %s1的值不能改变,因为后面还需要用到
if rem(dd,2)==1 %如果s1是奇数,则去掉最后一个数,将新数组定义为s11
s11=s1(1:dd-1);
end
ee=reshape(s11,[],2); %将s1调整成2列的数组
audiowrite(file1,y,fs);%将加水印的音频写入file1.wav
figure;%创建图窗
subplot(3,1,1);%创建3*1的网格,把该图放在第一个位置
plot(y); %画出原信号图
axis([0 18e4 -2 2]);%设置坐标轴范围和纵横比
title('原信号的图'); %标题
subplot(3,1,2);plot(ss); %创建3*1的网格,把该图放在第二个位置
title('水印图');
subplot(3,1,3);plot(s1); %画出嵌入了水印的信号图
title('加入了水印的声音信号')%加标题
kk.wave = wavread('已加水印');
yc=kk.wave;
dy=length(y);
if rem(dy,2)==1 %如果y为奇数,处理同s1,但是因为后面不需要用到y,所以不必定义一个新数组
y=y(1:dd-1);
end
y1=reshape(y,[],2); %调整数组y的维数,使之可以和yc做运算
fz=sum(y1.*y1); %计算嵌入了水印的信号的信噪比,".*"用于实现对应元素的乘法
结果:
matlab群:912166339
相关文章
- 基于文化算法优化的神经网络预测研究(Matlab代码实现)
- 【风场景生成与削减】【m-ISODATA、kmean、HAC】无监督聚类算法,用于捕获电力系统中风场景生成与削减研究(Matlab代码实现)
- 基于多目标粒子群优化算法的计及光伏波动性的主动配电网有功无功协调优化(Matlab代码实现)
- 全局优化问题的鲁棒算法研究(Matlab代码实现)
- 模拟退火法和蚂蚁优化算法求解TSP问题(Matlab代码实现)
- 【改进模糊神经网络】基于粒子群-万有引力算法PSOGSA 改进的前馈神经网络研究(Matlab代码实现)
- 基于思维进化算法优化BP神经网络(Matlab代码实现)
- 分布式节能聚类算法(Matlab代码实现)
- 基于混合VNS(变邻域搜索算法)的PSO(粒子群优化算法)的任务分配问题(Matlab代码实现)
- 一种用于模拟电晕放电的高效半拉格朗日算法(Matlab代码实现)
- 多旋翼无人机组合导航系统-多源信息融合算法(Matlab代码实现)
- 改进花朵授粉算法的无线传感器网络部署优化(Matlab代码实现)
- 【信号处理】基于优化算法的 SAR 信号处理(Matlab代码实现)
- 【图像处理】基于MATLAB和SRCNN算法实现图像超分辨率重建
- m基于深度学习的OFDM信道估计和均衡算法误码率matlab仿真,对比了LS,MMSE以及LMMSE等传统的信道估计算法
- 基于模拟退火算法的车间调度优化matlab仿真,输出甘特图
- m基于sift特征提取和模板匹配的车标识别算法matlab仿真
- 五通信算法:五种编码增益比较matlab模拟
- 基于改进模因算法的考虑工人安排的分布式柔性作业车间调度问题(Matlab代码实现)
- 基于A星和dijkstra算法的障碍物规避matlab仿真,可以设置行列数,随机产生障碍物