通过扩频和DCT变换算法将图像水印嵌入到音频信号中并提取水印matlab仿真

简介: 通过扩频和DCT变换算法将图像水印嵌入到音频信号中并提取水印matlab仿真

1.算法仿真效果
matlab2022a仿真结果如下:

8207402338136a87fd71652d0136bef7_watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=.png
8f5712e9fa3e0924340d95fc5227f230_watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=.png

2.算法涉及理论知识概要

   数字多媒体技术及互联网技术的迅猛发展,使得图像、视频和音频等多种形式的多媒体数字作品的创作、存储和传输变得极其便利。以mp3为代表的音乐作品通过网络渗透到世界的每一个角落。人们可以很方便地通过网络下载自己喜欢的音乐,这不仅促进了信息的共享,同时也使得人们获得资源的成本大大减少。但随之带来的问题是:盗版者可以利用网络途径获得这些非授权资源,制作成大量的CD光盘等进行非法销售,并获得巨大的商业利益,使得作品的制作者或发行者蒙受巨大的损失。在水印技术提出之前,传统的加密技术是版权保护的主要手段,但是,由于数字产品发行量非常大,且易于复制,并且考虑到音乐制片公司需要在网络上宣传产品,这就给非法盗版者以可乘之机。因此,如何实施网络环境下的版权保护和信息安全已经成为一个亟待解决的问题。在这样的背景下,能够有效实现版权保护的数字音频水印产生了。

   数字水印技术利用多媒体信息(图像、视频、音频等)中存在的冗余信息及人类感知系统的特性,在不影响原始多媒体信息格式和质量的前提下把额外的信息(即水印)隐藏到多媒体信息中。数字水印是一个多学科高度交叉的新兴研究领域,它涉及了图像、视频、音频的信号处理和密码学、通信理论、编码理论信号压缩和人类听视觉理论等多门学科。数字音频水印技术是信息隐藏技术的一个分支,信息隐藏技术是一个新的研究方向。该技术的出现,无疑会给网络化的多媒体信息安全保存和传送开辟一条全新的捷径。近年来音频信息隐藏技术的研究工作的发展速度很快,尤其是在变换域音频信息的数据嵌入技术,能够更好的保护水印信息的稳健性和安全性,使得研究更加的具有现实性,所以数字音频水印技术一个发展前景很好的学科。

2.1音频水印

   目前数字音频水印算法研究主要分为三类,时间域水印算法、变换域水印算法、基于听觉特性的水印算法。时间域水印算法通常采用扩展频谱的方法,即把代表水印信息的伪随机序列,通过具备心理声学模型频域掩蔽效应的滤波器进行滤波,使这种全频带的噪声完全位于听觉掩蔽曲线以下,人耳完全不能觉察。回到时域以一定的强度叠加到音频信号的振幅上,水印提取的时候根据伪随机序列的自相关性值为1和互相关性为0的特点来验证水印信号的存在.变换域的水印算法通过快速傅立叶变换,离散余弦变换离散小波变换,在频域的适当位置通过抖动调制或直接叠加的方法,改变变换域系数来嵌入水印。主要利用音频信号在时域的后向掩蔽,即用弱信号在强信号消失50-200ms之后变得无法听见。将原始音频数据以一定的衰减程度并延迟一定的时间迭加到原始音频数据以产生回声,并以不同的延迟时间和衰减振幅来标志水印数据的“0”或“1”,水印数据提取时,根据回声间距检测,利用倒谱的自相关峰值的位置来判断“0”或“1“。

   算法流程图如图2所示。

c9ce73cee230502ea1f2950c9547da4c_watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=.png

2.2水印的嵌入
设A是原始音频信号,根据音频文件类型将它分为两部分

   A = AH +AL                                (1)

其中:AH 是与文件类型相关的部分,所以保留下来不做处理;AL是可以嵌入水印的部分,长度是L ,它可以表示为

   A ={a(l),0 l<L}                             (2)

其中a(l) 是AL第I个数据的幅值。

  假设水印是视觉可辨别的、大小为M1×M2的二值图像,它可以表示为

   W ={w(I,j), 0I<M1, 0j<M2}                       (3)

其中w(I,j) {0,1}。具体水印嵌入算法步骤如下。

水印的降维操作:因为音频信号是一维信号,所以图像水印必须进行降维处理,降维后的水印信号表示为

V={v(k)=w(I,j) , k=I×M1+j,kM1×M2}                (4)

水印信号的置乱:为了进一步提高安全性,对待嵌入的水印信号进行置乱,在这里,用线形反馈移位寄存器进行置乱。

原始音频信号的一维离散小波变换:选择合适的小波基进行一维小波三级分解。

DL=DWT(AL)= cA3 cD3cD2cD1                 (5)

离散小波逆变换:以C*’代替5式的cA3作离散小波变换,得到嵌入水印后的小波变换域的表示式为

D’L=C*’ cD3 cD2 cD1

再作离散小波反变换,就得到了时域中含有水印信号的音频信号

A’L=IDWT(D’L) (6)

将A’L代替AL最终得到含有水印的音频信号

Aw=AH + A’L (7)

2.3水印的提取
设AS 是待检测的数字音频信号,水印的提取过程可描述如下。

信号分段:先对待检测的音频信号进行分段,即 As=AsH +AsL, 然后对含有水印的音频段进行三级离散小波分解,即

DsL=DWT(AsL)= cAs3 cDs3 cDs2 cDs1 (12)

散余弦变换:将1)的近似分量cAs3 提取出来,对其进行离散余弦变换,长度为Ls’,

CLs’ =DCT(cAs3)={cls’(n),0nLs’-1} (13)

水印的提取:通过排序选择长度满足水印长度的离散余弦系数Csk,进行水印提取,根据水印嵌入的位置和原始音频信号的离散余弦系数Ck ,依据下式得到序列

dabc95fc84f9c002be1874ad80c4dc8d_watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=.png

                   (14)

逆置乱:将得到的序列{v’( k)}进行逆置乱,得到水印信号的一维序列{v(k)}。

升维处理:对水印序列{v(k)} 作升维处理,将一维的序列变为二维的图像

Ws={ws(I,j)=vk, 0≤i≤M1-1, 0≤ j≤M2-1, k=I×M1+j} (15)

3.MATLAB核心程序

M = imread('china.bmp');%读取图像存入变量M做水印信号
BW = im2bw(M);%二值图
 
[M1,M2] = size(BW);
M12 = M1*M2; 
C = reshape(BW,1,M12);% 降维,将水印信息得到的一维序列存入序列C中
n = M12;
 
% 对水印信号进行扩频处理
n = M12*2;
M = zeros(n,1);
for k = 1 : n
    if mod(k,4) == 0
        M(k) = 1;
    else 
        M(k) = 0;
    end
    % 水印信号序列分别按位与密钥异或
    l = ceil(k/2);
    S(k) = bitxor(C(l),M(k));
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
N = 10; %嵌入一个水印信息需要的音频数据为N
length = n*10;
i = 1 : length;% 将原始音频信号分解为Ae和Ar两部分 
j = [1];
Ae = A(i,j);% 取矩阵A的l到length行构建矩阵Ae
i = length+1 : L;
Ar = A(i,j);% 取矩阵A的length到L行第一列构建矩阵Ar
 
k = 1;
B = cell(n,1);% 建立M1 x M2行l列的元胞
th = n*N;
while ( k < th )
    i = k : k+9;
    m = (k+9)/10;
    B{m,1} = Ae(i,j);
    k = k+10;
end
D = cell(n,1);
for i = 1 : n
    D{i,1} = dct(B{i,1});%DCT变化
end
 
E = cell(n,1);% 建立元胞E,储存嵌有水印信号的中频系数
E = D;
for i = 1 : n
    E{i,1}(3) = (D{i,1}(3))*(1+2*S(i)); % 将扩频了的水印信息S嵌入音频中
end
相关文章
|
2月前
|
机器学习/深度学习 算法 机器人
使用哈里斯角Harris和SIFT算法来实现局部特征匹配(Matlab代码实现)
使用哈里斯角Harris和SIFT算法来实现局部特征匹配(Matlab代码实现)
178 8
|
2月前
|
机器学习/深度学习 算法 自动驾驶
基于导向滤波的暗通道去雾算法在灰度与彩色图像可见度复原中的研究(Matlab代码实现)
基于导向滤波的暗通道去雾算法在灰度与彩色图像可见度复原中的研究(Matlab代码实现)
188 8
|
2月前
|
机器学习/深度学习 算法 机器人
【水下图像增强融合算法】基于融合的水下图像与视频增强研究(Matlab代码实现)
【水下图像增强融合算法】基于融合的水下图像与视频增强研究(Matlab代码实现)
270 0
|
2月前
|
数据采集 分布式计算 并行计算
mRMR算法实现特征选择-MATLAB
mRMR算法实现特征选择-MATLAB
204 2
|
3月前
|
传感器 机器学习/深度学习 编解码
MATLAB|主动噪声和振动控制算法——对较大的次级路径变化具有鲁棒性
MATLAB|主动噪声和振动控制算法——对较大的次级路径变化具有鲁棒性
226 3
|
3月前
|
存储 编解码 算法
【多光谱滤波器阵列设计的最优球体填充】使用MSFA设计方法进行各种重建算法时,图像质量可以提高至多2 dB,并在光谱相似性方面实现了显著提升(Matlab代码实现)
【多光谱滤波器阵列设计的最优球体填充】使用MSFA设计方法进行各种重建算法时,图像质量可以提高至多2 dB,并在光谱相似性方面实现了显著提升(Matlab代码实现)
163 6
|
2月前
|
机器学习/深度学习 算法 数据可视化
基于MVO多元宇宙优化的DBSCAN聚类算法matlab仿真
本程序基于MATLAB实现MVO优化的DBSCAN聚类算法,通过多元宇宙优化自动搜索最优参数Eps与MinPts,提升聚类精度。对比传统DBSCAN,MVO-DBSCAN有效克服参数依赖问题,适应复杂数据分布,增强鲁棒性,适用于非均匀密度数据集的高效聚类分析。
|
3月前
|
机器学习/深度学习 传感器 算法
【高创新】基于优化的自适应差分导纳算法的改进最大功率点跟踪研究(Matlab代码实现)
【高创新】基于优化的自适应差分导纳算法的改进最大功率点跟踪研究(Matlab代码实现)
267 14
|
2月前
|
开发框架 算法 .NET
基于ADMM无穷范数检测算法的MIMO通信系统信号检测MATLAB仿真,对比ML,MMSE,ZF以及LAMA
简介:本文介绍基于ADMM的MIMO信号检测算法,结合无穷范数优化与交替方向乘子法,降低计算复杂度并提升检测性能。涵盖MATLAB 2024b实现效果图、核心代码及详细注释,并对比ML、MMSE、ZF、OCD_MMSE与LAMA等算法。重点分析LAMA基于消息传递的低复杂度优势,适用于大规模MIMO系统,为通信系统检测提供理论支持与实践方案。(238字)
|
3月前
|
机器学习/深度学习 传感器 算法
【无人车路径跟踪】基于神经网络的数据驱动迭代学习控制(ILC)算法,用于具有未知模型和重复任务的非线性单输入单输出(SISO)离散时间系统的无人车的路径跟踪(Matlab代码实现)
【无人车路径跟踪】基于神经网络的数据驱动迭代学习控制(ILC)算法,用于具有未知模型和重复任务的非线性单输入单输出(SISO)离散时间系统的无人车的路径跟踪(Matlab代码实现)
244 2

热门文章

最新文章