




已阅读5页,还剩15页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
图像处理通信工程应用技术课程设计书1MATLAB简介1.1 MATLAB说明MATLAB是由美国mathworks公司发布的主要面对科学计算、可视化以及交互式程序设计的高科技计算环境。它将数值分析、矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中,为科学研究、工程设计以及必须进行有效数值计算的众多科学领域提供了一种全面的解决方案,并在很大程度上摆脱了传统非交互式程序设计语言(如C、Fortran)的编辑模式,代表了当今国际科学计算软件的先进水平。 MATLAB和Mathematica、Maple并称为三大数学软件。它在数学类科技应用软件中在数值计算方面首屈一指。MATLAB可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。1.2 MATLAB的语言特点(1)语言简洁紧凑,使用方便灵活,库函数极其丰富。运算符丰富。 (2)MATLAB既具有结构化的控制语句(如for循环,while循环,break语句和 if语句),又有面向对象编程的特性。(3)程序限制不严格,程序设计自由度大。(4)MATLAB的图形功能强大。(5)MATLAB的缺点是,它和其他高级程序相比,程序的执行速度较慢。(6)由于MATLAB的程序不用编译等预处理,也不生成可执行文件,程序为解释执行,所以速度较慢。1.3 MATLAB系统构成 主要由以下五部分构成:(1) MATLAB语言(2)MATLAB工作环境(3)图形处理 (4)MATLAB数学函数(5)MATLAB应用编程人员接口(API)2基本原理2.1整体原理几何变换是图像处理和图像分析的重要内容之一。通过几何变换,可以根据应用的需要使原图像产生大小、形状和位置等各方面的变化。也就是说,几何变换可以改变像素点所在的几何位置以及图像中各物体之间的空间位置关系,这种运算可以被看成是将各物体在图像内移动,特别是图像具有一定的规律性时,一个图像可以由另一个图像通过做几何变换来产生。 几何变换可以分为图像的位置变换(平移、镜像、旋转)、形状变换(放大、缩小和剪切)以及图像的复合变换。图像几何变换的一般表达式为:其中(x, y)表示像素点的坐标位置,f(x, y)表示图像像素点(x, y)的灰度值. 图像几何变换就是建立一幅图像与其变换后的图像中所有各点之间的映射关系。2.2各部分原理2.2.1平移变换若将像素点(x, y)平移到(x+x, y+ y), 则图像平移变换函数的矩阵表示式为:2.2.2镜像翻转图像的镜像变换是与人们日常生活密切相关的一种变换。图像的镜像变换不改变图像的形状。图像的镜像变换包括水平镜像、垂直镜像和对角镜像。图像的水平镜像变换的矩阵表示形式为: 图像的垂直镜像变换的矩阵表示形式为:图像的对角镜像变换的矩阵表示形式为: 1.2.3旋转变换原始图像的任意点A(x0, y0)经旋转 角度后到新的位置A(x, y),则旋转变换函数的矩阵表示式为:对图像进行旋转变换时应注意以下几点:(1)为了避免图像旋转之后可能产生的信息丢失, 可以先进行平移, 然后进行图像旋转。(2)图像旋转之后, 可能会出现一些空白点, 需对这些空白点进行灰度级的插值处理, 否则会影响旋转之后的图像质量。1.2.4缩小和放大若图像坐标(x, y)缩放(fx, fy)倍, 则缩放变换函数的矩阵表示为:如果fx= fy, 即在x 轴方向和y 轴方向缩放的比率相同, 称为图像的全比例缩放;如果fx fy,图像的比例缩放会改变原始图像像素间的相对位置, 产生几何畸变。图像放大有三种方法,常用的插值算法有三种:最近邻插值、双线性插值、立方卷积插值,其中使用立方卷积插值达到的效果是最佳的。最近邻插值算法最简单的插值法是最近邻插值法,也叫零阶插值法。即选择离它所映射到的位置最近的输入像素的灰度值为插值结果。对二维图像,是取待测样点周围4 个相邻像素点中距离最近1 个相邻点的灰度值作为待测样点的像素值。若几何变换后输出图像上坐标为(x,y)的对应位置为(m,n)双线性插值算法双线性插值又叫一阶插值法,它要经过三次插值才能获得最终结果,是对最近邻插值法的一种改进,先对两水平方向进行一阶线性插值,然后再在垂直方向上进行一阶线性插值。立方卷积插值算法立方卷积插值又叫双三次插值,是对双线性插值的改进,是一种较为复杂的插值方式,它不仅考虑到周围四个直接相邻像素点灰度值的影响,还考虑到它们灰度值变化率的影响。3编程与实现3.1原始图像选择读取MATLAB为用户提供了专门的函数以从图像格式的文件中读写图像数据。采用的是imread函数来实现图像文件的读取操作,采用的格式如下: A=imread(filename.png)该语句用于读取字符串“filename”对应的灰度图像或彩色图像,“png”指定了文件的格式。采用imshow函数进行图像的显示,采用的格式如下: A=imread(filename.png); imshow(A);当这种显示方式要求被显示的图像要么在当前目录下或MATLAB的目录下。图像读入与显示和变化的源代码如下:x=imread( shu.png);imshow(x);title(原始图像)程序运行结果如下图3.1所示: 图3.1 原始图像3.2 平移变换平移变换主要通过move函数实现将一幅图像向右下方移动,空白的地方用黑色填充。A=double(A);A_move=zeros(size(A);H=size(A);A_x=30;A_y=30;A_move(A_x+1:H(1),A_y+1:H(2),1:H(3)=A(1:H(1)-A_x,1:H(2)-A_y,1:H(3);subplot(122);imshow(uint8(A_move);title(平移后图像)运行程序,效果如图3.2所示。 图3.2 平移后的图像3.3 镜像翻转镜像翻转主要采用fliplr、flipud两种函数,对角翻转时两者同时应用即可用法:fliplr(X)功能:matlab中的fliplr函数实现矩阵的左右翻转。 fliplr(X)使矩阵X沿垂直轴左右翻转。相关函数:flipud函数可以实现矩阵的上下翻转。备注:matlab中提供了许多对矩阵操作的函数,可以实现矩阵的三角矩阵的提取(triu、tril)、矩阵的翻转(flipud、fliplr、Flipdim)和旋转(rot90)等各种操作。用法:flipud(X)功能:matlab中的flipud函数实现矩阵的上下翻转。flipud(X)实现了矩阵X的上下翻转。相关函数:fliplr函数实现矩阵的左右翻转。备注:matlab中提供了许多对矩阵操作的函数,可以实现矩阵的三角矩阵的提取(triu、tril)、矩阵的翻转(flipud、fliplr、Flipdim)和旋转(rot90)等各种操作。对图像进行不同类型的镜像变换:I=imread( shu.png);figure(1)subplot(221);imshow(uint8(I);title(原始图像)I=double(I);h=size(I);I_fliplr(1:h(1),1:h(2),1:h(3)=I(1:h(1),h(2):-1:1,1:h(3); %水平镜像变换I1=uint8(I_fliplr);subplot(222);imshow(I1);title(水平镜像变换)I_flipud(1:h(1),1:h(2),1:h(3)=I(h(1):-1:1,1:h(2),1:h(3); %垂直镜像变换I2=uint8(I_flipud);subplot(223);imshow(I2);title(垂直镜像变换)I_fliplr_flipud(1:h(1),1:h(2),1:h(3)=I(h(1):-1:1,h(2):-1:1,1:h(3); %对角镜像变换I3=uint8(I_fliplr_flipud);subplot(224);imshow(I3);title(对角镜像变换)运行程序,效果如图3.3所示。 图3.3 镜像变换图像3.4 旋转变换旋转变换主要采用imrotate函数函数功能:对图像进行旋转操作。在matlab命令窗口中键入help 或 doc imrotate或lookfor imrotate可以获得该函数帮助信息。调用格式:B = imrotate(A,angle)将图像A(图像的数据矩阵)绕图像的中心点旋转angle度, 正数表示逆时针旋转, 负数表示顺时针旋转。返回旋转后的图像矩阵。 以这种格式调用该函数, 该函数默认采用最近邻线性插值(Nearest-neighbor interpolation)。旋转后的图像超出的部分填充0(黑色)。B = imrotate(A,angle,method)使用method参数可以改变插值算法,method参数可以为下面这三个值:nearest:最邻近线性插值(Nearest-neighbor interpolation)bilinear: 双线性插值(Bilinear interpolation)bicubic:双三次插值(或叫做双立方插值)(Bicubic interpolation)B = imrotate(A,angle,method,bbox)bbox参数用于指定输出图像属性:crop: 通过对旋转后的图像B进行裁剪, 保持旋转后输出图像B的尺寸和输入图像A的尺寸一样。loose: 使输出图像足够大, 以保证源图像旋转后超出图像尺寸范围的像素值没有丢失。 一般上这种格式产生的图像的尺寸都要大于源图像的尺寸。将图像逆时针旋转30 度。I=imread( shu.png );figure;subplot(121);imshow(I);title(原始图像)I1=imrotate(I,30,crop);subplot(122);imshow(I1);title(逆时针旋转30 度)运行程序,效果如图3.4所示。 图3.4 旋转变换图像3.5 缩小和放大图像的缩放操作主要采用imresize函数操作。函数功能该函数用于对图像做缩放处理。在matlab的命令窗口中输入doc imresize或者help imresize即可获得该函数的帮助信息。调用格式B = imresize(A, scale)返回的图像B的长宽是图像A的长宽的m倍。即缩放图像。 m大于1, 则放大图像; m小于1, 缩小图像。B = imresize(A, numrows numcols)numrows和numcols分别指定目标图像的高度和宽度。 显而易见, 由于这种格式允许图像缩放后长宽比例和源图像长宽比例不相同,因此所产生的图像有可能发生畸变。Y newmap = imresize(X, map, scale). = imresize(.,method)method参数用于指定在改变图像尺寸时所使用的算法, 可以为一下几种:nearest: 这个参数也是默认的, 即改变图像尺寸时采用最近邻插值算法;bilinear:采用双线性插值算法;bicubic: 采用双三次插值算法;. = imresize(.,parameter,value,.)使用最近邻域法将图像放大1.5倍和缩小0.5倍。I=imread( shu.png ); %I为原始图像figure;subplot(131);imshow(I); %显示原始图像I=double(I);I_en=imresize(I,4,nearest); %最近邻法标志函数nearest 扩大1.5倍subplot(132);imshow(uint8(I_en); %显示扩大1.5倍后的图像I_re=imresize(I,0.5,nearest); %缩小两倍subplot(133);imshow(uint8(I_re);%显示缩小0.5 倍后的图像运行程序,效果如图3.5、3.6、3.7所示 图3.5 原始图像 图3.6缩小0.5倍图像 图3.7 放大1.5倍图像使用不同插值方法将图像缩小为原图像的0.2 倍,再使用不同的方法放大5 倍。I=imread( shu.p );J=imresize(I,0.2); %图像缩小为0.2J2=imresize(J,5,nearest); %图像放大,最近邻插值法J3=imresize(J,5,bilinear); %图像放大,双线性插值法J4=imresize(J,5,bicubic); %图像放大,双立方插值法subplot(2,2,1);imshow(I);title(原始图像);subplot(2,2,2);imshow(J2);title(最近邻插值法);subplot(2,2,3);imshow(J3);title(双线性插值法);subplot(2,2,4);imshow(J4);title(双立方插值法);运行程序,效果如图3.8所示。 图3.8 不同插值放大图像4总结与分析Matlab作为一个极其强大的计算平台,拥有许多优势,在对图像进行处理时,可以看做是对于矩阵的运算,通过不同的函数运算,可以达到不同效果。本次设计主要对于图像进行四种变换,分别是平移、镜像、旋转、缩放。在平移操作中,可以通过move函数更改每个像素的点位置,通过手动更改(x,y)参数控制水平竖直方向的移动距离。在镜像试验中,主要应用fliplr、flipud两种函数进行反转,其本质仍然是矩阵的翻转。在对角线翻转时,可以看做先进行水平方向的翻转在进行水平防线的翻转。翻转变换操作同样是对像素的(x,y)进行运算和重排布,以达到整体翻转 效果。图像的缩放变换通过全比例缩放对像素进行舍弃或补充性运算,放大过程中填充的像素均是由附近像素灰度值等信息计算出来的。值得一提的是,旋转和缩放变换中,默认算法是最邻近差值法,也就是令变换后像素的灰度值等于距它最近的输入像素的灰度值,我在缩放变换中加入了最邻近插值法和双线性插值法(其核心思想是在两个方向分别进行一次线性插值,混合的比例与离像素的距离成反比)以及双立方插值法(在每个维度上对于连续的4个点进行插值)的比较,比较的结果是最近邻插值法锯齿感明显,色彩过渡也存在突变。双线性插值法则优于最近邻插值法,双立方插值法不仅考虑了周围四个直接相邻像素点灰度值的影响,还考虑到它们灰度值变化率的影响。因此克服了前两种方法的不足之处,能够产生比双线性插值更为平滑的边缘,计算精度很高,处理后的图像像质损失最少,效果是最佳的。在进行图像缩放处理时,应根据实际情况对三种算法做出选择,既要考虑时间方面的可行性,又要对变换后图像质量进行考虑,这样才能达到较为理想的结果。5心得体会通过此次的课程设计,感触颇深,因为让我认识到了MATLAB的强大功能,同时也对图像处理的认识有了进一步的加深。在此次课程设计中我遇到了前所未有的难题。在此我非常感谢曾经教育过我们的老师,是他们在平时教学中帮助我培养了良好的学习习惯和查阅新知识,快速理解运用新知识的能力。经过一段时间的查阅和向老师的请教,我弄清楚了此时课程设计所需的全部原理知识。在编程的过程中,我也遇到了很多困难,所幸的是图书馆有相关书籍,网络上有学长学姐们做过的仿真作为参考,有老师和同学们帮助我,于是我一步步实现了各个步骤的相关编程,并且在最后得以综合整理,完成了此次的仿真任务。但是不得不说,此时课程设计由于时间和我的知识储备的问题,仍然有一些不完备的地方:在整个过程中虽然结果较为直观,但我还有过将程序加上操作界面或者将画面失真度量化等等想法,如果时间允许或有懂得更多的同学协助,应该可以做得更好。尽管此时课程设计仍然有很多不足,但是我在这个过程中加深了对各方面理论知识的了解,对我以后的学习工作产生了一定影响,十分感谢此次课程设计。 6参考文献1 高展宏,徐文波.基于MATLAB的数字图像处理案例教程.北京:清华大学 版社,20112 贺兴华等.MATLAB7.x图像处理.北京:人民邮电出版社,20063 陈杰.MATLAB宝典.北京:电子工业出版社,2007.4 张德丰. MATLAB数值分析与应用. 北京:国防工业出版社,2009.5 冈萨雷斯.温茨著.数字图像处理.2版.阮秋琦,等译. 北京:电子工业出版 社,2002.6 汪晓银,邹庭荣.数学软件与数学实验.武汉:华中农业大学教务处,2007附录平移A=imread(shu.png);figure;subplot(121);imshow(A);title(原始图像)A=double(A);A_move=zeros(size(A);H=size(A);A_x=30;A_y=30;A_move(A_x+1:H(1),A_y+1:H(2),1:H(3)=A(1:H(1)-A_x,1:H(2)-A_y,1:H(3);subplot(122);imshow(uint8(A_move);title( 平移后图像)镜像I=imread( shu.png );figure(1)subplot(221);imshow(uint8(I);title(原始图像)I=double(I);h=size(I);I_fliplr(1:h(1),1:h(2),1:h(3)=I(1:h(1),h(2):-1:1,1:h(3); %水平镜像变换I1=uint8(I_fliplr);subplot(222);imshow(I1);title(b) 水平镜像变换)I_flipud(1:h(1),1:h(2),1:h(3)=I(h(1):-1:1,1:h(2),1:h(3); %垂直镜像变换I2=uint8(I_flipud);subplot(223);imshow(I2);title(垂直镜像变换)I_fliplr_flipud(1:h(1),1:h(2),1:h(3)=I(h(1):-1:1,h(2):-1:1,1:h(3); %对角镜像变换I3=uint8(I_fliplr_flipud);subplot(224);imshow(I3);title(对角镜像变换)旋转I=imread(shu.
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 象棋胜负判断课件
- 诺病毒知识培训课件
- 2025年分布式光伏发电项目电力建筑工程安装劳务分包合同
- 2025年度教育机构场地租赁与课程合作合同
- 2025年新能源项目法律咨询与服务合同范本
- 2025版大型商业综合体水电安全运行管理合同
- 2025版建筑塔吊安装施工安全监督合同
- 2025年厨房空间利用优化与装修改造合同范本
- 2025年度商业地产项目投资风险评估与预警服务合同
- 2025年度房产租赁保证金退还合同书
- 路灯灯杆项目投资计划书
- 环保项目配电室电气安装方案
- 新概念第二册单词表(完整版)
- 初三考试化学试卷(含答案)
- 2024-2025学年小学信息技术(信息科技)五年级全一册义务教育版(2024)教学设计合集
- 【新课标】人音版五年级上册第一单元 朝夕 大单元整体教学设计
- 自然保护区管理中的生态系统恢复策略
- 试车跑道专项方案
- 2024年交管12123学法减分试题题库附答案
- 2024年湖南省长沙住房公积金管理中心招聘历年高频难、易点(公共基础测验共200题含答案解析)模拟试卷
- KA-T 20.1-2024 非煤矿山建设项目安全设施设计编写提纲 第1部分:金属非金属地下矿山建设项目安全设施设计编写提纲
评论
0/150
提交评论