其中最常用的是基于DCT变换的顺序型模式,又称为基本系统(Baseline)。 用DCT压缩图像的过程为:
(1)首先将输入图像分解为8×8或16×16的块,然后对每个子块进行二维DCT 变换。
(2)将变换后得到的量化的DCT系数进行编码和传送,形成压缩后的图像格 式。
用DCT解压的过程为:
(1)对每个8×8或16×16块进行二维DCT反变换。 (2)将反变换的矩阵的块合成一个单一的图像。
余弦变换具有把高度相关数据能量集中的趋势,DCT变换后矩阵的能量集中在矩阵的左上角,右下的大多数的DCT系数值非常接近于0。对于通常的图像来说,舍弃这些接近于0的DCT的系数值,并不会对重构图像的画面质量带来显著的下降。所以,利用DCT变换进行图像压缩可以节约大量的存储空间。压缩应该在最合理地近似原图像的情况下使用最少的系数。使用系数的多少也决定了压缩比的大小。
在压缩过程的第2步中,可以合理地舍弃一些系数,从而得到压缩的目的。在压缩过程的第2步,还可以采用RLE和Huffman编码来进一步压缩。
2)行程编码(RLE)原理: 例如如下这幅 的二值图像,
如果采用行程编码可以按如下格式保存
其中10和8表示图像的宽和高。在这个小例子中行程编码并没有起到压缩图像的作用。这是由于这个图的尺寸过小,当图像尺寸较大时行程编码还是不错的无损压缩方法。对于灰度图像和二值图像,用行程编码—般都有很高的压缩率。行程编码方法实现起来很容易,对于具有长重复值的串的压缩编码很有效,例如:对于有大面积的阴影或颜色相同的图像,使用这种方法压缩效果很好。很多位图文件格式都采用行程编码,如TIFF,PCX,GEM,BMP等。
3. 图像压缩编码的MATLAB程序语句
1) 利用DCT变换进行图像压缩的MATLAB程序 RGB = imread('原图像名.tif'); I = rgb2gray(RGB);
J = dct2(I);
imshow(log(abs(J)),[]), colormap(jet(64)), colorbar J(abs(J) < 10) = 0; K = idct2(J); figure,imshow(I)
figure,imshow(K,[0 255])
2)利用离散余弦变换进行JPEG图像压缩 I=imread(‘原图像名.tif’); %读入原图像;
I=im2double(I); %将原图像转为双精度数据类型; T=dctmtx(8); %产生二维DCT变换矩阵
B=blkproc(I,[8 8],’P1*x*P2’,T,T’); %计算二维DCT,矩阵T及其转置T’是DCT函数
P1*x*P2的参数
Mask=[ 1 1 1 1 0 0 0 0
1 1 1 0 0 0 0 0 1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0]; %二值掩膜,用来压缩DCT系数,只留下
DCT系数中左上角的10个
B2=blkproc(B,[8 8],’ P1.*x.’,mask); %只保留DCT变换的10个系数 I2= blkproc(B2,[8,8],’P1*x*P2’,T’,T); %逆DCT,重构图像 Subplot(1,2,1);
Imshow(I);title(‘原图像’); %显示原图像 Subplot(1,2,2);
Imshow(I2);title(‘压缩图像’);%显示压缩后的图像。对比原始图像和压缩后的图像,
虽然舍弃了85%的DCT系数,但图像仍然清晰(当然有一些质量损失)
3)利用行程编码(RLE)进行图像压缩 I=checkerboard(10,2); %调入原图像 [m n]=size(I); J=[]; for i=1:m
value=I(i,1); num=1; for j=2:n
if I(i,j)==value num=num+1; else
J=[J num value]; num=1;
value=I(i,j); end end
I=[J num value 0 0]; %添加的行判断位 0 0 end
disp(‘原图像大小:’) whos(‘I’);
disp(‘压缩图像大小:’) whos(‘J’);
disp(‘图像的压缩比:’) disp(m*n/length(J))
三、 实验步骤
1打开计算机,启动MATLAB程序;
2调入“实验一”中获取的数字图像,并进行数据的行程(RLE)编码压缩处理; 3 将原图像在Photoshop软件中打开,分别以不同的位图文件格式进行“另保存”,比较它们的数据量。
4记录和整理实验报告
四、 实验仪器
1计算机;
2 MATLAB、Photoshop等程序; 3移动式存储器(软盘、U盘等)。 4记录用的笔、纸。
五、 实验报告内容
1叙述实验过程;
2提交实验的原始图像和结果图像。
六、 思考题
1.图像中哪些信息是主要的,哪些信息是次要的?
2.简述离散余弦变换(DCT)和行程编码(RLE)的原理。
实验四、图像融合
一、
实验目的
1熟悉图像融合的意义和用途,理解图像融合的原理; 2掌握图像融合的一般方法;
3掌握运用MATLAB软件进行图像融合的操作。
二、 实验原理
图像融合的目的把来自多传感器的数据互补信息合并成一幅新的图像,以改善图像的质量。图像融合最简单的理解就是两个(或多个)图像间的相加运算。这一技术广泛应用于多频谱图像理解和医学图像处理等领域。主要分为空域和频域相加。
本实验主要应用MATLAB软件进行两幅图像的融合。方法有: 1图像直接融合;
2图像傅立叶变换融合; 3图像小波变换融合。
图像融合的MATLAB程序如下: 1)调入、显示两幅图像的程序语句 load tartan;
X1=X;map1=map; Load sinsin;
X2=X;map2=map; %打开图像 Subplot(1 2 1)
Image(X1),colormap(map1); Title(‘图像map1’) Subplot(1 2 2)
Image(X2),colormap(map2);
Title(‘图像map2’) %显示两幅图像 2)两幅图像直接融合的程序语句 figure,subplot(1 3 1)
image((X1+X2)/2),colormap(map2); %在空域内直接融合
title(‘两图像直接相加融合’) %显示融合后的图像,并命名为“两图像直接相加融合” 3)两幅图像傅立叶变换融合的程序语句 F1=fft2(X1);
F2=fft2(X2); %分别计算两幅图像的快速傅立叶变换
X=abs(ifft2(F1+F2)/2); %两幅图像在频域内相加后的傅立叶逆变换 Subplot(1 3 2)
Image(X),colormap(map2); %显示融合后的图像
Title(‘两幅图像傅立叶变换融合’) %给融合后的图像命名并显示在图上 4)两幅图像小波变换融合的程序语句 [C1,L1]=wavedec2(X1,2, ‘sym4’);
[C2,L2]=wavedec2(X2,2, ‘sym4’); %分别对两幅原图像进行小波分解 C=C1+C2; %对分解系数进行融合
X=waverec2(C,L1, ‘sym4’); %对融合后的信号进行图像重构 Subplot(1 3 3)
Image(X/2),colormap(map2); %显示经过小波变换融合后的图像 Title(‘两图像小波变换融合’) %给融合后的图像命名并显示在图上
三、 实验步骤
1打开计算机,启动MATLAB程序;
2调入“实验一”中获取的两幅数字图像,并进行三种方法的图像融合; 3显示并保存图像融合的结果。 4记录和整理实验报告。
四、 实验仪器
1计算机;
2 MATLAB程序;
3移动式存储器(软盘、U盘等); 4记录用的笔、纸。
五、 实验报告内容
1叙述实验过程;
2提交实验的原始图像和结果图像。
六、 思考题
1简述图像小波变换的实现过程。
2小波变换的分解层数对融合图像的光谱质量和空间质量有什么影响?
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库《图像处理》实验(2)在线全文阅读。
相关推荐: