1、数字图像处理第二次实验报告实 验 报 告 课程名称 数字图像处理 实验项目 MATLAB图像的空间变换及 相邻区域和块的处理 指导教师 学 院 _ _专 业 电子信息工程 班级/学号 学生姓名 实验日期 _ _成 绩_实验2 MATLAB图像的空间变换及相邻区域和块的处理一、 实验目的1. 掌握MATLAB的基本应用方法。2. 掌握MATLAB空间变换-图像插值、缩放、旋转、剪切。3. 掌握MATLAB相邻区和块的处理-滑动窗和图像块操作。二、 实验的硬件、软件平台硬件: 计算机软件: 操作系统: Windows XP 应用软件:MATLAB 7.0.1 三、实验内容及步骤(参考MATLAB
2、图像处理工具箱的帮助完成相应功能)1. 掌握MATLAB功能实现的两种方法: 在Command Window中,以命令行单句调用某一函数,例如两幅图像相加,观察Workspace中图像矩阵属性、值。 采用M语言编写由一条或多条语句实现某一或多个功能,例如:图像算术操作和图像类型转换的MATLAT 文件,文件的扩展名m。将文件保存在c: MATLAB701work目录下,从MATLAB的Command Window 中键入文件名。也可将M文件中的所有语句拷贝到Command Window下,回车执行。观察Workspace中图像矩阵属性、值。2. 了解图像插值、Anti-aliasing的方法和
3、应用。MATLAB帮助位置:Image Processing Toolbox- Spatial Transformations- Interpolation3. 了解图像相邻区域和块的处理-滑动窗和图像块操作。 MATLAB 帮助位置:Image Processing Toolbox Neighborhood and Block Operation4. 放大和缩小一幅图像(imresize)。MATLAB帮助位置:Image Processing Toolbox- Spatial Transformations- Image Resizing5. 旋转一幅图像(imrotate)。MATLAB
4、 帮助位置:Image Processing Toolbox- Spatial Transformations- Image Rotation6. 滑动邻域操作(nlfilter)。MATLAB 帮助位置:Image Processing Toolbox Neighborhood and Block OperationSliding Neighborhood Operations - Linear and Nonlinear Filtering7. 图像块操作 (blkproc) 。 MATLAB 帮助位置1:Image Processing Toolbox Neighborhood and
5、Block OperationDistinct Block Operations MATLAB 帮助位置2: Image Processing Toolbox Transforms Discrete Cosine Transform - The DCT and Image Compression (使用8-by-8 blocks DCT 变换对图像进行压缩与解压缩,利用函数dctmtx, blkproc)四、实验代码(一)放大和缩小一幅图像(imresize)。A=imread(C:Documents and Settings501桌面数字图像photo1.jpg);imshow(A);siz
6、e1= imresize(A,2);size2= imresize(A,0.5);figureimshow(size1);figureimshow(size2);imwrite(size1,C:Documents and Settings501桌面数字图像size1.jpg);imwrite(size2,C:Documents and Settings501桌面数字图像size2.jpg); 原图放大2倍后 缩小一半后(二)旋转一幅图像(imrotate)。A=imread(C:Documents and Settings501桌面数字图像photo2.jpg);figureimshow(A)
7、;rotate=imrotate(A,-30,bilinear,loose);figureimshow(rotate);imwrite(rotate,C:Documents and Settings501桌面数字图像rotate.jpg); 原图顺时针旋转30度后(三)滑动邻域操作(nlfilter)。A=imread(C:Documents and Settings501桌面数字图像photo3.jpg);A=rgb2gray(A);figureimshow(A);fun=inline(mean(mean(x);nA=nlfilter(A,3 3,fun);figureimshow(nA,)
8、;imwrite(nA,C:Documents and Settings501桌面数字图像nA.jpg); 原图滑动邻域操作处理后(四)图像块操作 (blkproc) 。1、块操作I = imread(liftingbody.png);fun = (x) std2(x)*ones(size(x);I2 = blkproc(I,32 32,fun);figureimshow(I);figureimshow(I2,DisplayRange,);imwrite(I2,C:Documents and Settings501桌面数字图像I2.jpg);原图块操作后2、DCT变换I = imread(fo
9、rest.tif);I = im2double(I);T = dctmtx(8);B = blkproc(I,8 8,P1*x*P2,T,T);mask = 1 1 1 1 0 0 0 0 1 1 1 0 0 0 5 0 1 1 0 0 0 2 0 0 1 0 0 2 0 0 0 0 0 3 0 0 5 0 0 0 0 0 0 0 1 0 0 0 0 9 0 6 0 4 6 0 0 0 0 0 0 0 0 0;B2 = blkproc(B,8 8,P1.*x,mask);I2 = blkproc(B2,8 8,P1*x*P2,T,T);Figure; imshow(I);figure; ims
10、how(I2); 原图DCT变换后五、实验体会这次实验,我学到了很多图像处理的方法,包括图像放大与缩小、图像旋转、图像滑动邻域操作和图像块操作。实验的难点是对这些图像处理工具函数的理解与应用。Imresize是用来对图像进行缩放、imrotate能使图像旋转一定角度、nlfilter是对图像进行滑动邻域操作、blkproc是实现图像块操作、dctmtx用来计算离散余弦变换矩阵,这些函数的功能明确之后,重要的就在于它们的调用方法。通过MATLAB的帮助功能,我对这些函数进行了逐个的编程体验,领会了其中的道理。实验过程中有不少的错误,我也上网进行了搜索和借鉴,最后顺利完成了实验。总之,这次实验让我对图像处理有了更深入的认识和理解,使我有了一定的提高,我会继续努力。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1