改进离散余弦变换域

2024-12-09

改进离散余弦变换域(通用6篇)

改进离散余弦变换域 篇1

近年来,随着各种信息的数字化、计算机技术的成熟及网络的飞速发展,人们藉由网络可以快速而便利地获取各种多媒体信息,利用计算机技术处理及存储资料,并将这些取得的资料进行任意的修改、复制和再传播,因此对于个人私密性资料与知识产权的保护就显得非常重要。数字水印作为一种有效的保护机制,引起了学术界的广泛研究,早期的数字水印采用在空间域嵌入[1,2,3,4],但容易受到媒体处理的攻击,因此有文献报道采用在转换域嵌入[5,6,7],即采用离散余弦变换的方法,由于此方法具有不易被破坏的特点,因此受到越来越广泛的重视,但这个方法存在健壮性不理想的状况。针对存在的问题,本文在利用离散余弦变换的具有中/高频带系数平均值接近零的特性基础上,提出将数字水印乱序排列后,再进行数字水印的嵌入。为了验证提出方法的正确性,文中客观地以峰值信噪比评估嵌入与取出数字水印图像品质及关联系数来评估数字水印受到攻击的性能,并以主观的视觉评估嵌入数字水印的图像及取出的数字水印品质。结果表明:提出的方法不仅保留了离散余弦变换能在图像中较好地嵌入数字水印并较好地取出数字水印信息的优点,而且嵌入的数字水印具有较好的健壮性。

1 研究方法

1.1 系统架构

1.1.1 数字水印的嵌入

图1为提出的数字水印的嵌入流程。先输入一张64×64像素的数字水印,经过数字水印的前置处理,同时输入一张512×512像素的图像,将图像分割成数个互不重叠的8×8的区块,并对每一区块进行离散余弦变换,在经过变换后的每一区块中选择准备嵌入数字水印的区块,计算其平均值,取得T(threshold)、S(shift)值。在每一区块嵌入一个位元的数字水印,嵌入数字水印后并计算有无产生溢出的情况,若发生溢出,则移除该区块中的数字水印,并记录无法嵌入数字水印的位置,储存在辅助信息,最后将图像进行离散余弦的反变换,完成数字水印的嵌入。

1.1.2 数字水印的取出与图像还原

图2为提出的数字水印取出流程,将嵌入数字水印的图像分割成数个互不重叠的8×8区块,将每一区块进行离散余弦变换,对经过变换后的嵌有数字水印的区块,计算其平均值,取得嵌入数字水印后的图像的TS值,再嵌入辅助信息(包含嵌入数字水印前的TS值、无法嵌入数字水印的位置和数字水印前置处理方法),接着取出数字水印,最后将数字水印取出后的图像返转回空间域,得到重建的原始图像。

1.2 数字水印的前置处理——乱序排列法

为了增加数字水印的健壮性,在将数字水印嵌入图像之前 ,先将其阵列打乱,其大小为1×64的一维阵列,图3(a)是数字水印的原图,而打乱的方式是将数字水印的每一行产生的序列进行排序,将数字水印重新排序后,如图(3)所示。

1.3 溢出处理

当图像嵌入数字水印后,其灰度值可能会超过0—255的范围,也就是小于0或大于255,此情形称为溢出。溢出会破坏图像的品质,因此要避免溢出发生。

以图4(a)的图像为例,其尺寸为512×512像素,将其分割成数个互不重叠的区块。以每一区块尺寸为8×8像素分割成64×64个区块,如图4(b),再对每一区块按照它们的长条图(histogram)像素灰度的分布特性分类。

长条图灰度分布分为四种不同的类型,如图5。其中形态(a)是最完美的分布图形,其灰度分布在0-255的中间范围,分布曲线左右皆有空间;形态(b)其灰度分布偏向右端255,分布曲线只有左端有空间,一旦执行加法运算,图像会右移超出范围,造成溢出,只能进行左移的减法运算;形态(c) 与形态 (b)灰度分布相反,分布曲线只有右端有空间,若执行减法运算会造成左移的溢出问题,因此只能执行右移的加法运算;形态 (d)的灰度分布偏左右两端,因此无论加减运算皆会有移动后的溢出问题,所以形态 (d)不能进行运算。

1.4 数字水印嵌入

为了数字水印嵌入后的图像品质和嵌入的数字水印的健壮性,在每一区块嵌入一个位元的数字水印。

对将嵌入数字水印的图像以8×8区块切割并做离散余弦变换,利用离散余弦变换的中/高频系数很小且趋近0的特性,选择每一个8×8区块中16个像素嵌入水印,如图6所示。称这16个区块为MH频带。在公式(1)中,标记t为第t个区块,Cijt代表第t个区块的离散余弦变换后在(i,j)坐标位置的系数,由公式(1),计算每一区块的MH频带系数的平均值mean,找出其中最大系数的绝对平均值Mmax。由公式(2),设一个阈值为T,此T是大于Mmax的最小整数(ceil函数为取值上限)。找出T值后,由式(3)找出S量,有了S量,就可以用改变区块中MH频带的系数平均值。当某个区块需要嵌入信息时,则判断此区块MH系数平均值的正负,如果区块系数平均值为正时,在此区块的MH平均值加S,如果区块系数平均值为负时,在此区块的MH减S量。

将重新排序后的水印依区块顺序由左至右,由上到下嵌入到所要隐藏的非重叠区块中。若所嵌入的位元为1,此区块的MH平均值将会改变一个S量,此S量将使该区块的MH平均值之绝对值大或等于T。而如果所嵌入的位元为0时,此区块保持原来的值不变。在嵌入的过程中,若出现区块在空间域的溢出情况,则将不能嵌入的区块位置记录,并将TS值同时记录,用于提取水印和还原图像时使用。

1.5 数字水印取出与图像还原

数字水印取出与图像还原的流程见图2。将原始图像分割成8×8不重叠区块,并进行离散余弦变换,载入辅助信息(TS值等),区分嵌入水印的区块。计算出每个区块MH频带系数的平均值,若该平均值小于T,则取出的数字水印为位元0;若该平均值大于T,则取出的数字水印为位元1。该区域MH频带系数平均值如果为正则减去S量,若平均值为负则加上S量,当所有区块都判断完后则取出数字水印,加上不能嵌入区块的位置,即得到嵌入的数字水印信息。然后对数字水印进行后置处理,对图像进行反离散余弦变换以获得原图像,完成取出数字水印与图像还原的步骤。

2 实验结果与分析

(a)Peppers (b)sailboat (c)Airplane (d) man

为了验证提出方法的正确性,分别对图7的四张测试图像进行水印嵌入、取出、还原及受攻击的实验,每张图大小为512×512像素的灰度图像,数字水印图像如图3,大小为64×64像素的二进制图像。采用余弦变换技术和前置数字水印处理方式,观察嵌入与取出后的数字水印和图像的品质,使用PSNR评估嵌入与取出图像品质。PSNR定义如公式(4):

ΡSΝR=10lgQ2ΜSE(4)

Q为图像的峰值255,MSE为原图像与处理后图像像素差的平方均值。并以关联系数来评估图像受攻击的性能,一般用以度量二变量随机数AB的关联测试,以R代表关联系数,如式(5):

R=mn(Amn-A¯)(Bmn-B¯)(mn(Amn-A¯)2)(mn(Bmn-B¯)2)(5)

式(5)中mn表示它的维度,A¯为A的平均值。R值从-1到+1,其值越大表示二变量AB的关联性越高。

2.1 以改进的离散余弦变换进行数字水印嵌入与取回

根据前面所述数字水印的嵌入原理,在4幅测试图像中分别嵌入数字水印,并根据水印的取出和图像还原原理,提取数字水印和还原图像。实验结果如表1所示,为比较其性能,与传统的离散余弦变换方法比较,可以看出改进后的离散余弦变换方法的嵌入数字水印的图像具有较高的品质,嵌入数字水印的图像具有非常高的PSNR值,且还原后的原图像质量较好。

2.2 攻击实验

嵌入数字水印的图像经过裁剪(crop)、加入噪音、JPEG压缩的攻击实验后,所取出的数字水印失真并不太大,仍可清楚地呈现,是水印具有健壮性的体现。

以前面所描述的方法比较图像受攻击后的结果,裁剪实验是从图像的坐标(50,50)去掉一块200×200像素(红色框)、250×250像素(黄色框)、300×300像素(绿色框),如图8所示;加入噪音是将图像加入噪音(变异数为2);JPEG压缩是对图像进行JPEG压缩(压缩率为90%)。

裁剪实验的结果如表2,结果显示改进后的离散余弦法比传统的离散余弦法较能抵抗裁剪攻击。

加入噪音信息实验的结果,由表3可知,数字水印经过乱数序列法比直接嵌入法较能抵抗噪音的攻击。

JPEG压缩实验的结果,由表4可知,离散余弦变换法对于JPEG压缩均有较好的抵抗能力。

3 结论

本文在传统的离散余弦变换基础上,提出将数字水印进行乱数排列的前置处理新方法,和传统的离散余弦变换相比,此方法进行数字水印的嵌入和还原的数字处理非常简单,而且取出数字水印后的图像接近完美,健壮性较好。

参考文献

[1] van Schyndel R G, Tirkel A Z, Osborne C F. A digital watermark. In: Proc IEEE Int Conf Image Processing, vol. 2, Austin, TX,1994:86—90

[2] Pitas I, Kaskalis P H. Applying signatures on digital images. In: Proc IEEE Workshop Nonlinear Image and Signal Processing, Neos Marmaros, Greece, 1995:460—463

[3] Pitas I.A method for watermark casting on digital images.In:Pro-cedings of IEEE Int.Conf.on Image Procession 1996.Piscataway,HJ:IEEE Press,1996;3:215—218

[4] Delaigle J F,De Vleeschouwer D,Macq B.Low cost perceptive dig-ital picture watermarking method.In:Proc ECMAST’97,Milan,Ita-ly,1997:153—167

[5] Macq B, Delaigle J F, De Vlesschouwer C. Digital watermark. SPIE Proc 2659: Optical Security and Counterfeit Deterrence Techniques, 1996:99—110

[6] Hsu C T, Wu J L. Hidden signatures in images. In: Proceedings of the IEEE Int. Conf.on Image Processing 1996, Piscataway,NJ:IEEE Press, 1996: 223—226

[7] Hsu C T, Wu J L. Hidden digital watermarks in images. IEEE Trans on Image Processing, 1999;8(1):58—68

改进离散余弦变换域 篇2

关键词:DCT,版权保护,版权通知,Canny算子,自适应

0 引 言

计算机技术的飞速发展以及信息媒体的数字化,极大地提高了信息表达的效率和准确性,但是数字产品的版权保护成为迫切需要解决的实际问题。数字水印技术作为信息隐藏技术领域的一个重要分支,在如今的计算机、自动化、信息等领域有着广阔的应用前景。人们可以在数字载体中嵌入数字、序列号、文字、图像标志等版权信息,这些信息能起到较好的版权保护、信息隐藏、数据文件的真伪鉴别等作用。根据水印的可见性,分为可见水印和不可见水印。可见水印是肉眼可以看见的,不可见水印指将水印信号嵌入到数字图像、音频或视频中,虽然表面上很难发觉到这些数字作品的变化,但是如果发生版权纠纷时,即可从这些数字作品中提取水印,来证明数字作品的版权,而其与可见水印相比应用更加广泛。

1 数字水印算法综述

基于DCT域的数字水印算法[1],根据对宿主图像DCT的计算方法分为两大类: 一类是直接对整幅图像进行DCT计算,选取合适频段的系数,嵌入水印。另一类是,首先将整幅图像分成块,对每一块分别进行DCT计算,在每一块中选取合适频段的系数,并将水印信息分散嵌入到每一块所选取的DCT系数中[2,3]。

二维离散余弦变换不但能够将图像的主要能量集中到低中频系数上,而且使得引起图像的块效应达到最小,能够实现能量集中和计算复杂性的良好折中。离散余弦变换的实变换特性,良好的能量压缩能力和解相关能力,可以通过快速算法计算等优点使其在数字水印嵌入算法的研究中具有强大的吸引力。

本文提出的水印算法如图1所示。对于灰度图像,可见水印的嵌入和不可见水印图像都是在其DCT域中进行的。根据canny算子计算出宿主图像的边缘信息并结合其纹理、亮度等信息自适应地嵌入可见水印。而不可见水印的嵌入[4]同样利用了上述宿主图像的信息,在选取了合适的位置后实现自适应嵌入。在提取不可见水印的过程中,根据不可见水印嵌入时用到的密钥提取水印信息,然后将提取出的信息与原始水印信息作对比,即可判断出可疑图像中是否含有不可见水印。

2 可见水印嵌入算法

2. 1 嵌入准则

取大小为M×N的灰度图像Igrey为原始宿主图像和大小为P×Q的二值图像W为可见水印图像。首先在宿主图像中选取水印图像大小的区域作为嵌入区域,该部分图像取为I并分成互不重叠的8×8子块I( k) ( k = 0,1,…) ,然后对各个子块进行DCT变换得到IDCT( k) 。数字水印算法中最常见的水印嵌入准则有线性加法、乘法和量化索引调制。考虑到可见水印的特性,本文中采用线性加法嵌入准则,公式为:

其中,IijDCT( k) 和WijDCT( k) 分别表示宿主图像和水印图像的第k子块的DCT系数; I'ij( k) 表示水印嵌入后图像的第k子块的DCT系数; λk是子块k的嵌入系数。

因此,该算法的关键在于λk的设计。要取得合适的λk,必须要结合人类视觉系统( HVS) 特性。算法的目标为既要满足可见水印细节部分可见的要求,又可自适应地根据宿主图像特性嵌入水印,在提高水印的鲁棒性和安全性同时,还要保证不降低宿主图像的质量。水印算法如图1所示。

2. 2 嵌入系数

从人类视觉系统HVS的特点出发,为保证不降低宿主图像的质量和可见水印细节部分的可见性,对原始宿主图像各个分块进行分析。在此前提下,有三个主要方面决定了嵌入系数λk。具体来说,这三个方面可做如下表述:

( 1) 图像亮度的影响。原始图像的背景亮度越强,则人眼对其中的像素改变就不敏感,这使得水印的可见性不强,应该加强水印嵌入的强度。反之,如果原始图像背景亮度较弱,则应该降低水印嵌入的强度以保证原始图像的质量。对原始宿主图像进行分块DCT变换,得到8×8的系数矩阵。根据DCT变换的特点,经变换后各个子块的能量集中到直流分量中。而直流分量代表了子块的亮度信息,该值越大,子块的背景亮度越强,则嵌入系数就应该越大。

( 2) 边缘信息的影响。图像的边缘信息可以用来衡量图像的复杂度和对比度,边缘点密度高,则说明其对比度高,且图像复杂,在这些区域往往包含有重要信息。本算法中用canny算子对原始宿主图像的各个分块进行边缘检测,根据边缘点密度信息决定嵌入的强度。

( 3) 纹理强度的影响。在图像中纹理较强的区域,人的视觉系统对图像的失真和噪声的敏感度较低,故视觉门限明显高于其他区域。对于纹理强度,可以用灰度值方差来衡量。所以计算各个子块的平均灰度值,进而求得各个子块的灰度值方差,再由灰度值方差决定嵌入的强度。

若以L( k) 表示各个子块的亮度的归一化值,E( k) 表示各个子块的边缘密度的归一化值,T( k) 表示各个子块的纹理强度的归一化值。数学表示为:

其中,l( k) 为各个子图像块的亮度值,lmin和lmax分别表示子块中亮度最大和最小的值; e( k) 为各个子块的边缘密度值,emin和emax分别表示图像块中边缘密度最大和最小边缘密度值; t( k) 为各个子块的纹理强度值,tmin和tmax分别表示图像块中纹理强度最大和最小的值。

λk是由L( k) 、E( k) 、T( k) 这三者共同影响的,对其进行加权,即可得到λk,计算表达式为:

式中,wl是归一化亮度值的权值,we是归一化边缘密度值的权值,两者的和应当小于1,可以通过实验求得; L( k) 、E( k) 、T( k) 则可由式( 2) - ( 4) 得到。

2. 3 嵌入步骤

在嵌入可见水印之前,首先在宿主图像中选取和水印图像同样大小的区域并取为I,把选择的区域I和水印图像W分成互不重叠的8×8子块I( k) 、W( k) ,然后分别对各个子块进行DCT变换得到IDCT( k) 、WDCT( k) 。然后计算得到各个子块的嵌入系数λk,再根据式( 1) 得到嵌入水印后的各个子块的DCT系数,最后对各个子块进行IDCT变换获取嵌入水印的图像。

3 不可见水印的嵌入和提取算法

3. 1 嵌入准则

对于不可见水印的嵌入,重点要考虑的是保证其不可见性和鲁棒性。鉴于对这两个性质的要求,本文提出了一种自适应的嵌入算法。为了既满足水印图像的不可感知性,又满足对各种攻击的鲁棒性。根据离散余弦变换后的参数特性,低频系数具有较大的值,决定了图像的质量和视觉效果,而高频系数较易被低通滤波去掉,稳定性不好,所以选择中频分量并用加密的不可见数字水印序列对其进行调制[5]。

3. 2 加密算法

为了提高水印图像应对各种攻击的鲁棒性,首先对其进行加密处理。加密后的二值水印图像类似于随机二值序列,隐蔽性好,不易被察觉,同时,有助于提高水印系统的安全性。通过图像加密,如果攻击者没有加密的密钥,水印也很难被正确地检测出来。

目前水印加密技术有很多种,主要有Arnold变换、幻方、Hilbert曲线、混沌映射等。而Arnold变换和混沌映射是最常用的两种方法。本文中采用混沌映射中的Logistic映射法,其定义形式如下:

初始值选为0 < S0< 1,这样一来得到的序列S的取值范围是单极性的,且0 < Si< 1。一般的μ取值选为接近4的实数。为了将生成的实数序列S转化成二值序列,可以采用设置阈值的方法。

3. 3 嵌入过程

嵌入之前,首先由水印图像生成混沌水印。文章提出了一种改进的自适应算法[6,7,8],首先将原始宿主图像分成8×8的互不重叠的子块,然后对各个子块进行DCT变换,选取每一块图像子块DCT变换后的( 3,3) 和( 4,4) 位置作为具体的水印信息嵌入位。选择要嵌入水印信息的DCT中频系数P01: ( 3,3) ,P02: ( 4,4) ,计算其周围的六个DCT系数P1: ( 3,2) ; P2: ( 3,4) ; P3: ( 3,4) ; P4: ( 4,3) ; P5: ( 4,5) ; P6: ( 5,4) ,并计算这六个系数的均值

嵌入时,在每一块图像块中嵌入一位水印信息,选取加密后的水印的比特位W。首先对各个分块进行DCT变换,在每一个8×8系数矩阵中选取上文提到的六个系数,并计算相应的均值Ave再比较该值和P01、P02的大小。如果W = 1且Ave在P01、P02之间,则不用修改DCT系数,否则修改P01或者P02,使Ave的值介于P01、P02之间,即P( P01或者P02) =Ave±α; 如果W = 0且Ave在p01、P02之间,则通过修改P01或者P02,P( P01或者P02) = Ave±α,使Ave值要么大于P01和P02或者小于P01和P02。否则不用修改DCT系数。嵌入水印后再进行DCT变换得到包含水印的原始图像。

每个子块的嵌入强度α是自适应的,在嵌入可见水印的时候已经讨论了亮度和纹理的影响,而在嵌入不可见水印时也同样需要将两者考虑在内。所以令:

如上文所述,L( k) 表示各个子块的亮度的归一化值,T( k) 表示各个子块的纹理强度的归一化值,α( k) 是各个子块的不可见水印嵌入系数。

3. 4 提取过程

水印的提取过程和嵌入过程相反[9],首先对包含水印的图像进行分块DCT变换。然后得到六个系数值并计算得到其对应的均值Ave。比较P01、P02与Ave的大小,以Ave介于P01和P02之间代表信息“1”,其他的情况代表信息“0”。将“1”、“0”序列排成一维序列S,根据二维水印的大小转换为二维水印S'进而对S'进行解密,便可以恢复出水印图像。

4 实验与结果分析

选取512×512大小的灰度lena图像为原始宿主图像,128×128大小的二值图像为可见水印图像,64×64大小的二值图像为不可见水印图像。

4. 1 可见水印实验结果

实验结果如图2所示。

将可见水印嵌在宿主图像的右下角,得到下图的嵌入水印的lena图像。分别绘制嵌入前和嵌入后的灰度直方图便于做出对比,如图3所示。

可以看出,直方图分布变化不大,且更加平滑集中,说明水印和原图的统计特性较一致,攻击者若想破坏或移走可见水印,又不损坏原图的使用质量是很困难的。

4. 2 不可见水印实验结果

分别用原始密钥μ = 3. 99,S0= 0. 1,T = 0. 5对水印图像进行logistic加密。不可见水印嵌入时,嵌入强度α越大,抗噪声能力越强,但不可感知性就越差。嵌入提取的仿真实验结果如图4所示。

为验证算法的鲁棒性和可靠性,对嵌入水印后的图像进行攻击实验[10]。如JPEG压缩、噪声干扰、滤波、剪切等。在各种攻击后提取出来的水印图像如图5所示。

如图5所示,该算法在攻击试验下仍能够恢复出水印。在性能上,算法面对JPEG压缩和均值滤波下的鲁棒性较好,但是在高斯噪声和椒盐噪声的干扰下恢复的效果较差。

5 结束语

基于离散余弦变换的图像压缩研究 篇3

图像压缩编码技术可以追溯到1948年提出的电视信号数字化,到今天已经有50年的历史了。20世纪50年代和60年代的图像压缩技术由于受到电路技术等制约,仅仅停留在预测编码、亚采样以及内插复原等技术的研究上,还很不成熟。自80年代后期以来,由于小波变换理论、分形理论、人工神经网络理论、视觉仿真理论的建立,人们开始突破传统的信源编码理论,例如不再假设图像是平稳的随机场。图像压缩编码向着更高的压缩比和更好的压缩质量的道路前进,进入了一个崭新的、欣欣向荣的大发展时期。

1 图像的编码表示

本质上说,图像压缩就是对要处理的图像源数据用一定的规则进行变换和组合,从而达到以尽可能少的代码(符号)来表示尽可能多的数据信息的目的。压缩通过编码来实现,所以,一般把此项处理称为压缩编码。从信息论的角度来看,压缩就是去掉信息中的冗余,即保留不确定的信息,去掉确定的信息,也就是用一种更接近信息本质的描述来代替原有冗余的描述。这个本质的东西就是信息量。

在数字图像压缩中,有三种基本的数据冗余:像素相关冗余、编码冗余、心理视觉冗余。如果能减少或者消除其中的一种或多种冗余,就能取得数据压缩的效果。无损压缩也称冗余度压缩方法,利用数据的统计冗余进行压缩,具体来说就是解码图像应与压缩编码前的数据严格相同,没有失真,从数学上讲是一种可逆运算。有损压缩方法也称为信息量压缩方法,利用了人类视觉或听觉对图像或声音中某些频率成分不敏感的特性,允许压缩过程中损失一定的信息,所损失的部分对理解原始图像的影响较小,却换来了大得多的压缩比。

2 离散余弦变换理论基础

在图像处理的广泛领域中,傅里叶变换起着非常重要的作用,包括图像增强、图像分析、图像复原和图像压缩等。在图像数据的数字处理中常用的是二维离散傅里叶变换,它能把空间域的图像转变到频域上进行研究,从而很容易地了解到图像各空间频域成分,进行相应处理。在计算机上使用的傅里叶变换通常都是离散形式的,使用离散傅里叶变换的根本原因有:第一,DFT的输入、输出均为离散形式的,有利于计算机处理;第二,计算机DFT存在快速算法——快速傅里叶变换。

离散余弦(Discrete cosine Transform,DCT)是与傅里叶变换相关的一种变换,它类似于离散傅里叶变换,但是只使用实数,相当于一个长度大概是它两倍的离散傅里叶变换。通常所说的离散余弦变换指的就是这种。它的逆通常相应地被称为反离散余弦变换、逆离散余弦变换或者IDCT。任何连续的实对称函数的傅里叶变换中都只含余弦项,因此余弦变换与傅里叶变换一样有明确的物理量意义。因此经常被图像处理使用,用于对图像进行有损数据压缩。这是由于离散余弦变换具有很强的“能量集中”特性:大多数的自然信号的能量都集中在离散余弦变换后的低频部分,而且当信号具有接近马尔可夫过程的统计特性时,离散余弦变换的去相关性接近于K-L变换(Karhunen-Loève变换),它具有最优的去相关性性能。

3 使用离散余弦变换进行图像压缩

离散余弦变换是先将整体图像分成N×N像素块,然后对N×N像素块逐一进行离散余弦变换。由于大多数图像的高频分量较小,相应于图像高频成分的系数经常为零,加上人眼对高频成分的失真不太敏感,所以可用更粗的量化,因此传送变换系数所用的数码率要大大小于传送图像像素所用的数码率。到达接收端后,再通过反离散余弦变换回到样值,虽然会有一定的失真,但人眼是可以接受的。

M×N维矩阵A=(ajk)的离散余弦变换定义为:

buv=cucvj=0Μ-1k=0Ν-1ajkcos(2j+1)uπ2Μcos(2k+1)vπ2Μ

其中,cu,cv由下式确定:

cu={1Ν,u=02Ν,1uΝ-1cv={1Ν,v=02Ν,1vΝ-1

其离散余弦变换为:

ajk=j=0Μ-1k=0Ν-1cucvbuvcos(2j+1)uπ2Μcos(2k+1)vπ2Μ

利用离散余弦变换进行图像压缩技术的计算机过程为:首先从原始图像中读取出利用数字矩阵表示的RGB图像数据,为了编写出可操作性较强程序一般将该矩阵分为16×16或者8×8的小方阵,以每个小方阵为单位,进行离散余弦变换,变换完毕后每个方阵的低频部分就集中到了矩阵的左上角,而高频部分就集中到了右下角,而它的低频部分代表了图像的大部分信息,相比之下高频部分就显得不是特别重要了,此时可以根据实际需要或对压缩比的要求来决定对右下角高频部分舍弃的程度。

N代表像素数,一般N=8,8×8的二维数据块经离散余弦变换后变成8×8个变换系数,这些系数都有明确的物理意义:u代表水平像素号,v代表垂直像素号。当u=0,v=0时,F(0,0)是原64个样值的平均,相当于直流分量,随着u,v值的增加,相应系数分别代表逐步增加的水平空间频率分量和垂直空间频率分量的大小。

输入图像首先被分成8×8的图像子块,然后对每个图像子块计算二维离散余弦变换。离散余弦变换的系数经过量化,编码并传输;在读取图像时,解码出离散余弦变换系数,进行二维离散余弦逆变换,最后将子块放到图像中。Matlab图像处理工具箱中提供的二维DCT变换及DCT反变换函数。DCT2实现图像的二维离散余弦变换,其语法格式为:B=DCT2(A),B表示返回图像A的二维离散余弦变换值,其大小与A相同,且各元素为离散余弦变换的系数B(i,j)。通常情况下,一副图像并不会正好就是8的倍数,这样在边角就会出现非方阵的矩阵,此时使用B=DCT2(A,m,n)。Matlab对于此处理规则是如果mn比图像A大,在对图像进行二维离散余弦变换之前,先将图像A补零至m×n;如果mn比图像A小,则进行变换之前,将图像A剪切。IDCT2可以实现图像的二维离散余弦反变换,其语法格式为:B=IDCT2(A);B=IDCT2(A,m,n)。对于非方阵的处理规则同上。

图1是Matlab自带的用离散余弦变换(DCT)进行压缩的实例截图,从图中可以看出,DCT技术很好地还原了图像,而其达到了比较高的压缩比。其中的Original Trees Image代表了原始图像,Reconstructed Image代表了压缩后的图像。可以看出,有一定的失真但不明显,后面的Error Image代表了原图像和压缩图像之间的误差,大体可以看出一些轮廓。Matlab采用了8×8的小方阵进行DCT变换。

上面采用的是灰度图,下面采用Windows XP自带的彩色图片进行离散余弦变换,如图2所示,采用较高的压缩比,失真较为明显。

4 离散余弦变换算法的改进

二维离散余弦变换的常规算法是行列法,对于计算N×N的矩阵,需要计算2N个一维的向量,为了更有效地计算二维,有学者提出了一种直接作用于二维数据集的快速算法,该算法对于计算N×N的矩阵,只需计算N个一维向量,因此可以有效地减少计算时间,所需乘法次数只是常规算法的50%。目前国内外学术界关于如何加快DCT变换的研究进行的比较多,成熟的算法还有快速哈特莱变换(也就是离散哈特莱变换的快速算法)、快速余弦变换、快速沃尔什-哈达玛变换、快速数论变换、快速多项式变换等。

5 结 论

离散余弦变换具有算法简单,易于硬件实现等优点,从而广泛应用于图像压缩领域。然而,它在低比特率条件下的方块效应成了不容忽视的瓶颈缺陷。原因就在于离散余弦变换处理的图像是分块进行的,块与块边界两边的像素相关性不能去掉,从而形成了明显的方块边界。若将DCT变换与其他编码方法如小波变换、分形等相结合,将会得到更好的效果。

摘要:图像压缩是数据压缩技术在数字图像上的应用,其目的是减少图像数据中的冗余信息,从而用更加高效的格式存储和传输数据。图像压缩可以是有损数据压缩也可以是无损数据压缩。这里所研究的是有损压缩技术,对于此类技术,变换编码是最常用的方法,如离散余弦变换(DCT)或者小波变换这样的傅里叶相关变换,然后进行量化和用熵编码法压缩。

关键词:图像压缩,离散余弦变换,傅里叶变换,熵编码

参考文献

[1]郑戟明,曹玉茹.基于Matlab的图像压缩处理及其实现[J].微计算机信息,2010(10):143-144.

[2]练华,宋宝瑞.基于小波变换的分形图像编码[J].上海交通大学学报,2004,38(4):637-640.

[3]吴崇明.基于Matlab的系统分析与设计:小波变换[M].西安:西安电子科技大学出版社,2000.

[4]姚庆栋.图像编码基础[M].北京:清华大学出版社,2006.

[5]闫敬文.数字图像处理技术与图像图形学基本教程[M].北京:科学出版社,2002.

[6]黄伟,龚沛曾.图像压缩中的几种编码方法[J].计算机应用研究,2003,20(8):67-69.

[7]周晓光.极化SAR图像分类方法研究[D].长沙:国防科学技术大学,2008.

[8]杨旭东,王万良.基于改进的MSE准则的小波图像压缩[J].计算机辅助设计与图形学学报,2003,15(4):402-409.

改进离散余弦变换域 篇4

自1974年N.Ahmed等人提出了离散余弦变换(Discrete Cosine Transform,DCT)算法后,很多学者对DCT算法的实现进行了研究。陈禾等人[1]总结了前人的研究,将DCT算法的结构归纳为5类,其中基于乘法器的DCT结构一直是很多学者研究的对象,具有代表性的有W.H.Chen、LLM[2]、AAN[3]等算法。LLM算法将1-D DCT所需的乘法器个数减小到理论最小值11个。

在编解码器应用方面,Xvid的MPEG-4编解码器使用LLM算法的12个乘法器形式,而很多JPEG编码器用AAN算法。李晗等人[4]利用加法和移位器代替乘法器,在提高频率上取得了比较好的效果,但是即使将其运用到LLM算法中,2-D DCT仍需要使用184个加法器。

本研究通过引入整数变换矩阵和增加缩放模块,设计面积小、速度快、频率高的且可复用多个标准的2-D DCT。

1 离散余弦变换DCT原理

离散余弦变换DCT,是指对一帧图像以块为单位(通常是8×8或4×4像素块),通过2维DCT变换将图像从空间域变换到频域的过程,目的在于去除像素间的相关性。

二维N×N图像块的DCT变换的定义[5]如下:

2 二维DCT的VLSI结构优化设计

2.1 算法优化

整数矩阵的引入,一方面有效地减少计算量,另一方面由于Ef的运算被放到量化端和量化同时考虑,其矩阵系数由量化步长QP的大小决定。所以H.264标准对于DCT的处理和别的标准不同,很难用于其他标准中,即不具有普遍性。笔者考虑将Cf矩阵引入,得到Ef矩阵:

其中,a,b,c,d,e,f都是浮点数,由于在VISI中运算不方便,将其转化为定点数,经过扩展放大216得到a=8 192,b=7 740,c=10 486,d=7 346,e=9 777,f=13 159。

如果直接乘以缩放矩阵式(3)的64个元素需要64个乘法,耗费时钟多,面积大。本研究考虑引入流水线技术,具体有以下两种方案:

(1)通过在乘法器前面增加选择器可以压缩到8个乘法器。例如,如果2-D DCT按列输出,则每一列相应的元素都乘以上面矩阵中对应列的相应元素,由于对称性,可以在让每个乘法器在3个数之间选择,送出乘数,进行相乘,如第1个乘法器在a,b,c之间切换,如果当前输入列为第1列或者第4列,则输出到第1个乘法器的一个乘数为a,另一个乘数为相应列的第

写成矩阵形式为F=AfAT,其中A矩阵为浮点数矩阵,在H.264 High Profile标准中,将A阵进行整数化,矩阵形式等效为:Y=(CfXCfT)Ef,其中Cf矩阵[6]为:

1个数据,如果是第2、4、6、8列,则选择相应的乘数为b,如果是第3、7列则选择乘数为c。同理,其他6个乘法器类似。

(2)如果对频率要求比较高,考虑到乘法器的延迟比较大,将乘法器用加法器和移位寄存器替代。根据3种乘数并行计算出乘法结果。例如,由于第2维DCT送出的某一列的第1个像素结果,有可能进行的乘法是“×a”、“×b”、“×c”。为了取代这个乘法器,先用加法器和移位器取代这些乘数,如:b=213-29+26-22。这样可以通过加法和移位来计算出当前数据经过3种乘法之后的结果。通过计数当前列数即可选出最后的结果。由于每个系数最多有3个加法器即可实现,因此,方案1需要的一级乘法器延迟可以变成2级加法的延迟,提高了工作频率。取代8个乘法器所需加法器数量如表1所示。

由表1可知,每组改成2级加法提高工作频率后,用66个加法器取代8个乘法器。针对不同的应用需求(频率、面积)可以考虑不同的方案。

2.2 算法验证

对以上算法进行C语言建模,并将其移植到Xvid的MPEG-4的开源代码[7]编码器的DCT中。在不改变其他模块(包括IDCT)的前提下,通过输入不同的YUV原始视频序列(格式为4:2:0),先用标准代码进行编码,再用改进后的代码进行编码,分别通过Xvid的MPEG-4解码器进行解码。最后分别将解码得到的YUV文件和原始YUV文件,在亮度Y、色度Cb和Cr分量上进行PSNR值对比。统计每个序列300帧中每种成分的均值和所有序列在Y、Cb、Cr上的均值。本研究所用YUV原始视频序列均为标准测试序列,图像大小为CIF,比特率设为512 Kbps时统计所得结果如表2、表3所示。

YUV序列1~9视频序列分别是akiyo,coastguard,container,mother_daughter,stefan,tempete,flower,vectra,footbal,帧数为300。表中Y0,Cb0,Cr0分别代表Xvid标准算法编码所得视频序列的亮度Y和色度Cb,Cr分量的PSNR值,而Y1,Cb1,Cr1,Y2,Cb2,Cr2分别为方案1和方案2在各分量的PSNR值。

两种方案相对于Xvid标准算法信噪比变化如表4所示,数值如果为正,表明PSNR值有所改善,如果为负,表明PSNR值有所损失。由表4可以看到本研究的两种方案图像质量损失不超过0.015 d B,而且方案2显示出本研究算法在色度分量上分别改善了0.004 d B和0.015 d B。经过大量统计,结果表明本研究提出的算法保证了图像质量,精度满足要求。

3 二维DCT的硬件实现

3.1 整体结构

本研究采用行列分解法进行二维DCT的设计,其硬件实现框图如图1所示。

整个2-D DCT采用流水线设计,每个时钟输入为8个数据,输出也是8个数据,中间除了流水深度需要的时钟外,不需要任何多余的等待,速度快。同时可以根据不同的应用需求以及对频率和速度要求更改流水节拍,实现速度和频率的最优化。

3.2 一维DCT的实现

这里一维DCT要实现的是式(2)中的Cf矩阵,其硬件实现如图2所示。硬件实现的时候可以设计成4级流水或2级流水。

8×8块的一行数据经过4级加法器之后输出。如果对频率要求比较高,考虑用4级流水,图2的1、2、3、4分别为1D-DCT的对应4级加法,在第3级的加法中上半部分的数据需要进行寄存以保证数据的同步。如果需要时钟周期少,则用2级流水,图中5和6分别对应2级加法。图中的“”为右移操作。

为了保证数据不溢出,对于第1级一维DCT输入的数据精度为9 bit,输出数据精度为13 bit。对于第2级一维DCT输入的数据精度为13 bit,输出为17 bit。

3.3 转置的实现

为了保证速度,流水作业不能被打断,如果用单口RAM乒乓操作则实际所需要的RAM数为16个深度为1、宽度为104 bit的RAM,所以无论从RAM的产生还是面积的角度来考虑都不现实。A.Aggoun等人[8]使用2组三角矩阵堆实现了矩阵转置的功能,通过控制8个8选1选择器来连接,这种结构需要72个寄存器,流水的深度为9 clk。李晗等人实现4×4块只用了16个寄存器,节省了面积和时钟。

本研究使用64个寄存器的寄存器组进行转置的硬件实现方案,如图3所示。图中每个方框(如r00)都是由一个选择器和一个寄存器组成。举例说明,如果输入的数据是按照8×8的列顺序输入,依次是x0,x1,…,x7。在第1个时钟将x0~x7依次存入寄存器r70,r60,…,r00中,第2个时钟,第2列的寄存器将第一列r70~r00的数据依次存入r71~r01中,而r70~r00的数据还是从输入端取数据存入。如此执行下去,直到第8个时钟,整个8×8块的数据已经存入寄存器组中,此时寄存器r77,r76…r70的值已经有效,依次从中取出数据,经过选择器按顺序排好输出,此时输出的是上个矩阵的第1列。在第9个时钟,r77~r70从r67~r60中取数据并且更新寄存,而r67~r60从r57~r50中取数据并且寄存,其他行的数据类似操作,唯独r07~r00分别从输入端取数据x0~x7并且寄存。第16个时钟时第2个8×8块的数据已经寄存完毕,可以依次从r77~r07的寄存器中取数据。如此流水下去,便完成了行列转换,流水深度为8 clk,中间不需要等待,每个时钟每个寄存器都处于工作状态,提高了寄存器的利用率,并且节省了面积,提高了速度。

3.4 缩放模块的实现

(1)方案1:使用乘法器。

采用方案1的缩放模块的硬件实现如图4所示,使用8个乘法器来实现。通过8个3选1选择器分别选择不同的乘法器系数,control通过计数确定当前输出的数据是8×8块中的第几列。如果是第1、5列,则8个选择器依次选择8 192,7 740,10 486,7 740,8 192,7 740,10 486,7 740。如果是第2、4、6、8列,即依次选7 740,7 346,9 777,7 346,7 740,73 46,9 777,7 346。如果是第2、4、6、8列,则依次选择10 486,9 777,13 159,9 777,10 486,9 777,13 159,9 777。本方案的延时主要是1级乘法器。

(2)方案2:使用加法器和移位器代替乘法器。

采用两级的加法器和移位器代替乘法器,提高电路的工作频率,如图5所示。第1个数据经过并行的3路输入,每一路都由移位器和加减法器组成,通过control模块对输入的数据所在8×8块的列数进行选择,以面积换速度,通过3路并行工作,最后控制选择输出。本方案的延时主要在2级加法器。

两种方案都需进行缩放,由于这些系数都经过放大216倍来保证中间计算值的精度,最后DCT结果需要经过右移16 bit,需要注意数据的截断。

3.5 性能对比

本研究用Verilog HDL语言描述电路,分别用VCS和DC进行了仿真和综合,下面将本研究与其他文献所设计的2-D DCT进行性能对比。2-D DCT算法使用乘法器和加法器个数对比如表5所示。

由表5可见,本研究提出的2种方案计算复杂度比其他文献都小。其中,将文献[4]应用于LLM的24个乘法器和64个加法器2D-DCT方案需要184个加法器。若应用于理论上最低乘法器(11个)的结构时,也需要168个加法器。AAN算法中1D-DCT蝶形中用了5个乘法器,但每次一维DCT后要乘以8个缩放系数需要额外的6个乘法器,或二维DCT后乘以一个缩放矩阵,对于除JPEG外的其他标准不适用。

ASIC设计实现2-D DCT性能对比如表6所示[9,10],本研究所设计的2-D DCT完成单个8×8像素块的周期被降到20个时钟频率能达到510 MHz。在90 nm CMOS工艺下,DC综合最高可以达到840 MHz。若数据保持流水送入,则只需要经过3.09μs可完成一帧高清1 080 pixels图像的数据处理,满足工程应用需求。

FPGA原型验证采用的器件为Xilinx Virtex-5XC5VLX220-1 FF1760,综合工具采用Xilinx ISE。对于2-D DCT,计算周期为20 clk时,方案1综合频率为180 MHz,方案2为200 MHz,周期为25 clk时方案2为290 MHz。

4 结束语

本研究旨在通过设计适用于MPEG-4,H.263,JPEG,H.264等编码器芯片的快速8×8 DCT的IP核,研究并设计了适合于VLSI实现的快速2-D DCT结构,利用行列分解法,通过引入整数变换矩阵、增加缩放模块实现,经算法验证满足精度要求。转置的实现方案提高了寄存器的利用率,并且减小了流水深度。提供了2种实现方案实现缩放模块,可以根据不同的应用需求在面积、速度、频率之间权衡。采用流水线设计,并减小了流水深度,提高了速度和频率。具有灵活性和实用性。

用Verilog HDL进行硬件设计,并用VCS进行了仿真,在90 nm CMOS工艺下电路综合频率达到840 MHz,FPGA模拟验证频率达到290 MHz,完全满足设计要求。与其他文献2-D DCT算法结构相比,本研究提出的结构具有面积小、速度快、频率高的特点。不仅可以很好地应用于MPEG-4和H.263和JPEG等标准,还将H.264 High Profile中的8×8整数DCT进行了复用,是一个基于多标准的2-D DCT的IP核,可以很好地应用于支持多标准的编码器中。

摘要:针对多标准图像视频编码器中二维离散余弦变换的复用问题,设计了适用于MPEG-4,H.263,JPEG,H.264 High Profile编码器芯片的快速8×8 2-D DCT IP核,并完成了RTL设计、仿真和FPGA原型验证。通过引入H.264 High Profile 8×8整数变换矩阵和增加缩放模块,完成了多个标准中2-D DCT的复用。经Xvid MPEG-4编解码器验证,满足精度要求。设计采用流水线技术,并优化了速度和频率,在90 nm CMOS工艺下频率达到840 MHz。研究结果表明,该技术能很好地应用于多标准编码器中。

关键词:离散余弦变换,多标准图像与视频编码,JPEG,MPEG-4,H.264

参考文献

[1]陈禾,毛志刚,叶以正.DCT快速算法及其VLSI实现[J].信号处理,1998,14(A12):62-70.

[2]LOEFFLER C,LIGHTENBERG A,MOSCHYTZ G S.PracticalFast 1-D DCT Algorithms with 11 Multiplications[C]//Int ConfAcoustics,Speech and Signal Processing.Glasgow:[s.n.],1989:988-991.

[3]ARAI Y,AGUI T,NAKAJIMA M.A fast DCT-SQ schemefor images[J].Transactions of Institute of Electronics,Information and Communication Engineers,1988,E71(11):1095-1097.

[4]李晗,孙义和,向采兰.二维离散余弦变换及其逆变换的VLSI实现[J].微电子学,2008,38(3):326-329.

[5]毕厚杰.新一代视频压缩编码标准—H.264/AVC[M].北京:人民邮电出版社,2005:112-114.

[6]GORDON S,MARPE D,WIEGAND T.Simplified use of8×8 transforms[S].JVT Doc,JVT-K028,Munich,2004.

[7]XVID MPEG-4 VIDEO CODEC[DB/OL].[日期不详].www.xvid.org.

[8]AGGOUN A,JALLOH I.Two-dimensional DCT/IDCT ar-chitecture[J].IEEE Proc.Computer Digital Technolo-gy,2003,150(1):2-10.

[9]KURODA T.A 0.9 V,150 MHz,10 mV,4 mm2,2-D dis-crete cosine transform core processor with variable threshold-voltage(VT)scheme[J].IEEE J.SSC,1996,31(11):1770-1779.

改进离散余弦变换域 篇5

数字水印采用技术隐藏保护了重要的信息和文件。它通常采用类似扩频图像技术来隐藏信息。一般基于常用的有DCT变换、DWT变换、DFT变换。文章基于DCT算法进行验证, 对水印系统中图像进行质量评价。

离散余弦变换简称DCT, 傅立叶变换简化方法之一。基于DCT域的数字水印算法, 根据对宿主图像进行DCT方法计算, 分为两大类, 一类是直接对整幅图像进行DCT计算, 选取合适频段的系数, 嵌入水印。另一类是先将整幅图像分成n块, 分别对每一块进行DCT计算, 并在每一块中选取合适频段的系数, 将水印信息分散嵌入到每一块所选取的DCT系数中。

在这里采用的分块DCT算法。原始图像按8×8分成互不重叠的子块。首先计算每一个子块的方差值, 选择方差值最大的前n块, 然后依据系统密钥进行DCT变换, 选取每一块中频系数的随机序列, 最后通过子块的DCT逆变换生成含水印的图像。水印的提取是上述过程的逆过程。该算法的嵌入流程图如1所示, 水印提取过程如图2所示。

文章采用MATLAB软件进行仿真, 选择的原始图像为512×512的256等级的灰度标准图像。将水印嵌入原始图像再提取之后, 为了评价所得到图像质量, 使用峰值信噪比来衡量两幅数字图像之间的数值差别:

原始图像嵌入水印后, 峰值信噪比为39.01, 如图3 (1) 所示, 图像具有良好的不可见性, 得到了较好的主观视觉效果。然后对加入水印的图像进行水印提取, 得到水印图像如图3 (2) 所示, 提取的水印图像与原始水印图像几乎没有差异。

最后对该算法产生的含水印图像进行了一系列攻击实验。

(1) 噪声攻击。在这里对图像分别进行高斯噪声攻击和椒盐噪声攻击, 得到提取水印与原水印的相关度分别为0.9721、0.9845, 提取的结果如图4所示。

(2) 左上角四分之一剪切。对图像进行四分之一剪切后, 得到提取水印和原水印的相关度为0.8221。水印提取的结果如图5所示。

通过MATLAB软件仿真结果可见, 基于DCT域的数字水印算法在文件保护上发挥着很好的作用, 该算法具有较好的提取效果, 具有一定的抵抗能力, 能在信息保护领域发挥重要的作用。

摘要:数字水印技术在所有权保护、认证、指纹、拷贝控制、访问控制和广播监控方面都有重要的应用。本项目将研究方向锁定在变换域上, 提出了新的解决方案。

关键词:数字水印,余弦变换,噪声攻击

参考文献

[1]孙圣和, 陆哲明, 牛夏牧.数字水印技术及应用[M].科学出版社, 2004.

[2]王丙锡, 陈琦, 邓峰森.数字水印技术[M].西安电子科技大学出版社, 2003.

改进离散余弦变换域 篇6

离散余弦变换(Discrete Cosine Transform,简称DCT)常被认为是对语音和图像信号进行变换的最佳方法。为了工程上实现的需要,国内外许多学者花费了很大精力去寻找或改进DCT的快速算法。由于近年来DSP的发展,加上专用集成电路设计上的优势,这就牢固地确立DCT在目前图像编码中的重要地位,成为H.261、JPEG、MPEG等国际上公用的编码标准的重要环节[1]。MATLAB是由美国Math-Works公司推出的用于数值计算和图形处理的科学计算软件,它集数值分析、矩阵计算、信号处理和图形显示多种功能于一体,构成了一个方便的界面友好的用户环境[2]。MATLAB中的图像处理工具箱是许多基于MATLAB技术计算环境的函数包的集合图形功能完备,本文主要讨论了DCT变换方法,并讨论了应用MATLAB中的图像处理工具箱中的相关函数和命令来实现离散余弦变换的信号压缩算法的仿真。

2 DCT变换及在matlab中的实现

DCT是一种与傅立叶变换紧密相关的数学运算。在傅立叶级数展开式中,如果被展开的函数是实偶函数,那么其傅立叶级数中只包含余弦项,再将其离散化可导出余弦变换,因此称之为离散余弦变换。下面主要以二维变换为例介绍DCT变换。

2.1 离散余弦变换(DCT)正反变换公式

正变换公式:

式中:

反变换公式:

式中:x,y为空间域采样值;u,v为频率域采样值。其中f(x,y)是空间域二维向量之元素,F(u,v)是变换系数阵列元素。在二维离散余弦变换中,通常数字图像用像素方阵表示,即M=N[3],在这种情况下,二维离散余弦的正反变换可简化为

式中

2.2 在MATLAB仿真中的实现

主要是采用二维DCT变换的矩阵式定义来实现的,矩阵式定义可以表示为

其中[f(x,y)]是空间数据阵列,[F(u,v)]是变换系数阵列,[A]是变换矩阵,[A]T是[A]的转置[4]。

3 实验研究

离散余弦变换DCT的MATLAB实现方法,基于FFT的快速算法,这是通过MATLAB工具箱提供的dct和idct函数实现的,二维DCT变换和逆变换指令为dct2和idct2[5]。

1)对一语音信号进行压缩处理的matlab实现程序如下:

得到原始信号、原始信号的DCT变换波形、经过压缩后的DCT波形以及通过压缩后的DCT波形重建的信号波形如图1。

可以看出,当波形数据做DCT变换后压缩到原数据的12.94%左右时,根据压缩信号重建的时域波形存在失真,但在工程上这样的失真是允许的。在一定失真度指标下,通过DCT变换可以使数据得到很大程度的压缩。

2)对一图像进行压缩处理的matlab实现程序如下[6]:

程序结果如下:

图像进行离散余弦变换后的结果矩阵如图2所示,显示DCT的结果中能量大部分集中在左上角。

根据矩阵左上角部分数据就可以重建图像,不同门限下的压缩率是不同的,对应的原始图像、重建图像如图3所示。

4 结束语

DCT具有很好的能量压缩性能,而且DCT变换是实数变换,便于工程实现,重建信号失真较小,压缩质量令人满意。DCT在本文中用MATLAB来实现离散余弦变换的信号压缩,具有方法简单、速度快、误差小的优点,免去了大量矩阵计算。

参考文献

[1]徐明远,邵玉斌.MATLAB仿真在通信与电子工程中的应用[M].西安:西安电子科技大学出版社,2005:267-268.

[2]孙兆林.MATLAB6.x图像处理[M].北京:清华大学出版社,2002:163-164.

[3]贾永红.计算机图像处理与分析[M].武汉:武汉大学出版社,2001:201-203.

[4]朱秀昌,刘峰,胡栋.数字图像处理与图像通信[M].北京:北京邮电大学出版社,2002:154-155.

[5]飞思科技产品研发中心.MATLAB6.5辅助图像处理[M].北京:电子工业出版社,2003:72-73.

上一篇:发展风险下一篇:多元线性规划