数字图像处理第二次实验报告.docx
《数字图像处理第二次实验报告.docx》由会员分享,可在线阅读,更多相关《数字图像处理第二次实验报告.docx(11页珍藏版)》请在冰豆网上搜索。
![数字图像处理第二次实验报告.docx](https://file1.bdocx.com/fileroot1/2023-4/21/ff3047c2-1f3e-45e7-91a9-8b722a08350f/ff3047c2-1f3e-45e7-91a9-8b722a08350f1.gif)
数字图像处理第二次实验报告
实验报告
课程名称数字图像处理
实验项目MATLAB图像的空间变换及
相邻区域和块的处理
指导教师
学院__
专业电子信息工程
班级/学号
学生姓名
实验日期_________
成绩___________________________
实验2MATLAB图像的空间变换及相邻区域和块的处理
一、实验目的
1.掌握MATLAB的基本应用方法。
2.掌握MATLAB空间变换--图像插值、缩放、旋转、剪切。
3.掌握MATLAB相邻区和块的处理-滑动窗和图像块操作。
二、实验的硬件、软件平台
硬件:
计算机
软件:
操作系统:
WindowsXP
应用软件:
MATLAB7.0.1
三、实验内容及步骤(参考MATLAB图像处理工具箱的帮助完成相应功能)
1.掌握MATLAB功能实现的两种方法:
◆在CommandWindow中,以命令行单句调用某一函数,例如两幅图像相加,观察Workspace中图像矩阵属性、值。
◆采用M语言编写由一条或多条语句实现某一或多个功能,例如:
图像算术操作和图像类型转换的MATLAT文件,文件的扩展名m。
将文件保存在c:
\MATLAB701\work目录下,从MATLAB的CommandWindow中键入文件名。
也可将M文件中的所有语句拷贝到CommandWindow下,回车执行。
观察Workspace中图像矩阵属性、值。
2.了解图像插值、Anti-aliasing的方法和应用。
MATLAB帮助位置:
ImageProcessingToolbox-SpatialTransformations-Interpolation
3.了解图像相邻区域和块的处理-滑动窗和图像块操作。
MATLAB帮助位置:
ImageProcessingToolbox–NeighborhoodandBlockOperation
4.放大和缩小一幅图像(imresize)。
MATLAB帮助位置:
ImageProcessingToolbox-SpatialTransformations-ImageResizing
5.旋转一幅图像(imrotate)。
MATLAB帮助位置:
ImageProcessingToolbox-SpatialTransformations-ImageRotation
6.滑动邻域操作(nlfilter)。
MATLAB帮助位置:
ImageProcessingToolbox–NeighborhoodandBlockOperation–SlidingNeighborhoodOperations-LinearandNonlinearFiltering
7.图像块操作(blkproc)。
●MATLAB帮助位置1:
ImageProcessingToolbox–NeighborhoodandBlockOperation–DistinctBlockOperations
●MATLAB帮助位置2:
ImageProcessingToolbox–Transforms–DiscreteCosineTransform-TheDCTandImageCompression(使用8-by-8blocksDCT变换对图像进行压缩与解压缩,利用函数dctmtx,blkproc)
四、实验代码
(一)放大和缩小一幅图像(imresize)。
A=imread('C:
\DocumentsandSettings\501\桌面\数字图像\photo1.jpg');
imshow(A);
size1=imresize(A,2);
size2=imresize(A,0.5);
figure
imshow(size1);
figure
imshow(size2);
imwrite(size1,'C:
\DocumentsandSettings\501\桌面\数字图像\size1.jpg');
imwrite(size2,'C:
\DocumentsandSettings\501\桌面\数字图像\size2.jpg');
原图
放大2倍后
缩小一半后
(二)旋转一幅图像(imrotate)。
A=imread('C:
\DocumentsandSettings\501\桌面\数字图像\photo2.jpg');
figure
imshow(A);
rotate=imrotate(A,-30,'bilinear','loose');
figure
imshow(rotate);
imwrite(rotate,'C:
\DocumentsandSettings\501\桌面\数字图像\rotate.jpg');
原图
顺时针旋转30度后
(三)滑动邻域操作(nlfilter)。
A=imread('C:
\DocumentsandSettings\501\桌面\数字图像\photo3.jpg');
A=rgb2gray(A);
figure
imshow(A);
fun=inline('mean(mean(x))');
nA=nlfilter(A,[33],fun);
figure
imshow(nA,[]);
imwrite(nA,'C:
\DocumentsandSettings\501\桌面\数字图像\nA.jpg');
原图
滑动邻域操作处理后
(四)图像块操作(blkproc)。
1、块操作
I=imread('liftingbody.png');
fun=@(x)std2(x)*ones(size(x));
I2=blkproc(I,[3232],fun);
figure
imshow(I);
figure
imshow(I2,'DisplayRange',[]);
imwrite(I2,'C:
\DocumentsandSettings\501\桌面\数字图像\I2.jpg');
原图
块操作后
2、DCT变换
I=imread('forest.tif');
I=im2double(I);
T=dctmtx(8);
B=blkproc(I,[88],'P1*x*P2',T,T');
mask=[11110000
11100050
11000200
10020000
03005000
00001000
09060460
00000000];
B2=blkproc(B,[88],'P1.*x',mask);
I2=blkproc(B2,[88],'P1*x*P2',T',T);
Figure;imshow(I);
figure;imshow(I2);
原图
DCT变换后
五、实验体会
这次实验,我学到了很多图像处理的方法,包括图像放大与缩小、图像旋转、图像滑动邻域操作和图像块操作。
实验的难点是对这些图像处理工具函数的理解与应用。
Imresize是用来对图像进行缩放、imrotate能使图像旋转一定角度、nlfilter是对图像进行滑动邻域操作、blkproc是实现图像块操作、dctmtx用来计算离散余弦变换矩阵,这些函数的功能明确之后,重要的就在于它们的调用方法。
通过MATLAB的帮助功能,我对这些函数进行了逐个的编程体验,领会了其中的道理。
实验过程中有不少的错误,我也上网进行了搜索和借鉴,最后顺利完成了实验。
总之,这次实验让我对图像处理有了更深入的认识和理解,使我有了一定的提高,我会继续努力。