实验1图像的离散余弦变换代码

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

《数字图像处理实验指导书》

实验一、图像的离散余弦变换

一、 实验目的

(1) 了解离散余弦正变换和逆变换的原理。

(2) 理解离散余弦变换系数特点。

(3) 了解离散余弦变换在图像数据压缩中的应用。

二、 实验主要仪器设备

(1)微型计算机:Intel Pentium 及更高。

(2)MATLAB 软件。

三、 实验原理

(1)二维离散余弦变换和离散余弦逆变换的计算公式。

正变换公式为:

⎥⎦⎤⎢⎣⎡++=∑∑-=-=)21(cos )]21(cos[),(2)()(),(1010y N

x u M y x f MN v C u C v u F M x N y ππ 其中,⎪⎩

⎪⎨⎧-≤≤==11,10,21)(N u u u C ,C (v )同C (u )。

反变换公式为:

110011(,)()()(,)cos ()cos ()22N v f x y C u C v F u v u x v y M N

ππ--==⎡⎤⎡⎤=++⎢⎥⎢⎥⎣⎦⎣⎦ (2)MATLAB 中的DCT 变换的实现函数是dct2();DCT 逆变换的实现函数是idct2().

四、 实验内容

在MATLAB 环境汇总,进行图像的离散余弦逆变换,初步理解DCT 变换在压缩编码中的应用。减少DCT 系数,观察重建信号和误差信号。

五、 实验步骤

(1)MATLAB Command 窗口中,输入Demo ,并执行。

(2)MATLAB Demo 窗口中,选择ToolBox 并双击打开,选择Image processing 。

(3)运行Discrete Cosine Transform 。

(4)选择不同个数的DCT 系数,观察重建图像和误差图像的不同。

(5)选择不同的图像重复步骤4。

六、 编程题

1. 利用MATLAB 对一副图像进行DCT 变换,每一个8*8图像块保留10个DCT 变换系数

进行重构图像,比较重建图像与原始图像的差异。

2.应用MATLAB实现小波变换的例子。

七、思考题

对重建图像进行主观评价和客观评价,分析重建图像的质量和DCT重建系数的关系。代码

%设置压缩比cr

cr = 0.15625;%cd=0.5为2:1压缩;cr=0.125为8:1压缩

I = imread('lena.bmp');%图像的大小为256*256

I1 = double(I)/255;%图像为256级灰度,对图像进行归一化操作

figure(1);

imshow(I1);%显示原始图像

%对图像进行dct

t = dctmtx(8);

dctcoe = blkproc(I1,[8 8],'P1*x*P2',t,t');

coevar = im2col(dctcoe,[8 8],'distinct');

coe = coevar;

[y,ind] = sort(coevar);

[m,n] = size(coevar);%根据压缩比确定要变0的系数个数

%舍去不重要的系数

snum = 64 - 64*cr;

for i=1:n

coe(ind(1:snum),i) = 0;

end

b2 = col2im(coe,[8 8],[256 256],'distinct');%重新排列系数矩阵

%对截取后的变换系数进行dct逆变换

I2 = blkproc(b2,[8 8],'P1*x*P2',t',t);

figure(2);

imshow(I2);

%计算均方根误差erms

e = double(I1) - double(I2);

[m,n] = size(e);

erms = sqrt(sum(e(:).^2)/(m*n))

忽略此处..

相关文档
最新文档