实验1图像的离散余弦变换代码
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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))
忽略此处..