当前位置:首页 > 数字图像处理实验指导书
其中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系数,但图
12
像仍然清晰(当然有一些质量损失)
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盘等)。
13
4记录用的笔、纸。
五、 实验报告内容
1叙述实验过程;
2提交实验的原始图像和结果图像。
六、 思考题
1.图像中哪些信息是主要的,哪些信息是次要的?
2.简述离散余弦变换(DCT)和行程编码(RLE)的原理。
14
实验五、图像分割
一、实验目的
1、使学生通过实验体会一些主要的分割算子对图像处理的效果,以及各种因素对分割效果的影响;
2、使用MatLab 软件进行图像的分割;
3、能够自行评价各主要算子在无噪声条件下和噪声条件下的分割性能; 4、能够掌握分割条件(阈值等)的选择; 5、完成规定图像的处理并要求正确评价处理结果,能够从理论上作出合理的解释。
二、实验原理
(1)使用Roberts 算子的图像分割实验,调入并显示一幅图像*.gif或*.tif;使用Roberts 算子对图像进行边缘检测处理;Roberts 算子为一对模板,相应的矩阵为:
rh = [0 1;-1 0]; rv = [1 0;0 -1];
这里的rh 为水平Roberts 算子,rv为垂直Roberts 算子。可以显示处理后的水平边界和垂直边界检测结果;用“欧几里德距离”和“街区距离”方式计算梯度的模,显示检测结果;对于检测结果进行二值化处理,并显示处理结果。
先做检测结果的直方图,参考直方图中灰度的分布尝试确定阈值;应反复调节阈值的大小,直至二值化的效果最为满意为止分别显示处理后的水平边界和垂直边界检测结果;将处理结果转化为“白底黑线条”的方式;给图像加上零均值的高斯噪声。)
(2)使用Prewitt 算子的图像分割实验
使用Prewitt 算子进行内容(1)中的全部步骤。
(3)使用Sobel 算子的图像分割实验,使用Sobel 算子进行内容(1)中的全部步骤。
(4)使用LoG (拉普拉斯-高斯)算子的进行图像分割实验。 (5)使用Canny算子的进行图像分割实验。 作图像分割实验的MATLAB程序语句如下: I=imread(‘*.tif’); Imshow(I);
BW1=edge(I,‘roberts’); BW2=edge(I,‘prewitt’); BW3=edge(I,‘sobel’); BW4=edge(I,‘log’); BW5= edge(I,‘canny’); Figure,imshow(BW1,[]); Figure,imshow(BW2,[]);
15
共分享92篇相关文档