通信工程应用技术 图像处理.docx
- 文档编号:29917205
- 上传时间:2023-08-03
- 格式:DOCX
- 页数:18
- 大小:24.09KB
通信工程应用技术 图像处理.docx
《通信工程应用技术 图像处理.docx》由会员分享,可在线阅读,更多相关《通信工程应用技术 图像处理.docx(18页珍藏版)》请在冰豆网上搜索。
通信工程应用技术图像处理
通信工程应用技术图像处理
课程设计任务书
学生姓名:
专业班级:
通信1102
指导教师:
许建霞工作单位:
武汉理工大学
题目:
图像处理
初始条件:
要求学生已完成通信专业各主干课程的学习,通过本课设进一步掌握专业课程群的综合原理、
操作技能,形成基本的解决实践问题的知识体系,提高学生对现代通信系统的全面认识。
要求完成的主要任务:
编程实现一幅图像的平移、镜像、旋转、缩小和放大。
要求:
给出所用算法的理论依据和必要的推导过程;给出原始图像和处理后的图像。
时间安排:
2019年1月6日布置任务;
2019年1月7日-10日查阅资料,确定设计方案;
2019年1月11日-16日完成仿真、制作实物等;
2019年1月17日完成答辩。
指导教师签名:
2019年1月6日
2019年1月6日系主任(或责任教师)签名:
摘要.....................................................................................................................................I
Abstract..............................................................................................................................II
1MATLAB简介................................................................................................................1
1.1MATLAB说明....................................................................................................1
1.2MATLAB的语言特点........................................................................................1
1.3MATLAB系统构成............................................................................................1
2基本原理.........................................................................................................................3
2.1总体思路..............................................................................................................3
2.2各部分原理..........................................................................................................3
2.2.1平移变换...................................................................................................3
2.2.2镜像翻转...................................................................................................3
1.2.4缩小和放大...............................................................................................4
3编程与实现.....................................................................................................................6
3.1原始图像选择读取..............................................................................................6
3.2平移变换.............................................................................................................7
3.2.1平移变换法1............................................................................................7
3.2.2平移变换法2............................................................................................8
3.3镜像翻转.............................................................................................................9
3.4旋转变换............................................................................................................11
3.5缩小和放大.......................................................................................................12
4总结与分析...................................................................................................................16
5心得体会.......................................................................................................................17
6参考文献.......................................................................................................................18
附录:
程序......................................................................................................................19
摘要
MATLAB自产生之日起就具有方便的数据可视化功能,以将向量和矩阵用图形表现出来,并且可以对图形进行标注和打印。
高层次的作图包括二维和三维的可视化、图象处理、动画和表达式作图。
可用于科学计算和工程绘图。
新版本的MATLAB对整个图形处理功能作了很大的改进和完善,使它不仅在一般数据可视化软件都具有的功能(例如二维曲线和三维曲面的绘制和处理等)方面更加完善,而且对于一些其他软件所没有的功能(例如图形的光照处理、色度处理以及四维数据的表现等),MATLAB同样表现了出色的处理能力。
同时对一些特殊的可视化要求,例如图形对话等,MATLAB也有相应的功能函数,保证了用户不同层次的要求。
另外新版本的MATLAB还着重在图形用户界面(GUI)的制作上作了很大的改善,对这方面有特殊要求的用户也可以得到满足。
关键字:
matlab图像处理
I
Abstract
SincethedateofMATLABproducedhasconvenientdatavisualizationfunction,tovectorandmatrixwithgraphicsdemonstrated,andcanbegraphtomarkandprint.Highlevelofconstructionincluding2dand3dvisualization,imageprocessing,animationandexpressionmapping.Canbeusedinscientificcomputingandengineeringdrawing.ThenewversionoftheMATLABtothegraphicsfunctionsmadealotofimprovementandperfect,makeitnotonlyinthegeneraldatavisualizationsoftwarewithafunction(suchas2dand3dcurveofsurfacerenderingandprocessing,etc)tobemoreperfect,andforsomeothersoftwarenotfunction(suchasgraphicallighttreatment,chromaticityprocessingandfourdimensionaldataperformance,etc.),MATLABalsoshowedgoodprocessingcapacity.Atthesametimeforsomespecialvisualrequirements,suchasgraphicsdialogue,MATLABalsohasthecorrespondingfunctionfunctiontoensurethattheuserrequirementsofdifferentlevels.InadditionthenewversionoftheMATLABismainlyinthegraphicaluserinterface(GUI)fortheproductionofthegreatimprovement,inthisrespecthavespecialrequirementsofuserscanalsosatisfied.
Keywords:
matlabImageprocessing
II
1MATLAB简介
1.1MATLAB说明
MATLAB是由美国mathworks公司发布的主要面对科学计算、可视化以及交互式程序设计的高科技计算环境。
它将数值分析、矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中,为科学研究、工程设计以及必须进行有效数值计算的众多科学领域提供了一种全面的解决方案,并在很大程度上摆脱了传统非交互式程序设计语言(如C、Fortran)的编辑模式,代表了当今国际科学计算软件的先进水平。
MATLAB和Mathematica、Maple并称为三大数学软件。
它在数学类科技应用软件中在数值计算方面首屈一指。
MATLAB可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。
1.2MATLAB的语言特点
(1)语言简洁紧凑,使用方便灵活,库函数极其丰富。
运算符丰富。
(2)MATLAB既具有结构化的控制语句(如for循环,while循环,break语句和if语句),又有面向对象编程的特性。
(3)程序限制不严格,程序设计自由度大。
(4)MATLAB的图形功能强大。
(5)MATLAB的缺点是,它和其他高级程序相比,程序的执行速度较慢。
(6)由于MATLAB的程序不用编译等预处理,也不生成可执行文件,程序为解释执行,所以速度较慢。
1.3MATLAB系统构成
主要由以下五部分构成:
1
开发环境:
MATLAB开发环境是一套方便用户使用的MATLAB函数和文件工具集,其中许多工具是图形化用户接口。
它是一个集成的用户工作空间,允许用户输入输出数据,并提供了M文件的集成编译和调试环境,包括MATLAB桌面、命令窗口、M文件编辑调试器、MATLAB工作空间和在线帮助文档。
数学函数库:
MATLAB数学函数库包括了大量的计算算法。
从基本算法如加法、正弦,到复杂算法如矩阵求逆、快速傅里叶变换等。
语言:
MATLAB语言是一种高级的基于矩阵/数组的语言,它有程序流控制、函数、数据结构、输入/输出和面向对象编程等特色。
用这种语言能够方便快捷建立起简单运行快的程序,也能建立复杂的程序。
图形处理系统:
图形处理系统使得MATLAB能方便的图形化显示向量和矩阵,而且能对图形添加标注和打印。
它包括强大的二维三维图形函数、图像处理和动画显示等函数。
应用程序接口:
MATLAB应用程序接口(API)是一个使MATLAB语言能与C、Fortran等其它高级编程语言进行交互的函数库。
该函数库的函数通过调用动态链接库(DLL)实现与MATLAB文件的数据交换,其主要功能包括在MATLAB中调用C和Fortran程序,以及在MATLAB与其它应用程序间建立客户、服务器关系。
2
2基本原理
2.1总体思路
几何变换是图像处理和图像分析的重要内容之一。
通过几何变换,可以根据应用的需要使原图像产生大小、形状和位置等各方面的变化。
也就是说,几何变换可以改变像素点所在的几何位置以及图像中各物体之间的空间位置关系,这种运算可以被看成是将各物体在图像内移动,特别是图像具有一定的规律性时,一个图像可以由另一个图像通过做几何变换来产生。
几何变换可以分为图像的位置变换(平移、镜像、旋转)、形状变换(放大、缩小和剪切)以及图像的复合变换。
图像几何变换的一般表达式为:
⎡x1⎤⎡x⎤⎡ab⎤⎡x⎤=T⎢y⎥⎢y⎥=⎢cd⎥⎢y⎥⎣⎦⎣⎦⎣⎦⎣1⎦
其中(x,y)表示像素点的坐标位置,f(x,y)表示图像像素点(x,y)的灰度值.图像几何变换就是建立一幅图像与其变换后的图像中所有各点之间的映射关系。
2.2各部分原理
2.2.1平移变换
若将像素点(x,y)平移到(x+∆x,y+∆y),则图像平移变换函数的矩阵表示式为:
⎡x⎤⎡10w⎤⎡x0⎤⎢y⎥=⎢010⎥⎢y⎥⎢⎥⎢⎥⎢0⎥⎢⎣1⎥⎦⎢⎣001⎥⎦⎢⎣1⎥⎦
2.2.2镜像翻转
图像的镜像变换是与人们日常生活密切相关的一种变换。
图像的镜像变换不改变图像的形状。
图像的镜像变换包括水平镜像、垂直镜像和对角镜像。
图像的水平镜像变换的矩阵表示形式为:
⎡x⎤⎡-10w⎤⎡x0⎤⎢y⎥=⎢010⎥⎢y⎥⎢⎥⎢⎥⎢0⎥⎢⎣1⎥⎦⎢⎣001⎥⎦⎢⎣1⎥⎦
3
图像的垂直镜像变换的矩阵表示形式为:
⎡x⎤⎡10w⎤⎡x0⎤⎢y⎥=⎢0-10⎥⎢y⎥⎢⎥⎢⎥⎢0⎥⎢⎣1⎥⎦⎢⎣h01⎥⎦⎢⎣1⎥⎦
所以,图像的对角镜像变换的矩阵表示形式为:
⎡x⎤⎡-10w⎤⎡x0⎤⎢y⎥=⎢0-1h⎥⎢y⎥⎢⎥⎢⎥⎢0⎥⎢⎣1⎥⎦⎢⎣h01⎥⎦⎢⎣1⎥⎦
1.2.3旋转变换
原始图像的任意点A(x0,y0)经旋转β角度后到新的位置A(x,y),则旋转变换函数的矩阵表示式为:
⎡x⎤⎡cosβ⎢y⎥=⎢-sinβ⎢⎥⎢⎢⎣1⎥⎦⎢⎣0sinβcosβ00⎤⎡x0⎤⎢y⎥0⎥⎥⎢0⎥1⎥⎦⎢⎣1⎥⎦
对图像进行旋转变换时应注意以下几点:
(1)为了避免图像旋转之后可能产生的信息丢失,可以先进行平移,然后进行图像旋转。
(2)图像旋转之后,可能会出现一些空白点,需对这些空白点进行灰度级的插值处理,否则会影响旋转之后的图像质量。
1.2.4缩小和放大
若图像坐标(x,y)缩放(fx,fy)倍,则缩放变换函数的矩阵表示为:
⎡x1⎤⎡fx⎢y⎥=⎢0⎣1⎦⎣0⎤⎡x⎤⎢⎥fy⎥⎦⎣y⎦
如果fx=fy,即在x轴方向和y轴方向缩放的比率相同,称为图像的全比例缩放;如果fx≠fy,图像的比例缩放会改变原始图像像素间的相对位置,产生几何畸变。
图像放大有三种方法,常用的插值算法有三种:
最近邻插值、双线性插值、立方卷积插值,其中使用立方卷积插值达到的效果是最佳的。
4
最近邻插值算法最简单的插值法是最近邻插值法,也叫零阶插值法。
它输出的像素灰度值就等于距离它映射到的位置最近的输入像素的灰度值,最邻近插值算法简单,在许多情况下都能得到令人满意的结果,但是当图像中包含像素之间灰度级有变化的细微结构时,最邻近算法会在图像中产生人为加工的痕迹。
在实际应用中,对于二维图像,是取待测样点周围4个相邻像素点中距离最近1个相邻点的灰度值作为待测样点的像素值。
若几何变换后输出图像上坐标为(x',y')的对应位置为(m,n)。
双线性插值算法双线性插值又叫一阶插值法,它要经过三次插值才能获得最终结果,是对最近邻插值法的一种改进,双线性插值算法计算量比零阶插值大,但缩放后图像质量高,不会出现像素值不连续的的情况,这样就可以获得一个令人满意的结果。
先对两水平方向进行一阶线性插值,然后再在垂直方向上进行一阶线性插值。
立方卷积插值算法立方卷积插值又叫双三次插值,是对双线性插值的改进,是一种较为复杂的插值方式,它不仅考虑到周围四个直接相邻像素点灰度值的影响,还考虑到它们灰度值变化率的影响。
5
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原始图像
6
3.2平移变换
3.2.1平移变换法1
平移变换主要通过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法1平移后图像
7
3.2.2平移变换法2
方法1结果中有部分图像被切割掉,方法2则不会。
平移变换主要通过zeros函数和for函数实现。
同样是将一幅图像向右下方移动,空白的地方用黑色填充。
首先创立一个增长增宽的三维零矩阵,然后使用for函数的嵌套来对新的矩阵进行赋值。
A=imread('basketball.png');figure
(1)imshow(A);title('原始图像')
width=size(imread('basketball.png'),2)%获取图像宽lenght=size(imread('basketball.png'),1)%获取图像长%平移h=30w=90
width1=width+h;lenght1=lenght+w;
A_large=zeros(lenght1,width1,3);%生成增长增宽的零矩阵fori=1:
1:
lenghtforj=1:
1:
widthfork=1:
1:
3
A_large(i+w,j+h,k)=A(i,j,k);endendendfigure
(2)
imshow(uint8(A_large));%改变数据类型title('平移后图像')
imwrite(uint8(A_large),'aftermoving.png')
8
运行程序,效果如图3.3所示,并生成新的图像文件。
图3.3平移后的图像
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)等各种操作。
9
对图像进行不同类型的镜像变换:
I=imread('basketball.png');figure
(1)
subplot(221);imshow(uint8(I));title
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 通信工程应用技术 图像处理 通信工程 应用技术 图像 处理