本文主要是介绍MATLAB分析图像的离散余弦变换(DCT),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
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('原输入彩色图像转化为灰度图像');
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逆变换图像');
这篇关于MATLAB分析图像的离散余弦变换(DCT)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!