专业综合实验指导书(5)

2019-08-31 11:34

在压缩过程的第2步中,可以合理地舍弃一些系数,从而得到压缩的目的。在压缩过程的第2步,还可以采用RLE和Huffman编码来进一步压缩。

2)行程编码(RLE)原理: 例如如下这幅 的二值图像,

如果采用行程编码可以按如下格式保存

其中10和8表示图像的宽和高。在这个小例子中行程编码并没有起到压缩图像的作用。这是由于这个图的尺寸过小,当图像尺寸较大时行程编码还是不错的无损压缩方法。对于灰度图像和二值图像,用行程编码—般都有很高的压缩率。行程编码方法实现起来很容易,对于具有长重复值的串的压缩编码很有效,例如:对于有大面积的阴影或颜色相同的图像,使用这种方法压缩效果很好。很多位图文件格式都采用行程编码,如TIFF,PCX,GEM,BMP等。

3. 图像压缩编码的MATLAB程序语句

1)利用DCT变换进行图像压缩的MATLAB程序 RGB = imread('tire.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('tire.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=n: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))

I=checkerboard(10,2); %调入原图像 [m n]=size(I); J=[]; for i=n: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))

Name Size Bytes Class

I 1x10 80 double array

Grand total is 10 elements using 80 bytes

压缩图像大小:

Name Size Bytes Class

J 1x6 48 double array

Grand total is 6 elements using 48 bytes

图像的压缩比: 266.6667 四、实验步骤

1.打开计算机,启动MATLAB程序;

2.调入给定的数字图像,并进行数据的行程(RLE)编码压缩处理; 3.将原图像分别以不同的位图文件格式进行“另保存”,比较它们的数据量。 4.记录和整理实验报告

五、实验仪器

1.计算机Pentium Ⅳ;CPU 586以上;32M以上内存;Windows XP操作系统;Matlab 7软件;

2.MATLAB等程序;

3.移动式存储器(软盘、U盘等)。 4.记录用的笔、纸。

六、实验报告内容

1.叙述实验过程;

2.提交实验的原始图像和结果图像。

七、思考题

1.图像中哪些信息是主要的,哪些信息是次要的? 2.简述离散余弦变换(DCT)和行程编码(RLE)的原理。

实验六 图像运算与区域处理

一、实验目的

学习并掌握图像运算的一些方法,便于图像的分析与理解。

二、实验内容和要求

a) 实现图像的算术运算(加、减、乘、除及求补运算)。 b) 实现图像的位逻辑运算。 c) 实现图像的几何运算。 d) 实现图像的空间变换。 e) 实现图像的区域处理。

学习使用以下函数:

imadd imnoise imsubtract imabsdiff immultiply imdivide imcomplement

bitand(位与) bitcmp(位补) bitor(位或) bitxor(位异或) bitshift(位移) roicolor roipoly roifilt2 roifill

例1 图像的位逻辑运算 I=imread('tire.tif'); J=imdivide(I,2); K1=bitand(I,J);

subplot(321),imshow(K1) title('图像的位与运算')

K2=bitcmp(I,8); %等价于28-I

例2 棋盘图像的创建 I=checkerboard(20); imshow(I)

J=checkerboard(20,2,3); %创建2*3的矩形棋盘 figure,imshow(J)

例3 仿射变换 I=imread('tire.tif');

tform=maketform('affine',[1 0 0;.5 1 0;0 0 1] ); %定义仿射变换的变换结构 J=imtransform(I,tform); %仿射变换 Subplot(1 2 1),imshow(I); Subplot(1 2 2),imshow(J);

三、实验步骤

1.打开计算机,启动MATLAB程序;

2.调入给定的数字图像,并进行图像运算; 3.对给定图像分别做区域处理。 4.记录和整理实验报告

四、实验仪器

1.计算机Pentium Ⅳ;CPU 586以上;32M以上内存;Windows XP操作系统;Matlab 7软件;


专业综合实验指导书(5).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:工程施工类论文终稿样例12

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: