文档详情

实验十 图像压缩的MATLAB实现.PPT

发布:2016-12-18约字共21页下载文档
文本预览下载声明
实验十 图像压缩的MATLAB实现 一、实验目的 了解有关数字图像压缩的基本概念,熟悉MATLAB软件中关于数字图像压缩的基本方法,掌握利用MATLAB软件进行数字图像压缩的方法。 二、相关知识 在当今的信息时代,图像在表达各种信息时有着不可替代的作用,但图像信息的缺点之一就是数据量非常庞大,因此,无论是存储还是传输,都需要对图像数据进行压缩,数据压缩的方法有很多,我们这里介绍一种基于DCT(离散余弦变换)的图像压缩方法,并介绍用MATLAB软件来实现这个算法。 基于DCT的压缩方法如下: (1)首先将输入图像分解为8×8或16×16的块,然后对每个块进行二维DCT变换,这里,一个N×N图像块f(x,y)的二维离散余弦变换公式如下: 二、相关知识 二维离散余弦反变换公式如下: 基于DCT的压缩方法如下: (1)首先将输入图像分解为8×8或16×16的块,然后对每个块进行二维DCT变换,这里,一个N×N图像块f(x,y)的二维离散余弦变换公式如下: 二维离散余弦反变换公式如下: 其中: 在MATLAB中, 称为DCT的变换核 其中: 在MATLAB中, 称为DCT的变换核 MATLAB图像处理工具箱提供了一些函数进行DCT变换。 函数dct2实现图像的二维离散余弦变换,格式为: B=dct2(A) B=dct2(A,[M,N]) B=dct2(A,M,N) A表示要变换的图像,B表示变换后得到的变换系数矩阵,B和A是同样大小的矩阵,其内容是余弦变换后的系数。 M和N是可选参数,表示对图像矩阵A的填充或截取。 函数idct2实现图像的二维离散余弦反变换,语法变换。 函数dct2实现图像的二维离散余弦变换,格式为: B=dct2(A) B=dct2(A,[M,N]) B=dct2(A,M,N) A表示要变换的图像,B表示变换后得到的变换系数矩阵,B和A是同样大小的矩阵,其内容是余弦变换后的系数。 M和N是可选参数,表示对图像矩阵A的填充或截取。 函数idct2实现图像的二维离散余弦反变换,语法格式: B=idct2(A) B=idct2(A,[M,N]) B=idct2(A,M,N) A表示要变换的二维离散余弦变换矩阵,B表示变换后得到的图像,B和A是同样大小的矩阵,其内容是余弦变换后的系数。 M和N是可选参数,表示对图像矩阵A的填充或截取。 函数dctmtx用于计算二维DCT矩阵,语法格式: D=dctmtx(n) 格式: B=idct2(A) B=idct2(A,[M,N]) B=idct2(A,M,N) A表示要变换的二维离散余弦变换矩阵,B表示变换后得到的图像,B和A是同样大小的矩阵,其内容是余弦变换后的系数。 M和N是可选参数,表示对图像矩阵A的填充或截取。 函数dctmtx用于计算二维DCT矩阵,语法格式: D=dctmtx(n) 其中D是返回的n×n的DCT变换矩阵,如果矩阵A的大小是n×n,D×A是矩阵每一列的DCT变换值,A×D’是A的每一行的DCT变换值。 dct2(A)的结果与D×A×D’相同,但后者计算速度较快。 (2)将变换后得到的量化的DCT系数进行编码和传送,形成压缩后的图像格式。 基于DCT的解压缩方法如下: (1)对每个8×8或16×16块进行二维DCT反变换。 (2)将反变换的矩阵的块合成一个单一的图像。 例:把输入图像cameraman.tif划分为8×8的图像块,计算它们的DCT系数,并且只保留64个DCT系数中的10个,然后对每个图像块利用这10个系数进其中D是返回的n×n的DCT变换矩阵,如果矩阵A的大小是n×n,D×A是矩阵每一列的DCT变换值,A×D’是A的每一行的DCT变换值。 dct2(A)的结果与D×A×D’相同,但后者计算速度较快。 (2)将变换后得到的量化的DCT系数进行编码和传送,形成压缩后的图像格式。 基于DCT的解压缩方法如下: (1)对每个8×8或16×16块进行二维DCT反变换。 (2)将反变换的矩阵的块合成一个单一的图像。 例:把输入图像cameraman.tif划分为8×8的图像块,计算它们的DCT系数,并且只保留64个DCT系数中的10个,然后对每个图像块利用这10个系数进行逆DCT变换来重构图像。 解:程序如下: clear I=imread(cameraman.tif); I=im2double(I); T=dctmtx(8); B=blkproc(I,[8 8],P1*x*P2,T,T); %这里T,T是参数P1、P2的取值 mask=[1 1 1 1 0 0 0 0
显示全部
相似文档