频域分析和目标定位方法毕业论文(编辑修改稿)内容摘要:

应用背景,对目标跟踪系统设计进行了研究。 全文共分为六章,各章的主要内容如下: 第一章 简要地介绍了视频检测和跟踪技术在国内外现阶段的应用、概念、特点与相关研究背景; 第二章 简要的介绍了软件开发工具 —— MATLAB及其在图 像处理中的应用; 第三章 详细的介绍了视频处理及跟踪方案的算法设计; 第四章 详细的介绍了运动目标跟踪程序设计; 第五章 详细的介绍了运动目标跟踪实验结果及分析; 第六章 为此论文的结论部分,总结了全文的研究工作,并指出此毕业设计算法中存在的问题。 11 第二章 开发工具简介 MATLAB简介及程序设计 [5] MATLAB 是美国 Mathworks 公司开发的新一代科学计算软件; MATLAB 是英文 MATrix LABoratory(矩阵实验室)的缩写; MATLAB 是专门为 科学计算而设计的可视化计算器。 利用这个计算器中的简单命令,能快速完成其他高级语言只有通过复杂编程才能实现的数值和图形显示。 MATLAB 是一种既可交互使用又能解释执行的计算机编程语言。 所谓交互使用,是指用户输入一条语句后立即就能得到该语句的计算结果,而无需像 C 语言那样首先编写源程序,然后对之进行编译、连接,才能最终形成可执行文件。 MATLAB 语言可以用直观的数学表达式来描述问题,从而避开繁琐的底层编程,并把有限的时间和精力更多地放在要解决的问题上,因此可大大提高工作效率。 MATLAB 的编程语法与交互作用是 一致的,因此交互作用时输入的代码能够很方便地转化为可重用的函数或过程。 与其他高级语言(例如 C 语言)相比, MATLAB 语言具有以下 6 个显著特点。 (1) MATLAB 的基本数据类型是双精度的、无须定义的、下标从 1开始的复数矩阵。 其中,行向量是 1*n的矩阵,列向量是 n*1的矩阵。 这就意味着能够在 MATLAB 12 程序中使用高度“向量化”的语句以使整个程序易写易读。 例如要得到 t=1, 2, 3时刻信号 y=sin(t)的值, MATLAB 只需要两条语句 t=[1 2 3]; y=sin(t)就能完成 (省却了循环 )。 这也就是 MATLAB中频繁使用“数组运算”。 再例如要求解代数方程组, MATLAB只需一条指令 x=A\b 就能完成。 该指令虽然简单,但其内涵非常丰富 (可以求解恰定、欠定或超定方程组 )。 (2) MATLAB 有命令行操作(像一个高级计算器)和编程执行两种使用方法,分别适用于简单的草稿式计算和复杂的应用开发。 (3) 绝大多数 MATLAB 函数的输入输出参数个数都是可变的,调用函数时输入输出参数的个数不同,函数完成的功能会有一定的差异。 (4) MATLAB 操作界面友好,编程语言简练,算法高效准确,图形显示和数据可视化功能强大。 (5) MATLAB 的帮助系统非常完善,内容包括各个组件的入门指南、完全用户手册和示例演示等,且有多种获取和使用帮助的简单方法。 例如,即使是在 help 和helpdesk 帮助中显示的代码也可以通过现场菜单执行或直接打开编辑。 另外,MATLAB 帮助内容有 PDF 格式和 Html 格式两套,用户既可以通过阅读相关的 PDF文档来系统地学习 MATLAB,也可以在使用中随时查找需要的信息。 (6) MATLAB 采用开放性结构设计。 这具体体现在以下三个方面:一是除少数内部函数外,所有 MATLAB 主包函数和各种工具箱函数都是可读 可改的 M文件(纯文本格式),这也使得新工具箱的开放和扩展非常方便,例如用户可通过修改已有的 M 文件或添加新的 M 文件来生成用户自定义工具箱;二是支持 DDE、 COM、ActiveX 等技术,可以提供和接受 Active 组件服务;三是对外提供了 MATLAB 的C\C++数学函数库、图形函数库以及相关的 API 函数,这就便于在其他开发环境 (如MS VC++)中使用 MATLAB 的强大功能,或在 MATLAB 中使用由其他语言 (如C\C++或 Fortran)编写的程序以提高执行速度。 MATLAB 脚本和函数 MATLAB 有两种使用方式:一种是直接交互的命令行操作方式;令一种是使用 M 文件的编程工作方式。 MATLAB 语言语法简练,功能强大,同时支持结构化程序设计和面向对象程序设计。 (1) 其中命令行操作方式非常的简单,也是最常用的方式,命令窗操作是MATLAB 最基本和最重要的使用方式之一。 而且, MATLAB 中的绝大多数交互界面或者菜单项都有对应的命令窗函数。 MATLAB 启动后即进入命令操作状态,等待用户在命令窗中输入命令。 用户 13 每在命令窗中输入一行语句并按下 Enter 键后, MATLAB 会立即执行并显示结果。 若要 MATLAB 一次执行多行语句,请在每一行语句输入完成后按 Shift + Enter 键,并在最后一行语句输入完成后按 Enter 键来启动 MATLAB 计算。 对于简单问题或是一次性问题,在命令窗中直接输入命令求解很方便。 若求解复杂问题时,仍然采用这种方法就显得繁琐笨拙。 这时可在编辑调试器中编写 M 脚本文件,即将程序语句一次性写入文件中,并将该文件 (扩展名为“ .M” )保存到位于 MATLAB 搜索路径的目录上,最后在命令窗中用文件名调用它。 另外,也可将脚本文件中的全部或部分语句复制到命令窗中,按 Enter 键直接执行。 (2) MATLAB 程序文件为文本格式的 M 文件,其扩展名是“ .m”。 M 文件有脚本文件和函数文件之分。 脚本文件相当于命令行操作的批处理。 当需要在命令行输入较多语句时,可以把这些相关的语句编辑在一起形成脚本文件,以方便重复使用。 运行脚本文件时只需输入文件名, MATLAB 就会自动按顺序执行文件中的命令。 脚本文件没有输入和输出参量,也没有独立的工作空间,而是使用 MATLAB 的主工作空间,除非用户运行 clear 指令将它们清除。 若 M 文件的第一个程序行包括关键字 function,则该 M 文件就是函数文件。 因此对于脚 本文件,只要在第一行加入语句 function xxx ,就可以把它转化为不带任何输入和输出参量的函数文件 xxx。 每个函数文件定义一个函数。 与脚本文件不同,函数文件通常有输入输出参量(当然也可以没有)。 函数文件运行时有独立的工作空间,称为函数工作空间。 函数文件内部使用的变量仅在该工作空间中起作用。 即当函数执行完成时这些内部变量将随函数工作空间一起被清除。 在函数内部,利用命令 nargin 和 nargout 能截获实际调用该函数时输入输出参数的个数,据此函数可以实现变参调用。 此外,定义函数时在其输入输出参数 列表中分别使用 varargin 和 varargout 参数,还能实现具有任意输入输出参数个数的函数。 对于这种函数,实际调用时它的输入输出参数分别保存在单元数组 varargin 和varargout 中。 注意:在使用 varargin 和 varargout 参数时,若函数还有其它的非可选参数,则 varargin 和 varargout 必须放在参数列表的最后,例如 function[i,j,varargout]=func(x,y,varargin)。 M 文件有 5 个基本组成部分,分别是函数头(仅用于函数文件)、 H1 行、 help帮助文本块、函数体和注释。 注释可以用中文,但是文件名和函数名不能用中文。 函数头的一般格式为: function[输出参量 ]=函数名(输入参量)。 尽管函数名可以与保存函数的文件名不同,但是最好还是保持一致。 14 M 文件既可以调用 MATLAB 的内建函数或其它的 M 文件,也可以递归调用自身,还可以被命令窗或其他 M 文件调用。 首次调用时 M 文件被编译为二进制 P 代码文件,且该 P 代码文件会一直保存在内存里,除非执行了命令 clear xxx 或 clear function。 另外也可以用 pcode 函数将M 文件预先编译为 P 文件(扩展名为 .P) ,这样做有两个好处:一是可以提高函数的运行速度,因为省去了每次调用函数时的编译时间;二是可以保护源代码,因为P 文件不可编辑。 如果执行路径上存在同名的 M 文件和 P 文件,则 MATLAB 调用该文件名时执行的是 P 文件。 实际上 MATLAB 为 4 中文件定义了执行优先级,其优先级从高到低排列依次是 MEX 文件、 MDL 文件( Simulink 模型文件) 、 P 文件和 M 文件。 对于执行路径上的同名文件, MATLAB 就是按照上述的顺序选择究竟要执行哪个文件。 函数的调用和分类 一个函数文件可以包含多个函数,其中文件内第一个出现的函数为主函数,其它函数为子函数,子函数的定义方法与主函数完全相同。 除主函数外,每个子函数的放置顺序不限,但是为了查找方便,建议子函数较多的时候按字母顺序排放。 在MATLAB 中用文件名调用的是主函数,而子函数仅能被 该文件中主函数或者其它子函数调用,对外是不可见的。 (函数文件名不区分大小写,但是函数的名字区分大小写。 ) 函数的工作空间与 MATLAB 主空间相互独立,在函数的主工作空间中不能直接访问其它的函数空间,函数和子函数的工作空间也相互独立。 函数文件调用一个命名对象时, MATLAB 按如下顺序依次搜索以确定该对象:变量名、内建函数、子函数、私有函数、当前目录上的 P 函数或 M 文件等、 MATLAB路径上的 P 函数或 M 文件等。 其中,在搜索路径上按顺序查找命名对象时,只有第一个匹配项被执行;或者在整个搜索路径上都不能最终 确定该对象,就给出错误信息。 下面简单介绍一下与函数有关的几个重要概念。 (1) 私有函数:是指位于子目录 private 下的函数。 私有函数的定义域普通函数完全相同,只是它仅能被 private 父目录中的函数调用,其它目录中的函数或 private父目录中的脚本都不能调用它。 (2) 串演函数 eval 和 feval:能够执行以字符串形式保存的 MATLAB 命令或语句。 这虽然增加了程序编写的灵活性,但是也更容易出错,且包含有 eval 和 feval 15 的函数不能被 MATLAB 自动编译成 C/C++代码。 因此也应该尽量避免使用这两 个串演函数。 (3) 内联函数:用 inline 定义,是 MATLAB 中的对象(对象也称为类型或类),用来快速定义简单的表达式函数。 (4) 函数句柄:用前导符 @或函数 str2func 定义,是 MATLAB 中的对象。 函数句柄存了函数被调用执行时需要的全部信息。 函数句柄通常作为函数的输入参数使用,使用函数句柄有很多优点,如能够提高函数运行时的可靠性、能够调用不可见的子函数或私有函数等。 其实,所有用字符串表示的函数参数都可以用相应的函数句柄代替,此外,可以用函数 functions 查看函数句柄的信息;用函数 unc2str 得到函数句柄指向的函数名。 (5) 函数的函数:是指以函数作为输入参量的函数。 例如语句 z=fzero( ’xxx’,x0)就是调用那个 fzero 函数来寻找 xxx 函数的零点。 函数的函数来在求解优化问题和常微分方程时有广泛的应用。 (6) 全局变量:用 global 定义,作用域是所有工作空间,即在任何函数内部都可访问的变量,这样就来能在各个函数之间传递信息。 每个使用全局变量的函数(包括子函数)都必须用 global 声明该变量。 其实 global 的含义就是:如果若干个函数都把某个变量定义为全局变量,着这些函数就公用这 个变量。 (7) 静态变量:用 persistent 定义,其含义与 C 语言中的 static 类似。 静态变量只在定义它的函数中可见,其它函数不能访问。 (静态变量只能在函数文件中使用。 ) [4] 图像作为人类感知世界的视觉基础,是人类获取信息、表达信息和传递信息的重要手段。 “图”是物体投射光或是发射光的分布,“像”是人的视觉系统对图的接受再大脑中形成的印象或是认识。 图像是两者的结合,图像是客观景物通过某种系统的一种映射。 根据形式或是产生方法,图像可以分为三类:第 一类是可见图像 ( visible images) ,即人眼看见的图像。 这类图像通常是由照相、手工绘制等传统方法得到的模拟图像,一般不能直接被计算机处理,但是经过数字化处理后可以变为数字图像。 第二类称为物理图像,它反映的是物体的电磁波辐射能,包括可见光和不可见光,一般通过某种光电技术获得。 绝大多数的物理图像也是数字图像。 第三类称为数字图像,是由连续函数或是离散函数生成的抽象函数。 在 MATLAB 中所说的图像时指数字图像。 16 图像的数字化 将模拟图像转化为离散数字图像的过程称为图像的数字化,其工作主 要包括两个方面:采样和量化。 所谓采样,就是将一幅连续图像在空间上分割为 M*N 个网格,每个网格中的模拟图像的亮度均值作为该网格的亮度值。 由于结果是一个亮点阵排列,故也叫点阵取样。 而每个网格称为像素或是像元。 M*N 的大小决定数字图像的空间分辨率。 所谓量化,就是将采样后亮度值在某个幅度空间连续分布,转换成单个特定数码的过程。 量化后的像素点整数值叫图像灰度级,灰度层次。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。