查字典论文网 >> 基于DCT算法的音频信息隐藏研究

基于DCT算法的音频信息隐藏研究

小编:

基于DCT算法的音频信息隐藏研究

引言

随着通信技术的发展和全球信息化进程的推进,信息技术向各个领域不断延伸,使得信息的安全和合法运用成为当前研究的热点和难点,数字版权保护的相关技术日益重要并提上日程。国内外研究机构借助图像实现信息的隐藏研究比较成熟。由于人的听觉要比视觉敏感得多,如何借助音频信息实现信息隐藏的研究是国内外近年来探讨的主题,音频信息隐藏技术根据将隐藏信息嵌入的位置可分为时域与变换域。到目前为止,公认比较成熟的时域音频信息隐藏技术有4种:最不重要位法、回声隐藏法、相位编码法、扩频法。与时域相比,变换域因其较好的鲁棒性而被广泛关注,应用较多的离散傅立叶变换法、离散余弦变换法、离散小波变换法和倒谱法等。

本文在介绍基于DCT算法的音频信息隐藏原理的基础上,将欲隐藏信息的音频部分载体的低频部分提取出来并分段处理,然后用隐藏的信息替换掉载体音频低频部分的奇数段中的DCT系数,进而实现音频信息的隐藏,最后通过信息的还原算法实现隐藏信息的还原。

1 基于DCT算法的音频信息隐藏原理

离散余弦变换(DCT)运算简单,有很好的能量压缩性能,音频信号经过DCT变换后只有实部,没有虚部,便于保密信息的嵌入和嵌入强度的控制。在DCT变换域上,信号的能量主要集中在几个变化系数上,仅用少数几个变换系数就可表示信号的总体,这一特点是用DCT变换进行数据压缩的基本依据。长度为N的音频信号f(x)的一维DCT变换和IDCT变换公式如下:

正变换:

F(0)=1N∑N-1x=0f(x),u=0(1)

F(u)=2N∑N-1u=1 反变换: cos[π2N(2x+1)u],x=0,1,…,N-1(3)

F(0)为称为DC系数,其余N-1个为AC系数,修改DCT系数实现信息的隐藏。

2 基于DCT算法的音频信息隐藏的MATLAB仿真

2.1 隐藏信息的预处理

设隐藏信息的文件名“hs.bmp”,是256*256的二值图像,若图像的行和列用P和Q表示,则隐藏信息共有P*Q=65536个像素(如图1所示),再把该二值图像进行置乱压缩处理。图像置乱压缩方法有很多,如基于Arnold变换、幻方变换、魔方变换和基于面包师的图像置乱技术等,这里定义一个修改图片函数function b=modifyImage(hs),在二值图像信息不变的情况下产生相同大小的图片从而实现置乱。

为匹配一维音频信息载体,还需要将置乱压缩后的二值图像的像素点的位置和数据进行改变,二维二值图像降维操作,两次置乱后的图像如图2所示。

C=reshape(HSZ,1,P*Q); %两次置乱后的图片HSZ降维成一维序列存入矩阵C中。

 2.2 载体音频信息的预处理

FDATool工具是MATLAB信号处理工具箱里专用的滤波器设计分析工具,可以通过调整滤波器的类型和参数获得所需的滤波器的幅频相频特性设计。载体音频信息的低通滤波器的设计步骤如下:①在MATLAB的命令窗口中输入:“fdatool”,启动Filter Design & Analyze Tool(FDATool);②Filter Design & Analyze Tool(FDATool)的主界面总共分两大部分,一部分是特性区,在界面的上半部分,用来显示滤波器的各种特性;另一部分是Design Filter,在界面的下半部,用来设置滤波器的设计参数;③在主界面下半部的参数设计界面中根据需要选择合适的选项,本文设计一个低通滤波器,Response Type选择Lowpass,Design Method选择IIR中的Butterworth这个传递函数,设定filter order项中的specify order,specify order是在条件的允许下使设计的滤波器尽可能的接近理想滤波器,一般specify order越高越好,相对来说消耗的资源多些,指定specify order=5。设置完以后点击Design Filter即可得到所设计的载体音频信息IIR低通滤波器;④把滤波器导入到空间变量里面,滤波器参数名为Hd1。使用滤波器时,调用空间变量Hd1。载体音频信息通过低通滤波器进行滤波得到滤波后载体音频信息。

A=wavread('E: j.wav'); %读取存在E盘的载体音频j.wav到数组A。

AL=filter(Hd1,A); %A通过低通滤波器后的参数存到矩阵AL。

2.3 隐藏信息嵌入载体音频的DCT算法实现

(1)载体音频信息分段。首先对滤波后载体音频信息AL分段处理,滤波后载体音频信息AL的长度与原始音频的长度一样,滤波前后不会改变载体音频信号的长度,下面一条语句得到滤波后载体音频信息AL的长度。 

L=length(AL); length=2*P*Q*N; %取length的大小为2*P*Q*N。

i=1:length;

j=[1];

ALm=AL(i,j); %取矩阵AL的1到length行构建矩阵ALm。

i=length+1:L;

ALr=AL(i,j); %取矩阵AL的length+1到L行构建矩阵ALr。

MATLAB中的cell函数建立元胞的方式对ALm分段,建立2*P*Q个元胞,即2*P*Q个音频数据段,ALm的每10个数据存入一个元细胞中,每个元细胞代表一个音频段。 B{m,1}=ALm(i,j); %ALm的每10行作为一个数据段存入元胞B中。

(2)DCT变换。对每个音频段DCT变换。 

D{i,1}=dct(B{i,1});%对每个音频数据段离散余弦变换。

(3)嵌入替换。每个音频数据段的数据个数为N=10,其离散余弦变换结果中就含有N个DCT变换系数,其中第0个DCT变换系数为直流分量,其它的N-1个DCT系数是由低频到高频的交流分量。选取DCT 系数中的低频系数进行水印替换, 提高了程序的效率,本文选取第二个DCT系数进行替换以嵌入隐藏信息。

(4)IDCT变换。嵌入完成后,进行IDCT变换。

F{i,1}=idct(D{i,1});%离散余弦反变换。

(5)回放保存载密音频。带有隐藏信息的元细胞重组,回放和保存嵌入隐藏信息后的音频信号,命名为zaimij.wav,保存在E盘。

sound(F,fs,bits); %回放嵌入隐藏信息后的音频信号。

wavwrite(F,'E: zaimij.wav'); %保存嵌入隐藏信息后的音频信号到E盘。

嵌入隐藏信息前后波形如图3所示,从嵌入隐藏信息前后波形可以看出,嵌入隐藏信息后对音频的影响很小。

2.4 隐藏信息的提取

隐藏信息的提取实际上是隐藏信息嵌入的逆过程,DCT变换和IDCT变换后DCT系数的个数和位置不变,为隐藏信息的提取提供了依据。

图3 嵌入隐藏信息前后波形

(2)重组P*Q个信息。提取的P*Q个信息按嵌入时的顺序重组。

(3)升维。把一维数组升维成二维,最终得到的是二维图像。

(4)两次置乱反变换恢复出隐藏信息。

还原后的隐藏信息见图4示意。

基于结构的相关性度量是评价图像的客观标准其中一种,也是在图像度量方面使用较广泛的一种方法,可以反映图像的失真程度。其公式如下: x1(i,j)和x2(i,j)分别表示两个图像在i,j位置所对应的像素,x1(i,j)表示原图像,x2(i,j)表示提取恢复出来的图像。相关度量值越接近1,其相关性越好。通过MATLAB编程得出两幅图像的相关性大小为Cs=0.9954,表现为较好的相关性。

3 结束语 

本文通过一个离散余弦变换算法实现了隐藏信息在音频信息的隐藏,仿真实验结果均表明了该算法的有效性,具有很好的应用价值。针对音频信息隐藏的质量和有效性评估是下一步研究的目标。

热点推荐

上一篇:超声波萃取法快速测定土壤有机氯农药残留试验

下一篇:如何对幼儿进行德育教育论文 幼儿园关于德育教育之类的论文