您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 信息化管理 > 基于MATLAB的图像复原
基于MATLAB的图像复原摘要随着信息技术的发展,数字图像像已经充斥着人们身边的任意一个角落。由于图像的传送、转换,或者其他原因,可能会造成图像的降质、模糊、变形、质量下降、失真或者其他情况的图像的受损。本设计就针对“图像受损”的问题,在MATLAB环境中实现了利用几何失真校正方法来恢复被损坏的图像。几何失真校正要处理的则是在处理的过程,由于成像系统的非线性,成像后的图像与原图像相比,会产生比例失调,甚至扭曲的图像。图像复原从理论到实际的操作的实现,不仅能改善图片的视觉效果和保真程度,还有利于后续的图片处理,这对医疗摄像、文物复原、视频监控等领域都具有很重要的意义。关键字:图像复原;MATLAB;几何失真校正目录摘要.............................................................................................................................11MATLAB6.x信号处理.........................................................................................12图像复原的方法及其应用...................................................................................132.1图像复原的方法.........................................................................................132.2图像复原的应用.........................................................................................143几何失真校正实现...............................................................................................153.1空间变换.....................................................................................................153.1.1已知yxr,和yxs,条件下的几何校正........................................163.1.2yxr,和yxs,未知条件下的几何失真........................................163.2灰度插值.....................................................................................................173.3结果分析.....................................................................................................19参考文献...................................................................................................................20附录...........................................................................................................................2111MATLAB6.x信号处理(1)对MATLAB6进行了简介,包括程序设计环境、基本操作、绘图功能、M文件以及MATLAB6的稀疏矩阵这五个部分。MATLAB的工作环境有命令窗口、启动平台、工作空间、命令历史记录与当前路径窗口这四部分。M文件的编辑调试环境有四个部分的设置,分别是:Editor/Debugger的参数设置,字体与颜色的设置,显示方式的设置,键盘与缩进的设置。MATLAB采用路径搜索的方法来查找文件系统的M文件,常用的命令文件组在MATLAB文件夹中,其他M文件组在各种工具箱中。基本操作主要是对一些常用的基本常识、矩阵运算及分解、数据分析与统计这三方面进行阐述。MATLAB的基本操作对象时矩阵,所以对于矩阵的输入、复数与复数矩阵、固定变量、获取工作空间信息、函数、帮助命令进行了具体的描述。矩阵运算是MATLAB的基础,所有参与运算的数都被看做为矩阵。MATLAB中共有四大矩阵分解函数:三角分解、正交分解、奇异值分解以及特征值分解。数据分析与统计包括面向列的数据分析、数据预处理、协方差矩阵与相关系数矩阵、曲线拟合这四部分。MATLAB中含有丰富的图形绘制寒素,包括二维图形绘制、三维图像绘制以及通用绘图工具函数等,同时还包括一些专业绘图函数,因此其具有很强大的绘图功能。简单的二维曲线可以用函数plot来绘制,而简单的三维曲线图则用plot3来绘制。在绘制图形时,MATLAB自动选择坐标轴表示的数值范围,并用一定的数据间隔标记做标注的数据,当然自己也可以指定坐标轴的范围与数据间隔。专业的绘图函数有绘梯度图制条形图、饼图、三维饼图、箭头图、星点图、阶梯图以及等高线。M文件时用户自己通过文本编辑器或字处理器生成的,且其之间可以相互调用,用户可以根据自己的需要,自我编写M文件。M文件从功能上可以分为底稿文件与函数文件两类,其中底稿文件是由一系列MATLAB语句组成的,而函数文件的第一行必须包含关键字“function”,二者的区别在于函数文件可以接受输入参数,并可返回输出参数,而底稿文件不具备参数传递的功能;在函数文件中定义及使用的变量大都是局部变量,只在本函数的工作区内有效,一旦退出该函数,即为无效变量,而底稿文件中定义或使用的变量都是全局变量,在退出文件后仍为有效变量。稀疏矩阵是一种特殊类型的矩阵,2即矩阵中包括较多的零元素。MATLAB对稀疏矩阵的存储有两种模式:完全存储和稀疏存储。函数full和sparse是一对用来对矩阵存储模式进行转换的内部矩阵。函数sparse可以用一组非零元素直接创建一个稀疏矩阵,其格式如下:S=Sparse(i,j,s,m,n)其中i和j都为数组,分别代表矩阵中非零元素的行号和列号;s是一个全部元素为非零的数组,元素在矩阵中排列的位置为(i,j);m为输出矩阵的稀疏矩阵的行数,n为输出的稀疏矩阵的列数。函数sparse还有一种格式为:S=Sparse(i,j,s,m,n,nzmax)其中,参数i、j、s、m、n的说明与上面的格式相同,参数nzmax用来设置矩阵中非零元素的最大数目。Full函数可以讲稀疏矩阵变为一般矩阵。将一个矩阵的对角线元素保存在一个稀疏矩阵中,可以使用函数spdiags实现,其语法格式为:S=spdiags(B,d,m,n)创建一个大小为nm的稀疏矩阵S,其非零元素来自矩阵B中的元素且按对角线排列。参数d指定矩阵B中用于生成稀疏矩阵S的对角线位置。矩阵的主对角线可以认为是第0条对角线,每向右移动一条对角线编号加1,向左下移动一条对角线编号减1,也就是说B中j列的元素填充矢量d中第j个元素所指定的对角线。用外部文件创建的文本文件,如果其中的数据按3个列排列,可以将这个文本文件载入工作空间,用于创建一个稀疏矩阵。MATLAB提供了专门针对稀疏矩阵的函数。处理稀疏矩阵时,计算的复杂程度与稀疏矩阵中的非零元素的个数成正比,计算的复杂程度也与矩阵的行列大小有关,稀疏矩阵的乘法、乘方,包含一定次数的线性方程等,都是比较复杂的运算。稀疏矩阵的行交换与列交换可以用以下两种方法表示:(1)对于交换矩阵P,对稀疏矩阵S的行交换可表示为SP,列交换可以表示为PS。(2)对于一个交换矢量p,p为一般矢量,包含1~n个自然数的一个排列。对稀疏矩阵进行行交换,可以表示为S(p,:)。S(p,:)为列交换形式。对于矩阵S的第i列进行行交换的形式为S(p,i)。稀疏矩阵和一般矩阵一样,同样可以进行LU分解、Cholesky分解、QR3分解以及一些不完全分解。与一般矩阵的特征值求解函数eig不同的是,计算稀疏矩阵的特征值采用函数eigs。一般矩阵的奇异值分解用函数svd,对稀疏矩阵额的奇异值分解使用函数svds。第二章对离散信号进行了详尽的阐述,并就其MATLAB的实现作了总结。典型的离散信号有单位抽样序列、单位阶跃系列、正弦序列、复正弦序列、指数序列、随机序列6种。单位抽样序列的表达式如下:0001nnn(1-1)又被称为Kronecker函数,该信号在离散信号与离散系统的分析与综合中有着重要的作用,在MATLAB中可以利用zeros函数来实现。如要产生N点的单位抽样序列,可通过下列语句实现:;11;,1xNzerosx单位阶跃序列的表达式如下:0001nnnu(1-2)MATLAB中的ones函数可以容易实现N点单位阶跃序列:Nonesx,1。正弦序列的表达式如下:sfnTAnx2sin(1-3)其MATLAB的实现如下所示:faiTnfpiAxNns2sin;1:0复正弦序列的表达式如下:mjenx(1-4)其MATLAB的实现如下所示:nwjxNnexp;1:0指数序列的表达式如下所示:nanx(1-5)4其MATLAB的实现如下所示:;.;:1naxNn随机序列在MATLAB中是可以很容易实现的,有以下两类:(1)rand(1,N)产生[0,1]上均匀分布的随机序列;(2)randn(1,N)产生均值为0,方差为1的高斯随机序列,也就是白噪声序列,其他的分布的随机数可以通过上述随机数的变换而产生的。对离散信号所作的基本运算分别是移位、相加、相乘等等,其MATLAB的实现如下所示:(1)信号延迟:给定离散信号nx,若信号ny定义为knxny,那么,ny是信号nx在时间轴上右移k个抽样周期得到的新序列。(2)信号相加:nxnxnx21。值得注意的是,当序列nx1和nx2的长度不等或位置不对应时,首先应使两者位置对齐,然后通过zeros函数左右补零使其长度相等后再相加。(3)信号相乘:nxnxnx21,这是样本与样本之间的点乘运算,在MATLAB中可采用.来实现,但两序列应做如相加运算同样的操作。序列nx1和nx2同上,相乘后得到序列nx。(4)信号标量乘:ncxny,其MATLAB很容易实现:xcy。(5)信号翻转:nxny,在MATLAB中可以直接用fliplr函数实现此操作。(6)信号和:对于N点信号nx,其和的定义为:Nnnxny1,采用MATLAB实现所示:xsumy。(7)信号积:对于N点信号nx,其积的定义为:Nnnxny1,MATLAB实现如下所示:xprody。(8)信号能量:有限长信号的能量定义为:NnNnXnxnxnxE112,其MATLAB实现有两种方法:;.xconjxsumEx或者;2.xabssumEx。5对于[0,1]上均匀分布的随机噪声可以直接利用MATLAB中的rand函数实现,均值为0,方差为1的高斯随机噪声即白噪声有函数randn产生。对于其他分布(如瑞利分布、对数正态分布等)的随机噪声可以通过上述随机数的变换而产生,这些都是噪声的产生方法。MATL
本文标题:基于MATLAB的图像复原
链接地址:https://www.777doc.com/doc-2534404 .html