基于MATLAB的图像复原汇编.docx
- 文档编号:498616
- 上传时间:2022-10-10
- 格式:DOCX
- 页数:24
- 大小:797.74KB
基于MATLAB的图像复原汇编.docx
《基于MATLAB的图像复原汇编.docx》由会员分享,可在线阅读,更多相关《基于MATLAB的图像复原汇编.docx(24页珍藏版)》请在冰豆网上搜索。
基于MATLAB的图像复原汇编
基于MATLAB的图像复原
摘要
随着信息技术的发展,数字图像像已经充斥着人们身边的任意一个角落。
由于图像的传送、转换,或者其他原因,可能会造成图像的降质、模糊、变形、质量下降、失真或者其他情况的图像的受损。
本设计就针对“图像受损”的问题,在MATLAB环境中实现了利用几何失真校正方法来恢复被损坏的图像。
几何失真校正要处理的则是在处理的过程,由于成像系统的非线性,成像后的图像与原图像相比,会产生比例失调,甚至扭曲的图像。
图像复原从理论到实际的操作的实现,不仅能改善图片的视觉效果和保真程度,还有利于后续的图片处理,这对医疗摄像、文物复原、视频监控等领域都具有很重要的意义。
关键字:
图像复原;MATLAB;几何失真校正
目录
摘要1
1MATLAB6.x信号处理1
2图像复原的方法及其应用13
2.1图像复原的方法13
2.2图像复原的应用14
3几何失真校正实现15
3.1空间变换15
3.1.1已知
和
条件下的几何校正16
3.1.2
和
未知条件下的几何失真16
3.2灰度插值18
3.3结果分析19
参考文献20
附录21
1MATLAB6.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”,二者的区别在于函数文件可以接受输入参数,并可返回输出参数,而底稿文件不具备参数传递的功能;在函数文件中定义及使用的变量大都是局部变量,只在本函数的工作区内有效,一旦退出该函数,即为无效变量,而底稿文件中定义或使用的变量都是全局变量,在退出文件后仍为有效变量。
稀疏矩阵是一种特殊类型的矩阵,即矩阵中包括较多的零元素。
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)
创建一个大小为
的稀疏矩阵S,其非零元素来自矩阵B中的元素且按对角线排列。
参数d指定矩阵B中用于生成稀疏矩阵S的对角线位置。
矩阵的主对角线可以认为是第0条对角线,每向右移动一条对角线编号加1,向左下移动一条对角线编号减1,也就是说B中j列的元素填充矢量d中第j个元素所指定的对角线。
用外部文件创建的文本文件,如果其中的数据按3个列排列,可以将这个文本文件载入工作空间,用于创建一个稀疏矩阵。
MATLAB提供了专门针对稀疏矩阵的函数。
处理稀疏矩阵时,计算的复杂程度与稀疏矩阵中的非零元素的个数成正比,计算的复杂程度也与矩阵的行列大小有关,稀疏矩阵的乘法、乘方,包含一定次数的线性方程等,都是比较复杂的运算。
稀疏矩阵的行交换与列交换可以用以下两种方法表示:
(1)对于交换矩阵P,对稀疏矩阵S的行交换可表示为
,列交换可以表示为
。
(2)对于一个交换矢量p,p为一般矢量,包含1~n个自然数的一个排列。
对稀疏矩阵进行行交换,可以表示为S(p,:
)。
S(p,:
)为列交换形式。
对于矩阵S的第i列进行行交换的形式为S(p,i)。
稀疏矩阵和一般矩阵一样,同样可以进行LU分解、Cholesky分解、QR分解以及一些不完全分解。
与一般矩阵的特征值求解函数eig不同的是,计算稀疏矩阵的特征值采用函数eigs。
一般矩阵的奇异值分解用函数svd,对稀疏矩阵额的奇异值分解使用函数svds。
第二章对离散信号进行了详尽的阐述,并就其MATLAB的实现作了总结。
典型的离散信号有单位抽样序列、单位阶跃系列、正弦序列、复正弦序列、指数序列、随机序列6种。
单位抽样序列的表达式如下:
(1-1)
又被称为Kronecker函数,该信号在离散信号与离散系统的分析与综合中有着重要的作用,在MATLAB中可以利用zeros函数来实现。
如要产生N点的单位抽样序列,可通过下列语句实现:
单位阶跃序列的表达式如下:
(1-2)
MATLAB中的ones函数可以容易实现N点单位阶跃序列:
。
正弦序列的表达式如下:
(1-3)
其MATLAB的实现如下所示:
复正弦序列的表达式如下:
(1-4)
其MATLAB的实现如下所示:
指数序列的表达式如下所示:
(1-5)
其MATLAB的实现如下所示:
随机序列在MATLAB中是可以很容易实现的,有以下两类:
(1)rand(1,N)产生[0,1]上均匀分布的随机序列;
(2)randn(1,N)产生均值为0,方差为1的高斯随机序列,也就是白噪声序列,其他的分布的随机数可以通过上述随机数的变换而产生的。
对离散信号所作的基本运算分别是移位、相加、相乘等等,其MATLAB的实现如下所示:
(1)信号延迟:
给定离散信号
,若信号
定义为
,那么,
是信号
在时间轴上右移k个抽样周期得到的新序列。
(2)信号相加:
。
值得注意的是,当序列
和
的长度不等或位置不对应时,首先应使两者位置对齐,然后通过zeros函数左右补零使其长度相等后再相加。
(3)信号相乘:
,这是样本与样本之间的点乘运算,在MATLAB中可采用
来实现,但两序列应做如相加运算同样的操作。
序列
和
同上,相乘后得到序列
。
(4)信号标量乘:
,其MATLAB很容易实现:
。
(5)信号翻转:
,在MATLAB中可以直接用fliplr函数实现此操作。
(6)信号和:
对于N点信号
,其和的定义为:
,采用MATLAB实现所示:
。
(7)信号积:
对于N点信号
,其积的定义为:
,MATLAB实现如下所示:
。
(8)信号能量:
有限长信号的能量定义为:
,其MATLAB实现有两种方法:
或者
。
对于[0,1]上均匀分布的随机噪声可以直接利用MATLAB中的rand函数实现,均值为0,方差为1的高斯随机噪声即白噪声有函数randn产生。
对于其他分布(如瑞利分布、对数正态分布等)的随机噪声可以通过上述随机数的变换而产生,这些都是噪声的产生方法。
MATLAB中含有丰富的函数用以生产无线电技术以及通讯等领域广泛采用的信号波形,如方波、三角波和线性调频信号等。
其中MATLAB内部提供的产生信号波形的函数有五种,分别是:
SAWTOOTH函数、SQUARE函数、SINC函数、DIRIC函数、CHIRP函数。
第三章对离散系统的基本概念作了描述,然后对离散系统的时域与频域表示方法以及相应的MATLAB实现进行了具体的阐述,最后介绍了有关离散系统变换的知识。
离散系统的定义是:
一个离散系统,可以抽象为一种变换,或是一种映射,即把输入序列
变换为输出序列
:
,式中,T代表变换。
这样,一个离散系统既可以是一个硬件装置,也可以是一个数字表达式。
离散系统有四个重要定义,分别是:
线性、移不变性、因果性、稳定性。
线性的定义是:
设一个离散系统对
的响应是
,对
的响应是
,即
(1-6)
若该系统对
的响应
,即
(1-7)
那么,该系统是线性的。
设一个离散系统对
的响应是
,即
。
若满足
,则该系统是移不变的,同时具有线性和移不变的离散系统成为线性移不变系统,简称为LSI系统。
一个LSI系统,如果它在任意时刻的输出只决定于现在时刻和过去的输入,而与将来的输入无关,那么,该系统是因果系统。
稳定性的定义是一个信号
,如果存在一个实数R,使得对所有的n都满足
,那么,称
是有界的。
对一个LSI系统,若输入
是有界的,输出
也有界,那么该系统是稳定的。
稳定性是一个系统能否正常工作的先决条件。
对于同一个离散系统,可以从时域和频域两个方面来进行描述,也可以对其进行内部描述。
另外,频域描述又可以分为频率响应、转移函数、零极点增益与二次分式几种不同的表示形式。
一个LSI系统可以用一个常系数线性差分方程来描述:
(1-8)
式中
,M是方程的系数。
给定输入信号
以及系统的初始条件,可求出该差分方程的解
,从而得到系统的输出。
LSI系统的频域表示分为频率响应、转移函数、零极点增益、二次分式四部分。
频率响应定义是:
任意LSI系统都可由单位抽样响应
表示,相应的在频域中可以用频率响应
来表示,它是
的离散傅里叶变换。
若定义
,则LSI系统的频率响应变为:
,该式为单位抽样
的Z变换,
是系统的转移函数。
将转移函数的分子、分母分别作因式分解,便可得出LSI系统的零极点增益表示形式:
(1-9)
式中,
称为系统的增益因子。
使分母多项式等于零的z值(即
),称为系统的极点,同理,使分子多项式等于零的z值(即
),称为系统的极点。
通过系统的零极点增益表示形式,很容易判断一个LSI系统的稳定性,也就是说,若所有的极点都位于单位圆内,则系统是稳定的。
离散系统的内部描述是用状态方程和输出方程来表示的。
离散系统的MATLAB实现是用函数来实现的,对这些函数进行简要介绍。
能产生单位抽样响应的函数有:
zeros函数、filter函数、impz函数。
零极点增益是用roots函数来实现的。
离散系统变换函数包括:
tf2zp函数、tf2ss函数、zp2tf函数、zp2sos函数、zp2ss函数、sos2tfz函数、sos2zp函数、sos2ss函数、ss2tf函数、ss2zp函数、ss2sos函数
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 MATLAB 图像 复原 汇编
![提示](https://static.bdocx.com/images/bang_tan.gif)