基于MATLAB的图像复原
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于MATLAB的图像复原
摘要
随着信息技术的发展,数字图像像已经充斥着人们身边的任意一个角落。由于图像的传送、转换,或者其他原因,可能会造成图像的降质、模糊、变形、质量下降、失真或者其他情况的图像的受损。本设计就针对“图像受损”的问题,在MATLAB环境中实现了利用几何失真校正方法来恢复被损坏的图像。几何失真校正要处理的则是在处理的过程,由于成像系统的非线性,成像后的图像与原图像相比,会产生比例失调,甚至扭曲的图像。
图像复原从理论到实际的操作的实现,不仅能改善图片的视觉效果和保真程度,还有利于后续的图片处理,这对医疗摄像、文物复原、视频监控等领域都具有很重要的意义。
关键字:图像复原;MATLAB;几何失真校正
目录
摘要 (1)
1 MATLAB 6.x 信号处理 (1)
2 图像复原的方法及其应用 (13)
2.1 图像复原的方法 (13)
2.2 图像复原的应用 (14)
3 几何失真校正实现 (15)
3.1 空间变换 (15)
3.1.1 已知()y x r,和()y x s,条件下的几何校正 (16)
3.1.2 ()y x r,和()y x s,未知条件下的几何失真 (16)
3.2 灰度插值 (17)
3.3 结果分析 (19)
参考文献 (20)
附录 (21)
1 MATLAB 6.x信号处理
(1)对MATLAB 6 进行了简介,包括程序设计环境、基本操作、绘图功能、M文件以及MATLAB 6 的稀疏矩阵这五个部分。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)
创建一个大小为n
m⨯的稀疏矩阵S,其非零元素来自矩阵B中的元素且按对角线排列。参数d指定矩阵B中用于生成稀疏矩阵S的对角线位置。矩阵的主对角线可以认为是第0条对角线,每向右移动一条对角线编号加1,向左下移动一条对角线编号减1,也就是说B中j列的元素填充矢量d中第j个元素所指定的对角线。用外部文件创建的文本文件,如果其中的数据按3个列排列,可以将这个文本文件载入工作空间,用于创建一个稀疏矩阵。MATLAB提供了专门针对稀疏矩阵的函数。处理稀疏矩阵时,计算的复杂程度与稀疏矩阵中的非零元素的个数成正比,计算的复杂程度也与矩阵的行列大小有关,稀疏矩阵的乘法、乘方,包含一定次数的线性方程等,都是比较复杂的运算。稀疏矩阵的行交换与列交换可以用以下两种方法表示:
(1)对于交换矩阵P,对稀疏矩阵S的行交换可表示为S
P*,列交换可以表示为P
S*。
(2)对于一个交换矢量p,p为一般矢量,包含1~n个自然数的一个排列。对稀疏矩阵进行行交换,可以表示为S(p,:)。S(p,:)为列交换形式。对于矩阵S的第i列进行行交换的形式为S(p,i)。
稀疏矩阵和一般矩阵一样,同样可以进行LU分解、Cholesky分解、QR