MATLAB分析图像的离散余弦变换(DCT)

原创 2016年08月20日 10:37:33

1. MATLAB的介绍以及所需函数的说明:

 1.1 MATLAB 

MATLAB是matrix&laboratory两个词的组合,意为矩阵工厂(矩阵实验室)。是由美国mathworks

公司发布的主要面对科学计算、可视化以及交互式程序设计的高科技计算环境。它将数值分析、矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中,为科学研究、工程设计以及必须进行有效数值计算的众多科学领域提供了一种全面的解决方案,并在很大程度上摆脱了传统非交互式程序设计语言(如C、Fortran)的编辑模式,代表了当今国际科学计算软件的先进水平。 

3.2 使用的MATLAB函数介绍 

函数 描述
Imread() 用于读取图片文件中的数据
figure() 控制画图的窗口
imshow() 显示图像
rgb2gray() 把真彩图像转变为灰度图像
dct2() DCT变换

Colormap()       
可以拖动上面的颜色块控制调改变位图颜色(双击)。一般是函数Image()画出的连续的灰度图使用。
Colorbar:colormap实际上是一个mx3的矩阵,每一行的3个值都为0-1之间数,分别代表颜色组成的rgb值 
idct2() DCT逆变换
Subplot()                  
将当前窗口分割成多个子窗口,第一个参数表示分割窗口的行数,第二参数表示 分割后窗口的列数,第三个参数表示第几个子窗口

2.MATLAB程序以及结果分析 

2.1 MATLAB程序

2.1.1  打开图片:

    %读入测试图像 
    mypicture=imread('d:\lena.tif');
    %显示读入的图像 %为了防止后一个显示的图像覆盖前一个显示结果,每次显示时调用figure生成一个新窗口 	
    figure(),imshow(mypicture),title('原输入图像');


2.1.2 转为灰度图:

    grayImage=rgb2gray(mypicture);%如果读入的是彩色图像则转化为灰度图像(灰度图像省略这一步) 
    figure(),imshow(grayImage),title('原输入彩色图像转化为灰度图像'); 

图1

2.1.3对图像DCT转换:

    %对图像DCT变换  
    dctgrayImage=dct2(grayImage);
    figure(), imshow(log(abs(dctgrayImage)),[]),title('DCT变换灰度图像'), colormap(gray(4)), colorbar;

图2

2.1.4 对灰度矩阵进行量化:

    %对灰度矩阵进行量化
    dctgrayImage(abs(dctgrayImage)<0.1)=0; 


2.1.5 DCT逆变换:

    %DCT逆变换  
    I=idct2(dctgrayImage)/255;  
    figure(), imshow(I), title('经过DCT变换,然后逆变换的灰度图像'); 

图3

2.1.6 对比变换傅里叶变换前后的图像 :

	%对比变换傅里叶变换前后的图像  
	figure(), subplot(121), imshow(grayImage), title('原灰度图像'), 
 subplot(122), imshow(I), title('DCT逆变换图像');

图4

2.2 结果分析:

结果分析:对原始图像进行离散余弦变换,如图3所示,由结果可知,变换后DCT系数能量主要集中在左上角,其余大部分系数接近于零,这说明DCT具有适用于图像压缩的特性。将变换后的DCT系数进行门限操作,将小于一定值得系数归零,这就是图像压缩中的量化过程,然后进行逆DCT运算,得到压缩后的图像,如图4。由图5比较变换前后的图像,肉眼很难分辨出有什么区别,可见压缩的效果比较理想。

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

JPEG压缩原理与DCT离散余弦变换

入门介绍----JPEG压缩原理与DCT离散余弦变换,能让你有个大致的理解。

离散余弦变换DCT(Discrete Cosine Transform)

DCT变换和FFT变换都属于变换压缩方法(TransformCompression),变换压缩的一个特点是将从前密度均匀的信息分布变换为密度不同的信息分布。在图像中,低频部分的信息量要大于高频部分的信...

离散余弦变换(含源码)

图像处理中常用的正交变换除了傅里叶变换外,还有其他一些有用的正交变换,其中离散余弦就是一种。离散余弦变换表示为DCT( Discrete Cosine Transformation),常用于图像处理和...
  • luoweifu
  • luoweifu
  • 2012年11月23日 09:38
  • 20995

离散余弦变换 DCT

MPEG采用了Ahmed(一个巨牛的数学家) 等人于70年代提出的离散余弦变换(DCT-Discrete Cosine Transform)压缩算法,降低视频信号的空间冗余度。DCT将运动补偿误差或...
  • crfoxzl
  • crfoxzl
  • 2007年11月03日 14:47
  • 15033

离散余弦变换_原理及应用

1.预备知识 1.1可分离变换 二维傅立叶变换可用通用的关系式来表示: 式中:x, u=0, 1, 2,  …,  M-1;y,  v=0,  1,  2,  …,  N-1...

离散余弦变换(Discrete Cosine Transform)

DCT变换和FFT变换都属于变换压缩方法(TransformCompression),变换压缩的一个特点是将从前密度均匀的信息分布变换为密度不同的信息分布。在图像中,低频部分的信息量要大于高频部分的信...
  • jubincn
  • jubincn
  • 2011年10月17日 18:49
  • 31014

Matlab DCT详解

DCT变换DCT又称离散余弦变换,是一种块变换方式,只使用余弦函数来表达信号,与傅里叶变换紧密相关。常用于图像数据的压缩,通过将图像分成大小相等(一般为8*8)的块,利用DCT对其进行变换,得到更加简...
  • ahafg
  • ahafg
  • 2015年09月29日 16:43
  • 8997

DCT变换及matlab实现

1.一维DCT变换 一维的DCT变换共有8种,其中最实用的是第二种形式,公式如下: 其中c(u)是加上去一个系数,为了能使DCT变换矩阵成为正交矩阵,在后面二维变换将看到他的作用。N是f(x...

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

matlab实现图像DCT变换

实验三 图像的DCT变化及量化 一、问题描述 利用matlab,将road.tif彩色图像的分辨率转换为256*256,将图片转化为double数据类型,再利用T=dctmtx(8)建立一个8*8...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:MATLAB分析图像的离散余弦变换(DCT)
举报原因:
原因补充:

(最多只允许输入30个字)