您现在的位置:首页 >> 技术文章 >> 图像语音处理 >> 内容

图像的DCT变换

时间:2013-1-3 22:24:52 点击:

  核心提示: 数字图像,又称数码图像或数位图像,是二维图像用有限数字数值像素的表示。数字图像是由模拟图像数字化得到的、以像素为基本元素的、可以用数字计算机或数字电路存储和处理的图像。...

1章 相关知识

1.1 数字图像

    数字图像,又称数码图像或数位图像,是二维图像用有限数字数值像素的表示。数字图像是由模拟图像数字化得到的、以像素为基本元素的、可以用数字计算机或数字电路存储和处理的图像。

1.2 数字图像处理

     数字图像处理(DigitalImageProcessing)是通过计算机对图像进行去除噪声、增强、复原、分割、提取特征等处理的方法和技术。数字图像处理的产生和迅速发展主要受三个因素的影响:一是计算机的发展;二是数学的发展(特别是离散数学理论的创立和完善);三是广泛的农牧业、林业、环境、军事、工业和医学等方面的应用需求的增长。

1.3 DCT变换在数字图像应用

     JPEG各类图像压缩算法中,基于离散余弦变换(DCT ,Discrete Cosine Transform) 的图像压缩编码过程称为基本顺序过程,它应用于绝大多数图像压缩场合, 并且它能在图像的压缩操作中获得较高的压缩比。另外,重构图像与源图像的视觉效果基本相同。DCT变换是在最小均方误差条件下得出的最佳正交变换,且已获得广泛应用, 并成为许多图像编码国际标准的核心。DCT变换的变换核心为余弦函数,计算速度较快, 有利于图像压缩和其他处理。 MATLAB是由美国Math2Works公司推出的用于数值计算和图形处理的科学计算软件, 它集数值分析、矩阵计算、信号处理和图形显示多种功能于一体,构成了一个方便的界面,友好的用户环境。本文主要应用MATLAB6.5中发布的影像处理工具箱中的相关函数和命令来实现基于DCT的图像压缩编码理论算法的仿真。 

2章 课程设计分析

2.1 DCTMATLAB的实现

   第一种方法是使用函数dct2,该函数使用一个基于FFT的快速算法来提高当输入较大的输入方阵时的计算速度。dct2函数的调用格式如下:   

         dct2  B=(A,[M N])B=dct2(A,M,N)

其中,A表示要变换的图像,MN是可选参数,表示填充后的图像矩阵大小。B表示变换后得到的图像矩阵。

  第二种方法使用由函数dctmtx返回的DCT变换矩阵,这种方法较适合于较小的输入方阵(如或方阵)。dctmtx的调用格式如下:

                  D=dctmtx(N)

其中,N表示DCT变换矩阵的维数,DDCT变换矩阵。

2.2 DCT 的基本原理

   DCT 变换在图像压缩中有很多应用,它是JPEGMPEG 等数据压缩标准的重要数学基础。在压缩算法中,先将输入图像划分为 8×8 16×16,的图像块,对每个图像块作DCT 变换;然后舍弃高频的系数,并对余下的系数进行量化以进一步减少数据量;最后使用无失真编码来完成压缩任务。解压缩时首先对每个图像块做 DCT 反变换,然后将图像拼接成一副完整的图像。

DCT 的定义 :

  DCT 变换利用傅立叶变换的性质,采用图像边界褶翻将图像变换为偶函数形式,然后对图像进行二维傅立叶变换,变换后仅包含余弦项,所以称之为离散余弦变换。

  二维离散余弦变换DCT(DiscreteCosine Transform)的定义为,假设矩阵A 的大小为M ×N

            

            

          

其中,称为矩阵A DCT 系数。在MATLAB 中,矩阵的下标从1 开始而不是从0 开始的,所以MATLAB 中的矩阵元素A(1,1)B(1,1)分别对应于上面定义中的值
依此类推。 DCT 是一种可逆变换,离散反余弦变换定义如下:

            

            

上式的含义是任何M×N 的矩阵A 都可以表示为一系列具有下面形式的函数的和:

            

这些函数称为 DCT 变换的基函数。这样, 就可以看成是应用于每个基函数的加权。

DCT 的算法 :

离散余弦变换可以由定义式出发进行计算。但这样的计算量太大,在实际应用中很不方便。所以需要寻求一种快速算法。以一维离散余弦变换为列,对快速算法进行推导。

             

                  

 

       对时域数据向量做如下列延拓:

        x=0,1,2.........N-1        fe(x)=f(x)

        x=NN+1........2N-1   fe(x)=0

        fe(x)的离散余弦变换可写成下列:

                                   

                                                                                                            

                 =

                 =

由上式可见:

                         

2N点的;离散傅里叶变换所以在离散余弦变换时,可以吧序列长度延拓为2N,然后作离散傅里叶变换,产生的结果取其实部即可得到余弦变换。

同理对于离散余弦变换IDCT,可首先在变换空间将[F(u)]作如下延拓:

u=0,1,2,3........N-1               Feu=Fu

u=N,N+1N+2,.........,2N-1         Feu=0

那么,反变换可表示:

              

                 =

                 =  

由上式可见,IDCT可以由 2N点的IDFT的快速算法实现。

3 仿 真

MATLAB 的影像处理工具箱中dctmtx 函数编写基于DCT的变换的图像压缩:

 %出发点是采用分别对分解后的每个数据小方块进行DCT变换

             I=imread('plane1.gif');                                  

 %装入原始图像,该图片在安装matlab的目录中找,原图为灰度图像

             I1=im2double(I);

%图像存储类型转换,将图像变换成双精度格式

             T=dctmtx(8);

%离散余弦变换矩阵,处理后返回一个8 ×8 DCT 变换矩阵

               B=blkproc(I1,[8,8],'P1*x*P2',T,T');                                                                              

%对原图像进行DCT变换,每个不同8 ×8 块应用矩阵式′P1*x *P2′进行处理,必要时补0 ,其中P1 = T ,P2= T

mask= [ 1 1 1 1 0 0 0 0

        1 1 1 0 0 0 0 0

        1 1 0 0 0 0 0 0

        1 0 0 0 0 0 0 0

        0 0 0 0 0 0 0 0

        0 0 0 0 0 0 0 0

        0 0 0 0 0 0 0 0

        0 0 0 0 0 0 0 0];

%二值掩模,用来压缩DCT 的系数,选取10 DCT 系数重构图像

B2=blkproc(B,[8,8],'P1.*x',mask);%只保留DCT 变换的10个系数,数据压缩,丢弃右下角高频数据

I2=blkproc(B2,[8,8],'P1*x*P2',T',T);%进行DCT反变换,得到压缩后的图像

subplot(2,2,1)

imshow(I1)

title('plane1.gif')

subplot(2,2,2)

imshow(I2)

title('压缩后的图像');%显示原始图像I1和压缩图像I2

                

3.1 仿真结果 

         

3.2 压缩后的图像

DCT变换三维投影:

3.3 未经DCT变换前的三维投影

3.4 DCT变换后的三维投影

4章结果分析

    p,q不断增大时,相应的余弦函数的频率也不断增大,得到的系数可认为就是原始图像信号在频率不断增大的余弦函数上的投影,所以也被称为低频系数、中频系数和高频系数。依上图可以明显的发现如下规律:大体上,沿左上到右下的方向DCT系数(绝对值)是依次递减的。所以,也就是说一个图像的DCT低频系数分布在DCT系数矩阵的左上角,高频系数分布在右下角,低频系数的绝对值大与高频系数的绝对值。

    DCT变换来说,图像的主要能量是集中在其DCT系数的一小部分。这所谓的“一小部分”就是指的低频部分。随着p,q阶数的不断增大,图像信号在两组正交函数上的投影值出现了大量的正负相抵消的情景,从而导致了得到的频率系数在数值(绝对值)上的不断减小。当p=0,q=0,得到的频率系数与余弦函数无关(cos0=1),完全就是图像抽样信号的均值,也是最大的一个值,称为DCT变换的直流(DC)系数,其它的频率系数都由余弦函数参与得到,所以被称为交流(AC)系数。中、低频系数所含有的原始信号的成份较多,所以由其反变换重构图像就能得到图像的近似部分。高频系数是在众多正交的余弦函数上投影的加权,是这些不同频率的余弦信号一起来刻画原始信号的结果,图像近似的部分在这些函数上被相互抵消了,剩下的就是图像的细节部分了。

对图像进行分块DCT后,在每一个8×8范围内其频率系数仍然符合DCT系数分布规律。

   仿真中取了10 DCT 系数,15 %比较原图和重构图像,可以发现:在抛弃85 % DCT 系数后,重构图像时并不会因此而带来其画面质量的显著下降,即重构图像的失真不大. 当然,采用这种方法来实现压缩算法时,可以通过修改mask 变量中的DCT 系数来更好地比较仿真结果。

-------------------------------------------------------------------------------------

专业,代做,代写,承接,MATLAB,SIMULINK,FPGA项目,博士,硕士,本科,毕业设计,课题设计,论文,

期刊,毕业论文,杂志,Coursework,Eassy,Assignment,ISE,QuartusII,Vivado,PlanAhead,

SystemGenerator,Verilog,VHDL,VRML,DSPBuilder,EDK,SDK,MaxplusII,PowerPC,Microblaze

专业代做/代写/承接、MATLAB、SIMULINK、FPGA项目、博士/硕士/本科毕业设计、课题设计、

论文,毕业论文,Coursework、Eassy、Assignment

QQ:122 4848 052

Tags:DCT 
作者:网络 来源:网络
  • 您是如何找到本站的?
  • 百度搜索
  • Google搜索
  • 查阅资料过程中
  • 论坛发现
  • 百度贴吧发现
  • 朋友介绍
本站最新成功开发工程项目案例
相关评论
发表我的评论
  • 大名:
  • 内容:
  • matlab代做|matlab专业代做|python代做|matlab淘宝代做|matlab代写(www.hslogic.com) © 2019 版权所有 All Rights Reserved.
  • Email:highspeed_logic@163.com 站长QQ: 1224848052

    专业代做/代写/承接、MATLAB、SIMULINK、FPGA项目、博士/硕士/本科毕业设计、课题设计、论文,毕业论文,Coursework、Eassy、Assignment