编程实现一幅图像的平移、镜像、旋转、缩小和放大_第1页
编程实现一幅图像的平移、镜像、旋转、缩小和放大_第2页
编程实现一幅图像的平移、镜像、旋转、缩小和放大_第3页
编程实现一幅图像的平移、镜像、旋转、缩小和放大_第4页
编程实现一幅图像的平移、镜像、旋转、缩小和放大_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

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

文档简介

1、精选优质文档-倾情为你奉上课程设计任务书学生姓名: 专业班级: 通信1003班 指导教师: 郭志强 工作单位: 信息工程学院 题 目: 通信工程应用技术 初始条件:(1)使用matlab软件进行操作 (2)选择一个图像进行处理要求完成的主要任务: (包括课程设计工作量及其技术要求,以及说明书撰写等具体要求) (1)编程实现一幅图像的平移、镜像、旋转、缩小和放大。 (2)给出所用算法的理论依据和必要的推导过程,给出原始图像和处理后的图像。时间安排: 第15周:安排任务,布置题目; 第1518周:设计仿真,撰写报告 第19周:完成设计,提交报告,答辩指导教师签名: 年 月 日系主任(或责任教师)签

2、名: 年 月 日专心-专注-专业目录摘要MATLAB是套高性能的数值计算和可视化软件,它集数值分析、矩阵运算、信号处理和图形显示于一体,构成个方便的、界面友好的用户环境。MATLAB强大的扩展功能为各个领域的应用提供了基础,由各个领域的专家相继给出了MATLAB工具箱,其中主要有信号处理,控制系统,神经网络,图像处助,鲁棒控制, 非线性系统控制设计,最优化,小波,通信等工具箱,这此工具箱给各个领域的研究和工程应用提供了有力的工具。借助于这些“巨人肩膀上的工具”,各个层次的研究人员可直现方便地进行分析、计算及设计工作,从而大大地节省了时间。 本次课程设计的目的在于较全面了解常用的数据分析与处理原

3、理及方法,能够运用相关软件进行模拟分析。编程实现一幅图像的平移、镜像、旋转、缩小和放大。要求给出所用算法的理论依据和必要的推导过程;给出原始图像和处理后的图像,达到本次课程设计的目的。关键词: MATLAB 放大 旋转 平移 镜像Abstract MATLAB is a set of high-performance numerical computation and visualization software, which combines numerical analysis, matrix computation, signal processing and graphics in o

4、ne form - a convenient, user-friendly user environment.MATLAB is a powerful extension application in various fields to provide a basis by experts in various fields have been given a MATLAB toolbox, which are signal processing, control systems, neural networks, image processing support, robust contro

5、l, nonlinearcontrol system design, optimization, wavelets, communications toolkit, which this kit to the various areas of research and engineering applications a powerful tool.With these "tools on the shoulders of giants," researchers at all levels can now be easily analyzed directly, calc

6、ulation and design work, which greatly saves time. The purpose of this course design is a comprehensive understanding of common principle and method for data analysis and processing, able to use relevant software for simulation analysis. Programming to realize an image of translation, mirror, rotate

7、, narrowing and widening. Ask for the derivation process of the algorithm used in theoretical basis and necessary; The original image and processed image is given. Achieve the goal of this curriculum designKeywords: MATLAB magnification rotation translation mirror1 MATLAB简介1.1 MATLAB用途 MATLAB是由美国mat

8、hworks公司发布的主要面对科学计算、可视化以及交互式程序设计的高科技计算环境。它将数值分析、矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中,为科学研究、工程设计以及必须进行有效数值计算的众多科学领域提供了一种全面的解决方案,并在很大程度上摆脱了传统非交互式程序设计语言(如C、Fortran)的编辑模式,代表了当今国际科学计算软件的先进水平。 MATLAB和、并称为三大数学软件。它在数学类科技应用软件中在方面首屈一指。MATLAB可以进行运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、信

9、号处理与通讯、金融建模设计与分析等领域。如图matlab操作界面如下1.-1所示:图1-1matlab操作界面1.2 MATLAB的语言特点(1)语言简洁紧凑,使用方便灵活,库函数极其丰富。运算符丰富。 (2).MATLAB既具有结构化的控制语句(如for循环,while循环,break语句和 if语句),又有面向对象编程的特性。(3)程序限制不严格,程序设计自由度大。(4)MATLAB的图形功能强大。(5)MATLAB的缺点是,它和其他高级程序相比,程序的执行速度较慢。(6)由于MATLAB的程序不用编译等预处理,也不生成可执行文件,程序为解释执行,所以速度较慢。 1.3 MATLAB系统构

10、成 主要由以下五部分构成: MATLAB系统构成 (1) MATLAB语言 (2)MATLAB工作环境 (3)图形处理 (4)MATLAB数学函数库 (5)MATLAB应用编程人员接口(API)2图像选择及变换2.1 原始图像选择读取 MATLAB为用户提供了专门的函数以从图像格式的文件中读写图像数据。这次采用的是imread函数来实现图像文件的读取操作,采用的格式如下:A=imread(filename.fmt)该语句用于读取字符串“filename”对应的灰度图像或彩色图像,“fmt”指定了文件的格式。采用imfinfo函数查询图像文件的信息。其语句格式如下:Info=imfinfo(fi

11、lename.fmt)该语句可以在命令窗口会显示出文件的基本信息。采用imshow函数进行图像的显示,采用的格式如下:A=imread(filename.fmt); imshow(A);当这种显示方式要求被显示的图像要么在当前目录下或MATLAB的目录下。图像读入与显示和变化的源代码如下:%获取图像,并显示各种基本信息RGB=imread('F:/rabbit.jpg'); % RGB:原始图像,真彩色;Info=imfinfo('F:/rabbit.jpg')figure;imshow(RGB)title('原始图像')程序运行结果如下图2-1

12、所示:图2-1 读取后显示图片命令窗口输出结果:Info = Filename: 'F:/rabbit.jpg' FileModDate: '12-十二月-2013 17:40:23' FileSize: 7057 Format: 'jpg' FormatVersion: '' Width: 293 Height: 220 BitDepth: 24 ColorType: 'truecolor' FormatSignature: '' NumberOfSamples: 3 CodingMethod:

13、'Huffman' CodingProcess: 'Sequential' Comment: 2.2 图像放大和缩小2.2.1 图像放大缩小的知识1)最邻近插值算法 最简单的插值算法是最邻近插值,也称为零阶插值。它输出的像素灰度值就等于距离它映射到的位置最近的输入像素的灰度值,最邻近插值算法简单,在许多情况下都能得到令人满意的结果,但是当图像中包含像素之间灰度级有变化的细微结构时,最邻近算法会在图像中产生人为加工的痕迹。双线性插值算法计算量比零阶插值大,但缩放后图像质量高,不会出现像素值不连续的的情况,这样就可以获得一个令人满意的结果。最邻近点插值取插值点的4个

14、邻点中距离最近的邻点灰度值作为该点的灰度值。设插值点(i,j)到周边4个邻点fk(i,j)(k 1,2,3,4)的距离为dk(k 1,2,3,4),则:g(i,j)fk(i,j),dl mind1,d2,d3,d4,l 1,2,3,4 2)双线性插值算法双线性插值是利用了需要处理的原始图像像素点周围的四个像素点的相关陛,通过双线眭算法计算得出的。对于一个目的坐标,通过向后映射法得到其在原始图像的对应的浮点坐标(i+u,j+v),其中i,j均为非负整数,u,v为0,l区间的浮点数,则这个像素的值f(i+u,j+v)可由原图像中坐标为(i,j)、(i+l,j)、(i,j+1)、(i+1,j+1)所

15、对应的周围四个像素的值决定,即:f(i+u,j+v)=(1-u)×(1-v)×f(i,j)+(1-u)×V× f(i,j+1)+u×(1-v)×f(i+l,j)+u×v×f(i+l,j+1),其中f(i,j)表示源图像(i,j)处的的像素值,以此类推,这就是双线性内插值法。如图2-2所示,已知(0,0)、(0,1)、(1,0)、(1,1)四点的的灰度,可以由相邻像素的灰度值f(0,0)和f(1,0)在X方向上线性插值求出(x,0)的灰度f(x,0),由另外两个相邻像素f(0,1)和f(1,1)在X方向上线性插值可求

16、出(x,1)的灰度f(x,1),最后由f(x,0),f(x,1)在Y方向上进行线性插值就可以得到(x,y)的灰度f(x,y)。在同一行内根据待插值像素点与其前后的原图像像素点的位置距离进行加权线性插值,即离原图像像素点越近的待插值像素点,原图像像素的加权系数就越大;行间根据待插值行与其上下的原图像行间的距离进行加权线性插值,即离原图像行越近的待插值行,原图像行的加权系数就越大。图2-2 双线性插值原理3)基于双线性插值的程序流程图基于双线性插值的程序流程图如下图2-3所示:图2-3 程序流程图 先进行初始化,读取所要缩放的图像,获取目标图像的大小和目标像素点的横坐标和纵坐标,然后根据所提供的公

17、式算法逐点做双线性内插,最后显示图像。2.2.2 函数说明及参数选择采用imresize函数,其调用格式如下:B = imresize(A,mrows ncols, method )对于参数的选择,mrows ncols 是选择放大或缩小的倍数,method是选择才用最邻近插入法还是双三次插入法,参数分别为:nearest 、bilinear2.2.3 源程序及运行结果源程序如下所示:%图像放大和缩小X=imresize(RGB,0.5,'nearest');%采用最邻近插入法将图像缩小为原来的1/2figureimshow(X) ; title('最邻近插入法'

18、;)Y=imresize(RGB,2,'bilinear');%采用双三次插入法将图像放大为原来的2倍figureimshow(Y)title('双三次插入法')程序运行结果如图2-4、2-5所示:图2-4 最邻近插入法缩小一半图2-5 双线性插入法,放大一倍2.3 图像任意角度的旋转2.3.1 函数说明及参数选择 函数使用的是imrotate函数,其调用格式如下所示:B = imrotate(A,angle,method,bbox)期中参数method是选择用最邻近插入法还是双三次插入法,参数分别为:nearest 、bilinear旋转后的图像重新保存为一个

19、图像文件,使用imwrite函数,其调用格式如下:imwrite(BW,'test.tif')2.3.2 源程序及运行结果源程序如下:%图像的旋转X1=imrotate(RGB,45,'nearest');%将原始灰度以最邻近插值的方式将图像逆时针旋转45°figureimshow(X1)title('最邻近插值法逆时针45°旋转')Y1=imrotate(RGB,135,'bilinear');%将原始灰度以双线性插值的方式将图像逆时针时针旋转135°figureimshow(Y1)title(&#

20、39;双线性插值法逆时针135°旋转')程序的运行结果下图2-6、2-7所示:图2-6 邻近插值法逆时针旋转45°图2-7 双线性插值法逆时针旋转135°2.4 图像的平移2.4.1 函数平移的原理 图像平移是将一幅图像中所有的点都按照指定的平移量在水平、垂直方向移动,平移后的图像与原图像相同。平移后的图像上的每一点都可以在原图像中找到。设(x0,y0)为原图像上的一点,图像水平平移量tx,垂直平移量为ty,则平移后点(x0,y0)的坐标变为(x1,y1)。(x0,y0)与(x1,y1)之间的关系为:x1=x0+tx;y1=y0+ty;以矩阵的形式表示为:

21、 它的逆变化:2.4.2 函数说明及参数选择 函数使用的是translate函数,其调用格式如下所示: B=translate(strel(1),Y X) 其中strel(1)表示图像不变,进行Y X方向的平移。 平移后的图像重新保存为一个图像文件,使用imdilate函数,其调用格式如下:imdilate(A,B) 其中A是源图像,B是设置的图像平移的距离2.4.2 源程序及运行结果源程序如下:%图像的平移p=translate(strel(1), 25 25);%图像平移img=imdilate(RGB,p);figureimshow(img); title('图像的平移'

22、);运行结果如下图2-8所示:图2-8 经过平移后图像2.5 图像经过镜像3.5.1 函数说明及参数选择函数使用size函数求出图片的大小及色彩,其调用格式如下:d1,d2,.,dn=size(X)当n大于1时, 返回X各维的尺寸, 并存储在变量d1、d2、dn中。 其中n(输出参数的个数)必须等于(X)。如果不等于,则:n < ndims(X)时, 对于大于等于1且小于n的i, di等于X第i维的尺寸; dn等于X的其他剩余维数的尺寸的乘积。n > ndims(X)时, 多出来的输出参数等于1。 用函数maketform()镜像变换矩阵,其调用格式如下: T = maketfor

23、m('affine',U,X) 用函数imtranform()实现图像的镜像变换,调用格式如下: B = imtransform(A,tform,interp) 期中参数interp是选择用最邻近插入法还是双三次插入法,参数分别为:nearest 、bilinear。参数tform就是镜像变换矩阵。2.5.2 源程序及运行结果 源程序如下:%图像的镜像height,width,dim=size(RGB);tform=maketform('affine',-1 0 0;0 1 0;width 0 1);%定义水平镜像变换矩阵B=imtransform(RGB,tf

24、orm,'nearest');tform2=maketform('affine',1 0 0;0 -1 0;0 height 1);%定义垂直镜像变换矩阵C=imtransform(RGB,tform2,'nearest');figuresubplot(1,2,1),imshow(RGB);title('原图像');subplot(1,2,2),imshow(B);title('水平镜像');figuresubplot(2,1,1),imshow(RGB);title('原图像');subplot(

25、2,1,2),imshow(C);title('竖直镜像');程序结果如下图2-9、2-10所示:图2-9 图像经过水平镜像图2-10 图像经过垂直镜像后的图像4 感悟体会小结这次课程设计让自己更深的了解了MATLAB的程序设计及图像处理的内容,在这次设计中,学习到了很多的东西和知识,并且积累了大量的宝贵经验,归结如下:1 更全面的认识了MATLAB这个软件,并且能够熟练的使用MATLAB的基本功能,掌握了MATLAB的程序设计的基本方式方法和步骤。2 学习了图像的处理的各项基本函数的使用,特别对MATLAB的帮助功能有了很深刻的了解,能够独立的完成函数的编写及功能的实现,再也

26、不是什么函数都需要使用网络来询问,学习了图像噪声的使用,让我对专业知识有了更深的了解,对我以后的学习很有方向性。3 在程序设计中,特别是对各个函数的使用中,看英文资料成为了必须的,这让我大量的接触了专业英语,是一个很意外的收获。让我能够接触更广阔的知识,使我以后的学习更加的有效开阔。当然,网络上找资源也是这次实验课设的宝贵收获,在这次课程设计中,我大量运用了网络资源,积极的注册技术论坛,学到了很多知识。使我十分的受益。不过,通过这次课程设计,也让我认识到了很多的不足,让我知道了自己知识的浅薄和要学习的东西还很多很多,还需要我继续的努力。5 参考文献1 高展宏,徐文波. 基于MATLAB的数字图

27、像处理案例教程. 北京:清华大学出版社,20112 贺兴华等. MATLAB7.x图像处理. 北京:人民邮电出版社,20063 陈杰. MATLAB宝典. 北京:电子工业出版社,2007.4 张德丰. MATLAB数值分析与应用. 北京:国防工业出版社,20095 美冈萨雷斯.温茨著. 数字图像处理.2版. 北京:电子工业出版社,20026 汪晓银,邹庭荣. 数学软件与数学实验. 武汉:华中农业大学教务处,2007附录全部源程序代码:%获取图像,并显示各种基本信息RGB=imread('F:/rabbit.jpg'); % RGB:原始图像,真彩色;Info=imfinfo(&

28、#39;F:/rabbit.jpg')figure;imshow(RGB)title('原始图像')%图像放大和缩小X=imresize(RGB,0.5,'nearest');%采用最邻近插入法将图像缩小为原来的1/2figureimshow(X)title('最邻近插入法')Y=imresize(RGB,2,'bilinear');%采用双三次插入法将图像放大为原来的2倍figureimshow(Y)title('双三次插入法')%图像的旋转X1=imrotate(RGB,45,'nearest');%将原始灰度以最

温馨提示

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

评论

0/150

提交评论