【信号隐藏】基于奇异值分解结合小波变换算法DWT和离散余弦变换DCT变换音频数字水印嵌入提取附matlab代码

1 简介

提出了一种基于离散小波变换(DWT)和离散余弦变换(DCT) 的音频信息隐藏的新算法.首先,对载体音频信号整体进行小波分解,将其低频小波系数分段后进行离散余弦变换;其次根据人耳听觉的频率掩蔽效应,选择出对人 耳听觉容差最大的直流系数组成序列并分段;最后通过修改各段统计特征来嵌入水印.实验表明,嵌入水印后的语音信号不仅具有良好的不可感知性,而且对诸如加 噪,低通滤波,重采样,重量化,回声,MP3压缩,样点裁剪,时域线性延伸和缩短等的攻击具有很强的鲁棒性.

2 部分代码

figure(2);

%读入原水印图片

I=imread('a.png');

I=im2bw(I);

%读取原始语音

audio = audioread('open-cc.wav'); 

A=audio(1:160000);

%读取含水印音频

[A1,fs]=audioread('new.wav'); 

AL=length(A1);

%绘制音频图: 

subplot(211);plot(A1); 

axis([0,160000,-1,1]);

title('含水印音频信号');

%{

%加入攻击

Dist = A1-A;

sum=0;

for i=1:AL

    DAA1=Dist(i)*Dist(i);

    sum=sum+DAA1;

end

psnr = 10*log10(maxAA/sum);

%1 误码率BER

eber=0;

for i=1:10

    for j=1:10

        if I(i,j)==J(i,j)

        else

            eber=eber+1;

        end

    end

end

ber=eber/100;

%2 归一化系数NC

IJ = I.*J;

II = I.*I;

JJ=J.*J;

sumII=0;

sumIJ=0;

sumJJ=0;

for i=1:10

    for j=1:10

        sumII=sumII+II(i,j);

        sumIJ=sumIJ+IJ(i,j);

        sumJJ=sumJJ+JJ(i,j);

    end

end

nc=sumIJ/(sqrt(sumII)*sqrt(sumJJ));

3 仿真结果

4 参考文献

[1]陈寅秋. 基于奇异值分解和小波变换的音频数字水印研究[D]. 湖南师范大学, 2008.

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

部分理论引用网络文献,若有侵权联系博主删除。**完整代码获取关注微信公众号天天matlab**

你可能感兴趣的:(【信号隐藏】基于奇异值分解结合小波变换算法DWT和离散余弦变换DCT变换音频数字水印嵌入提取附matlab代码)