2014-7自编数字图像处理实验-参考答案 联系客服

发布时间 : 星期六 文章2014-7自编数字图像处理实验-参考答案更新完毕开始阅读

I2=nlfilter(I,[5 5],'mean2'); subplot(121),imshow(I,[]); subplot(122),imshow(I2,[]); (2)%用自定义函数作滑动处理 CLF

I=imread('tire.tif'); f=inline('max(x(:))'); I2=nlfilter(I,[3 3],f); subplot(1,2,1),imshow(I); subplot(1,2,2),imshow(I2); (3)%快速滑动领域操作 CLF

I=imread('tire.tif');

I2=colfilt(I,[5 5],'sliding','mean'); subplot(121),imshow(I,[]); subplot(122),imshow(I2,[]); (4)%用列操作函数实现滑动 CLF

I=imread('ic.tif');

I1=im2col(I,[3 3],'sliding');

I1=uint8([0 -1 0 -1 4 -1 0 -1 0]*double(I1)); I2=col2im(I1,[3,3],size(I),'sliding'); subplot(121),imshow(I,[]); subplot(122),imshow(I2,[]); (5)%图像块操作(分离) CLF

I=imread('tire.tif');

f=inline('mean2(x)*ones(size(x))'); I2=blkproc(I,[8 8],f);

subplot(1,2,1),imshow(I,[]) subplot(1,2,2),imshow(I2,[]) (6)%快速块操作(分离) CLF

I=imread('tire.tif');

f=inline('ones(64,1)* mean(x)'); I2=colfilt(I,[8 8],'distinct',f); subplot(1,2,1),imshow(I,[]) subplot(1,2,2),imshow(I2,[])

(7)%用列操作函数实现块操作(分离) CLF

I=imread('tire.tif');

I1=im2col(I,[8 8],'distinct'); I1=ones(64,1)* mean(I1);

I2=col2im(I1,[8,8],size(I),'distinct'); subplot(121),imshow(I,[]); subplot(122),imshow(I2,[]);

从显示结果中,试分析滑动领域与分离领域操作的区别?

答:滑动领域各邻域之间有重叠,而分离领域操作各领域间没有重叠部分,因此同样做均值处理,滑动邻域操作后,图像相对光滑,而分离领域操作后图像有块状马赛克效应,颗粒感强。

2、练习roipoly, roicolor, roifilter函数的使用(参考相关教学资料) 可演示以下部分程序来体会函数的用法; 【例】多边形选择区域 CLF

I=imread('eight.tif');

c=[222 272 300 270 221 194]; r=[21 21 75 121 121 75]; BW=roipoly(I,c,r);

subplot(121),subimage(I); subplot(122),subimage(BW); 【例】灰度选择法 CLF

I=imread('rice.tif'); BW=roicolor(I,128,255); subplot(121),subimage(I); subplot(122),subimage(BW); 【例】对指定区域进行锐化 CLF

I=imread('eight.tif');

c=[222 272 300 270 221 194]; r=[21 21 75 121 121 75]; BW=roipoly(I,c,r);

h=fspecial('unsharp'); % 滤波函数 J=roifilt2(h,I,BW);

subplot(121),subimage(I); subplot(122),subimage(J); I=imread('eight.tif');

c=[222 272 300 270 221 194]; r=[21 21 75 121 121 75]; J=roifill(I,c,r);

subplot(121),subimage(I); subplot(122),subimage(J);

【思考题】

1、 MatLab软件可以支持哪些图像文件格式?

答:Matlab可支持的图像格式包括BMP,JPEG,TIFF,GIF等等。

2、MATLAB中有哪些类型的图像,在MATLAB中分别用什么类型的数组来存储? 答:MATLAB图像处理工具箱包括5种类型的图像,如下 二进制图像,使用uint8或双精度类型数组存储

索引图像,数据矩阵使uint8,uint16或双精度类型,颜色映射矩阵每个元素均为[0 1]间的双精度浮点型数据。

灰度图像,uint8,uint16或双精度类型的数组来描述 RGB图像,双精度浮点型,uint8,uint16类型 多帧图像

3、由图像算术运算的运算结果分析,思考图像减法运算在什么场合上发挥优势? 答:图像减法是一种常用于检测图像变化及运动物体的图像处理方法。在很短时间内,可认为图像背景固定不变,可以直接运用减法运算来检测变化或运动的物体。 4、非比例缩放得到的图片和比例缩放得到的图片有何差异?是否失真?

答:非比例缩放图像对原图有畸变,而按照比例缩放的图像没有畸变。由于x,y方向的缩放比例不同,改变了原始图像像素的相对位置,产生了几何畸变。 5、图像的旋转会导致图像的失真么?

图像的旋转有时会发生失真,尤其旋转不是90度整数倍时。 【实验设备】

装有MATLAB软件的电脑,u盘

【实验报告要求】

1、实验报告写明实验题目,可简写实验原理,实验内容,详细写实验过程和实验结果分析,要求附相关程序及显示结果 2、回答思考题,写在实验报告上

实验3 MATLAB实现数字图像的变换技术(2学时)

【实验内容】 一、傅里叶变换

1、选择任意一幅图像进行平移和旋转,显示原始图像与处理后图像,分别对其进行FFT傅里叶变换,显示变换后结果,并要求使用FFTshift搬移频谱中心,分析原图的傅里叶谱与平移,旋转后傅里叶频谱的对应关系。

参考程序如下(参考程序中是人为构造一个图像矩阵,形成一幅图像,也可选择现成的图像进行平移,旋转,而后求解傅里叶变换):

【例】图像的平移 CLF

f1 = zeros(256,256);f1(108:148,108:148) = 1;

f2 = zeros(256,256);f2(158:198,58:98) = 1;%与f1相比,就是平移效果

F1 = fft2(f1);F1 = log(1+abs(F1)); F2 = fft2(f2);F2 = log(1+abs(F2)); subplot(221),imshow(f1,[]) subplot(222),imshow(f2,[]) subplot(223),imshow(F1,[]) subplot(224),imshow(F2,[])

平移性:原图像平移,变换图像幅值图没有变化,但相位会旋转。

【例】图像的旋转 CLF

f1 = zeros(256,256);f1(58:198,108:148) = 1; f2 = imrotate(f1,45,'crop');

F1 = log(1+abs(fftshift(fft2(f1)))); F2 = log(1+abs(fftshift(fft2(f2)))); subplot(221),imshow(f1,[]) subplot(222),imshow(f2,[]) subplot(223),imshow(F1,[]) subplot(224),imshow(F2,[]) 图像旋转,谱旋转