matlab数字图像处理课程设计报告,沈阳理工大学数字图像处理课程设计报告 MATLAB图像几何操作和...
沈阳理工大学数字图像处理课程设计报告 MATLAB图像几何操作和
MATLAB图像几何操作和处理 1 设计目的与内容 1.1 设计目的 1. 掌握函数 imresize() imrotate() imcrop() 的使用。 2.掌握MATIAB中图像的缩放、旋转、剪切。 1.2 设计内容 1. 图像的插值缩放。 2. 图像的插值旋转。 3. 图像的插值剪切。 2 设计原理 在对图像的几种几何操作中,图像的缩放和旋转都要用到插值操作。插值算法的好坏直接关系到图像的失真程度,插值函数的设计是插值算法的核心问题。因此,在进行几何操作前,应该先了解插值的基本原理。 2.1 图像插值的基本原理 插值通常是利用曲线拟合的方法,通过离散的采样点建立一个连续函数,用这个重建的函数便可以求出任意位置的函数值。如图所示: 对于等间隔离散数据,插值可以表示为: 其中,h为插值核,CK为权系数。 插值算法的数值精度及计算开销直接与插值核有关,插值核的设计是插值算法的核心。MATLAB的图像处理工具箱提供了三种插值方法: ● 最近邻插值(Nearest neighbor interpoination) ● 双线性插值 (Bilinear interpolation) ● 双三次插值 (Bicubic interpolation) 2.1.1 最近邻插值 从计算量的角度来说,最近邻插值是最简单的插值。在这种算法中,每一年插值输出像素的值就是在输入图像中与其最临近的采样点的值。 算法的数学表示为: 最近邻插值是工具箱函数默认使用的插值方法。对于索引色图像来讲,它也是唯一可行的方法。不过,最近邻法插值核的频域特性并不好,它与理想低通滤波器的性质相差较大。 2.1.2 双线性插值 在双线性插值中,输出像素值是它在输入图像2×2邻域采样点的平均值。这样看来,它相当于一种平滑操作。 双线性插值的频域特性优于最近邻插值函数,它的带阻特性较好。不过,仍有大量高频成分漏入通频带,造成了一定的混叠。此外,通频带在一定程度上被减弱,会使插值后的图像变模糊,从而损失一些细节。 2.1.3 双三次插值 双三次插值的插值核为三次函数,其插值邻域的大小为4×4,它的插值效果比较好,但相应的计算量也较大,一般很少使用。 2.2 图像的插值缩放 在MATKAB中,用函数imresize为实现对图像的放大或缩小。插值方法可选用以上三种方法中的任意一种,默认的插值方法是最近邻法。 该函数调用格式如下: B=imresize(A,m,) B=imresize(A,[mrows ncols],) B=imresize(…,,n) B=imresize(…,,h) 参数用于指定插值的方法,可选的值为 nearest’(最近邻法)、’bilinear’(双线性插值)、’bicubic’ (双三次插值),默认值为’nearest’。 B=imresize(A,m,)返回原图A 的m倍方大图像(m小于1时实际上是缩小)。 B=imresize(A,[mrows ncols],)返回一个mrows 行ncols 列的图像,若与原图的长/宽比不同,则图像会产生变形。 B=imresize(…,,n) 可以用参数n指定滤波器的尺寸。 B=imresize(…,,h)使用用户设计的插值h 进行插值,h可以看做一个儿维FIR滤波器。 2.2 图像的插值旋转 在MATLAB中,用函数imrotate来实现对图像的插值旋转,插值方法也可选用三种方法中的任意一种,默认的插值方法是最近邻法。 该函数调用格式如下: B=imrotate(A,angle,) B=imrotate(A,angle,,’crop’) 参数用于指定插值的方法,可选的值为 nearest’(最近邻法)、’bilinear’(双线性插值)、’bicubic’ (双三次插值),默认值为’nearest’。参数angle代表旋转的角度。 旋转后的图像回避原图大,用户可以指定’crop’参数对旋转后的图像进行剪切(取图像的中间部分),使返回的图像与原图大小相同。 2.3 图像的剪切 MATLAB中,用函数imcrop实观对图像的剪切操作。该操作剪切的是图像中的一个矩形子图,用户可以通过参数指定这个矩形四个顶点的坐标,也可以交互地用鼠标选取这个矩形。 该函数调用格式如下: I2=imcrop(I) X2=imcrop(X,map) RGB2=imcrop(RGB) I2=imcrop(I,rect) X2=imcrop(X,map,rect) RGB2=imcrop(RGB,rect) […]=imcrop(x,y,…) [A,rect]=imcrop(…) [x,y,rect]=imcrop(…) I2=imcrop(I)、X2=imcrop(X,map)和RGB2=imcrop(RGB)分别表示交互式的对灰度图像、索引色图像和真彩色图像进行剪切操作。 I2=imcrop(I,rect)、X2=imcrop(X,map,rect)和RGB2=imcrop(RGB,rect)分别表示按指定矩形框rect剪切图像,rect是一个4元矢量[xmin ymin widt height]。 […]=imcrop(x,y,…)表示在指定坐标系(x,y)中剪切图像。 [A,rect]=imcrop(…)和[x,y,rect]=imcrop(…)表示在剪切图像的同时返回剪切矿的参数rect。 3 设计方法及程序 3.1 图像的调用与显示 在MATLAB中用I=imread( ….tif );读取图像。用 imshow(I);显示调用的图像,用figure,imshow(…);显示处理后的图像 3.2 使用插值方法放大图像一 将原始图像用最近邻插值法放大1.5倍I1=imresize(I,1.5, nearest );其中1.5为放大系数。 将原始图像用双线性插值法放大1.5倍I2=imresize(I,1.5, bilinear );其中1.5为放大系数。 将原始图像用双三次插值法放大1.5倍I3=imresize(I,1.5, bicubic );其中1.5为放大系数。 如果想将原始图像缩小将放大系数设置在0到1之间即可。 使用插值方法放大图像的程序如下: >> I=imread( cameraman.tif ); >> imshow(I); >> I1=imresize(I,1.5, nearest ); >> figure,imshow(I1); >> I2=imresize(I,1.5, bilinear ); >> figure,imshow(I2); >> I3=imresize(I,1.5, bicubic ); >> figure,imshow(I3); 3.3 使用插值方法将图像旋转30° 采用双线性插值法将原始图像向右旋转30°,且将旋转后
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)