基于Matlab的数字图像几何变换的实现_第1页
基于Matlab的数字图像几何变换的实现_第2页
基于Matlab的数字图像几何变换的实现_第3页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

通信专业课程设计二(论文)学生姓名学生姓名指导教师设计(论文)题目Matlab的数字图像几何的变换数字图像处理的特点及目的。主要研数字图像几何变换的理论。究内容数字图像缩放、剪取、旋转的实现。Matlab作为工具,以最近邻插法、双线性插值法和研究方法双三次插值法三种常用数字图像插值算法为基础,实现了数字图像的比例缩放、旋转和剪取一系列几何变换。主要技术用最近邻插法、双线性插值法和双三次插值法这三种常用的数字指标(或研究目标)意见教研室主任(专业负责人)签字:年月 日目录11-1.111.2223-2.13-2.24-2.36-37-3.173.1.1IMRESIZE函数 错误!未定义书签。3.1.27-3.2103.2.1IMROTATE函数 错误!未定义书签。3.2.2数字图象旋转-10-3.3数字图像剪取 ..-12-3.3.1IMCOPY函数 ..-12-3.3.2数字图象剪取-12-415-参考文献-16-附录-17-I1数字图像概述2020年代,图像处理首次应用于改善伦敦和纽约之间海底电缆发送的图片质2050年代数字计算机发展到一定水平后,数字图像处理才真正引起人们的1964年美国喷气推进实验室JP2号”太空船发回的大批月60形成一门新的学科。6070年代,由于离散数学的创立和完善,使数字图像处理技术得到迅猛的发展,理论和方法进一步完善,应用范围更加广阔。这一时期,图像处理主70(NASA)的喷气推进实验室第一次使用计算机对太空船发回的大批月球图片进行处理到信息技术不断提高的今天,数字图像的应用处理技术得到了广泛的应用,形成了自己的技术特色和完善的学科体系。用计算机进行图像处理的前提是图像必须以数字格式存储,我们把以数字格式存放的图像称之为数字图像。常见的各种照片、图片、海报、广告画等均属模拟图像,要将模拟图像数字化后生成数字图像,需要利用数字化设备。目前,将模拟图像数字化的主要设备是扫描仪,将视频画面数字化的设备有图像采集卡。当然,也可以利用数码照相机直接拍摄以数字格式存放的数字图像。模拟图像经扫描仪进行数字化或由数码相机拍摄的自然景物图像,在计算机中均是以数字格式存储的。既然是数字,计算机当然可以方便地进行各种处理,以达到视觉效果和特殊效果。在计算机中,图像被分割成如下所示的像素(PixelMN个像素的数字图像,其像素灰度值可以用MN列的矩阵G表示:g

g ... g 12 1NGg21

g ... g22 2

(1-1)

...

... ...g gM1 M2

... gMN-1---PAGE7-数字图像几何变换介绍我们在处理图像时往往会遇到需要对图像进行几何变换的一些问题。图像的几何变换时图像处理和图像分析的基础内容之一,它不仅提供了产生某些图像的可能,而且还可以使图像处理和分析的程序简单化,特别是图像具有一定的规律性时,一个图像可以由另一个图像通过几何变换来实现。所以,为了提高图像处理和分析程序设计的速度和质量,开拓图像程序应用范围的新领域,对图像进行几何变换是十分必要的。图像的几何变换不改变图像的像素值,而是改变像素所在的几何位置。从变换的性质分,图像的几何变换有图像的位置变换(平移、镜像、旋转、图像的形状变换(放大、X光和卫星遥感图像都会用到这两项技术。MATLABMatrixLaborator(矩阵实验室,一开始它是一种专门用于矩阵数值计算的软件,从这一点上也可以看出,它在矩阵运算上有自己独特的特点。实际上MATLAB中的绝大多数的运算都是通过矩阵这一形式进行的。这一特点也就决定了MATLABM×N样本的数字图像,该数字图像是一个整数阵列,因而用矩阵来描述该数字图像是最直观最简便MATLABMATLABMATLAB的图像处理工具包实现了图像的缩放、旋转和剪取。图像处理工具包是由一系列支持图像处理操作的函数组成的。所支持的图像处理操作有:(DCT变换等)、图像分析和统计、二值图像操作等。下面就MATLAB在图像处(2)图像处理的基本运算。(3)图像变换。(4)图像的分析和增强。(5)图像的数学形态学处理。MATLABMATLAB时,只需按照函数的调用语法正确输入参数即可。[1]2图像缩放原理x轴方向按比例缩放fxyfyfxfyxyfxfy素间的相对位置,产生几何畸变。设原图像中的点P0

(x,y0

)比例缩放后,在新图像中的对应点为P(x,y),则比例缩放P(xyP(x,y之间的关系用矩阵形式可以表示为0 0 0

x fx 0 0x 0y

0

fy 0y0

(2-6)其逆运算为

1

0 111 0 0x

fx x0 1 yyy

0fy

(2-7)10即

0 11x x0

(2-8)y y0 fy比例缩放所产生的图像中的像素可能在原图像中找不到相应得像素点,这样就必须进行插值处理。有关插值的内容在后面我们会讨论。下面首先讨论图像的比例缩小。最简单的比例缩小时当fxfy1时,图像被缩到一半大小,此时缩小后图像中的(0,0)像素2对应于原图像中的0,0)(0,1)像素对应于原图像中的(0,2)(1,0)所以画布可相应缩小。此时,只需在原图像基础上,每行隔一个像素取一点,每隔一行进行操作,即取原图的偶(奇)数行和偶(奇)数列构成新的图像。如果图像按任意比例缩小,则需要计算选择的行和列。如果MN大小的原图像F(x,y)缩小为kMkN大小(k1)的新图像I(x,y)时,则I(x,y)F(int(cx),int(cy)) (2-9)其中,c1。由此公式可以构造出新图像。kfxfyfx,fy0xy方向的缩小MN旧图F(x,y)缩小为k1

Mk2

N(k1

k2

1)大小的新图像I(x,y)时,则其中c1

1,ck 1

I(x,y)F(int(c11,由此公式可以构造出新图像。k2

x),int(c2

y)) (2-10)图像的缩小操作中,是在现有的信息里如何挑选所需要的有用信息。而在图像的放大操作中,则需要对尺寸放大后所多出来的空格填入适当的像素值,这是信息的估计问题,fxfy2时,图像被按全比例放大二倍,放大后图像中的0)像素对应于原图中的00)(01)像素对应于原图中的00.5)像素,该像素不存在,可以近似为(0,0)也可以近似为0,1(,2)像素对应于原图像中的01)(10)像素对应于原图中的0.50,它的像素值近似于或(1,0)(2,0)像素对应于原图中的(1,0)像素,依此类推。其实这是将原图像每行中的像素重复取值一遍,然后每行重复一次。按比例将原图像放大k倍时,如果按照最近邻域法则需要将一个像素值添在新图像的kk的子块中。显然,如果放大倍数太大,按照这种方法处理会出现马赛克效应。当fxfyfx,fy0xyxy到新图像的一个kk1 2

的子块中去。为了提高几何变换后的图像质量,常采用线性插值法。该方法的原理是,当求出的分数地址与像素点不一致时,求出周围四个像素点的距离比,根据该比率,由四个邻域的像素灰度值进行线性插值。图像旋转原理一般图像的旋转是以图像的中心为原点,将图像上的所有像素都旋转一个相同的角变换中既可以把转出显示区域的图像截去,也可以扩大图像范围以显示所有的图像。P(xy逆时针旋转角后的0 0 0PxyP(xyPxy的坐标分别是:0 0 0x0y0

rcosrcos

(2-11)xrcos()rcoscosrsinsinx

cosy

sin00yr)rsincosrcossin00

siny

cos

(2-12)写成矩阵表达式为

x cos

sin

0 00x 0其逆运算为

y sin1

cos0

0y011

(2-13)x cos

sin

0x 0y

sin

cos

0y0

(2-14)1 0 0 11利用上述方法进行图像旋转时需要注意如下两点:图像旋转之前,为了避免信息的丢失,一定要有坐标平移。面效果不好,一般也称这种操作为插值处理。旋转,则先要将坐标系平移到该点,再进行旋转,然后将旋转后的图象平移回原来的坐标原点,这实际上是图像的复合变换。如将一幅图像绕点逆时针旋转度,首先将原点平移到a,,即1 0 a A0 1 b 0 1然后旋转然后再平移回来

cosBsin0sincos0

000

(2-16)1 0 a C0 1 b 0 0 1综上所述,变换矩阵为TCBA。图像剪取原理了一个二维坐标,即(x,y)(x0,y0,这点就作为要截取的矩形的左上角的起始坐标。然后我们定义一两个常量、y代表矩形(x0,y0)(x0xy0、(x0y0y和(x0xy0y四个点所围成的矩形部分便被保留下来。[1]3MATLAB图像处理工具包是由一系列支持图像处理操作的函数组成的,所支持的图像处理操作有:几何操作、区域操作和块操作;线性滤波和滤波器设计;变换(DCT变换);图像分析和增强;二值图像操作等。本论文所采用图像为分辨率为200234的灰度图像,其格式为JPEG。数字图像缩放imresize函数MATLABimresize3放,如果不指定插值方法,则默认使用最近邻插值法。imresize函数的语法格式为:B=imresize(A,m,method)B=imresize(A,[mrowsncols],method)B=imresize(…,method,n)B=imresize(…,method,h)这里参数method用于指定插值的方法,可选的值为nearest(最近邻法),bilinear(双线性插值)及bicubic(双三次插值),默认值为nearest。B=imresize(A,m,method)返回原图A的m倍放大图像(小于1时效果是缩小)。B=imresize(A,[mrowsncols],method)mrows行,ncols列的图像,若mrows和ncols定义的长宽比与原图不同,则图像会产生畸变。bilinearbicubic方法缩小图像时,为消除引入的高频成分,imresize使用一n指定滤波器的尺寸,即B=imresize(…,method,n)。对于nearest确指定。B=imresize(…,method,h)hFIR滤波器。数字图象缩放1.5其运行结果如下:图3.1原图像图3.2最近临插法按原比例放大1.5倍后的图像图3.1为原图,图3.2为用最近临插法按原比例放大1.5倍后的图像。1.5用最近邻插法放大的图像做比较图3.3采用最近邻插法所得图像-8-图3.4采用双线性插值法所得图像图3.5双三次插值法所得图像3.33.4,3-5三次插值法所得图像。下面我们用双线性插值法将图像按原比例缩小为0.8倍。图3.6原图3.70.8倍后的图像3.63.7为用双线性插值法按原比例缩小为0.8倍后的图像。-9-数字图像旋转imrotate函数imrotate3种方法对图像进行插imrotate的语法格式为:B=imrotate(A,angle,method)B=imrotate(A,angle,method,'crop')函数imrotate对图像进行旋转,参数method用于指定插值的方法,可选的值为nearest(最近邻法双线形插值)bicubic(双三次插值nearest0。用户也可以指定crop转后的图像进行剪切(取图像的中间部分),使返回的图像与原图大小相同。数字图象旋转首先,我们用双线性插值法将原图像旋转45度,不裁去超出原图的部分。图3.10原图3.1145度后的图像,未裁去超出原图的部分3.103.1145分。45做比较,-10-14521与原图大小相同下面,我们用双线性插值法将原图像旋转90度,并与旋转45度的图像做比较。图1为用双线性插值法将原图像旋转90度所得图像,图2为旋转45度的所得图像。-11-数字图像剪取IMCOPY有时只需要处理图像中的一部分,或者需要将某一部分取出,这样就要对图像进行剪取。图形的裁剪处理可使用imcrop函数实现。函数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,A,rect]=imcrop(…)RGB2=imcrop(RGB)I2=imcrop(I,rect)X2=imcrop(X,map,rect)和RGB2=imcrop(RGB,rect)按指定的矩形框rect剪切图像,rect是一个四元向量[xminyminwidthheight],分别表示矩形左上角的坐标和长度及宽度。[…]=imcrop(x,y,…)在指定坐标系统(x,y)中剪取图像。[A,rect]=imcrop(…)和[x,y,A,rect]=imcrop(…)在用户交互剪取图像的同时返回剪取框的参数rect。数字图象剪取首先,我们从坐标(0,0)100100部分。图3.16原图-12-图3.17以坐标(0,0)开始,剪取长度为100,宽度为100的矩形部分下面,我们以坐标(50,50)开始,剪取长度为100,宽度为100的矩形部分,并与以坐标(0,0)开始,剪取同样大小的图像相比较。1为以坐标开始,剪取长度为100100坐标(0,0)100100的矩形部分。下面我们在原图像上用鼠标拖动出一个矩形框,返回该矩形框的起始坐标、长度和宽度,语句如下:i=imread('dd.jpg');[A,rect]=imcrop(i)截取部分如下图所示:返回的值为

图3.21用鼠标截取部分rect=14.3004 10.6290 107.0777 119.0671recti=imread('dd.jpg');j=imcrop(i,[14.3004 10.6290 107.0777 119.0671]);imshow(i),title(1)figure,imshow(j),title(2)可得图像-13-图3.22将返回的rect值代入后所得图像该图像与用鼠标截取的图像完全相同。[6]-14---PAGE18-4本文采用了MATLAB作为工具,以最近邻插法、双线性插值法和双三次插值法三种常用数字图像插值算法为基础,实现了数字图像的比例缩放、旋转和剪取等一系列几何变最近邻插法质量最差,但是算法简单,速度快;双线性插值法质量好,但是需要较大的计算量才能完成;双线性插值法无论在质量上还是速度上,都介于两者之间。插值技术的提高是以数学方法的改进和提高为前提的。运用到现实中,还应结合硬件处理速度选择合适的算法,硬件处理速度的提高也是实现复杂算法的前提。随着数学的发展和计算机硬件水平的提高,将会有更优秀的插值算法运用到实际当中,数字图像几何变换的质量和速度将得到很大程度上的提高。参考文献[M],1999.3[M],2000.8[M],2001.1l[M],2000.4[M],2000.4陈桂明,张明照,戚红雨.应用MATLAB[M],2000.1.VisualC++数字图像处理[M],2001.4附录我们用最近邻插法将图像按原比例放大1.5倍,语句如下:i=imread('dd.jpg');a=1.5j=imresize(i,a);imshow(i),title(1)figure,imshow(j),title(2)1.5i=imread('dd.jpg');a=1.5j=imresize(i,a);k=imresize(i,a,'bilinear');l=imresize(i,a,'bicubic');imshow(j),title(1)figure,imshow(k),title

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论