基于OpenCV的数字图像处理毕业设计
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一幅静态图像可以用一个二维函数f(x,y)来表示,这里x和y表示二维空间中坐标点的 位置,而 f 则代表图像在点f(x,y)的某种性质的数值。例如常用的图像一般是灰度图, 这时 f 表示灰度值,对应客观图像被观察到的亮度。常见的图像是连续的,即f(x,y)的 值可以是任意实数。为了适应数字计算机的处理,必须对连续图像函数进行空间和幅度 数字化,经过数字化后的图像称为数字图像。数字图像是由有限的元素组成的,每个元 素都有一个特定的位置和 幅值,这些元素称为图像元素或像素。而数字图像处理是指 借用数字计算机处理数字图像。 数字图像一般可以通过以下三种途径获取:
首先介绍了数字图像处理的主要内容,给出了现有图像处理软件的结构和构成。在 熟悉了图像处理的各种算法之后,研究了面向对象的语言 VC++的编程方式及其在编写 图像处理软件和图像处理算法中模块化的编程思想。最后在 Windows 操作系统下,利 用 C++语言在 Visual C++ 2010 的开发环境下,设计和实现了一个数字图像处理系统。
专业设计报告
设计题目:基于 OpenCV 的数字图像处理
姓名:
朱正乔
学院:
自动化
指导教师:
同组人姓名:
学号: 专业: 韩芳芳 温大鹏 刘圣楠
20120662 测控
摘要:
OpenCV(OpenSourceComputerVisionLibrary)是 Intel 公司面向应用程序开发者开 发的计算机视觉库。它轻量级而且高效,由一系列 Baidu Nhomakorabea 函数和少量 C++类构成,同时提供 了 MatLab 等语言的接口,实现了图像处理和计算机视觉方面很多通用算法,因此极大 地方便了图像处理和视频技术的二次开发。OpenCV 具备强大的图像和矩阵运算能力, 有效提高开发效率和程序运行的可靠性。开发者可根据需要在 Windows 和 Linux 两种平 台进行开发。OpenCV 是近年来推出的开源、免费的计算机视觉库,利用其所包含的函 数可以很方便地实现数字图像和视频处理。同时利用面向对象的 VC++编程工具,用 C++ 语言进行程序编写,大大提高了计算机的运行速度。OpenCV 算法库为 VC++编程处理 数字图像提供了很大的方便,其必将成为图像视频处理领域的强有力的工具。
本设计主要介绍了数字图像处理的含义,OpenCV 的特点以及结构,然后以图像打 开与显示、灰度化、二值化和视频采集为例介绍了 OpenCV 在数字图像处理中的典型应 用,以及数字图像处理的各种算法和系统的各部分组成及功能,给出了相应的处理结果, 实现了人机软件界面。
关键词: OpenCV 图像处理 图像灰度化 二值化
(1)直接由二维离散数学函数生成数字图像。 (2)将模拟图像、物理图像等可见图像经过数字化处理转换为数字图像,例如将 一幅照片通过扫描仪输入到计算机中,扫描的过程实质上就是一个数字化过程。 (3)应用光电转换设备可以直接得到数字图像,例如数字相机使用CCD器件记录 影像,然后把CCD器件的电子信号转换成数码信号,并把所得到的数字图像存入存储器 中。 无论采取哪种方式所获取的数字图像在数学上都是一个二维矩阵,因此,数字图像 处理的实质是将原始图像变为目标图像的过程,实质上是由一个矩阵变为另一个矩阵的 数学过程。不管是图像的放缩、图像的几何变换、图像的灰度变换还是离散余弦等正交 变换,本质上都是基于图像矩阵的数学运算。 获取图像信息的目的不仅仅只是为了获 取图像,更为主要的是对图像信息进行加工处理,以满足我们的视觉心理或者应用需求。 因此,从某种意义上讲,对图像信息进行处理比图像获取更为重要。图像处理一般是指 数字图像处理,所谓数字图像处理就是指对一个物体的数学表示,即对一个二维矩阵施 加一系列的操作,以得到所期望的结果。虽然某些处理也可以用光学方法或模拟技术实 现,但它们远不及数字图像处理那样灵活和方便,因而数字图像处理成为图像处理的主 要方面。 既然图像处理如此重要,那么开发一个好的数字图像处理软件也是十分必要的。 MATLAB软件虽然能够对数字图像进行方便的处理,并且其制作的界面也比较友好,但 是由于其过于庞大,移植性和速度方面也很难与VC++相比。另外,由于商业化的VC++ 数字图像处理软件价格比较昂贵,而且不便于二次开发,所以自己利用VC++集成开发 环境开发一套简单的数字图像处理软件系统,本系统界面友好,不但能对现代光学测量 中散斑和条纹图像进行良好的处理,而且还能够满足一些简单的数字图像处理的需求, 为以后的学习和研究奠定了基础。
二、 设计原理
2.1 数字图像处理简介 数字图像处理(DigitalImageProcessing)是将图像本身的信号转换成数字信号且运 用计算机对其进行处理,最早可以追溯到20世纪的20年代。它已经成为一门具有广阔前
1
景的学科,目前已经广泛应用于科学研究、生物医学、航空航天、机器人视觉、工业检 测等领域。目前数字图像处理有以下几个研究的方面:一是图像数字化,二是图像编码, 三是图像增强,四是图像恢复,五是图像分割,六是图像分析,七是图像重建。
(2)数字图像占用的频带较宽 数字图像信息占用的频带要比语音信息大几个数量级。如语音带宽约为 4KHz,而 电视图像的带宽却为 5.6MHz 左右。所以在成像、传输、存储、处理、显示等各个环 节的实现上,技术难度较大,成本亦高,这就对频带压缩技术提出了更高的要求。 (3)数字图像像素间相关性大 数字图像中各个像素的灰度并不是独立的,其间的相关性很大,就电视画面而言, 同一帧各相邻像素间的相关系数可达 0.9 以上,而相邻两帧之间的相关性比帧内相关性 一般还要大些, 因此图像信息具有很大的可压缩性。如果在图像通信领域中,能够充 分利用数字图像的这一特性,将大大提高图像处理和传输的效率。 (4)再现性好、适用面宽 由于数字图像在计算机中采用二维矩阵表示和存储,这样计算机容易处理。因此, 在传送和复制图像时,只在计算机内部进行处理,这样数据就不会丢失或遭破坏,保持 了完好的再现性。这一点在模拟图像处理中,几乎是很难实现的。另外,对于数字图像 处理来说,图像可以来自多种信息源,它们可以是可见光图像,也可以是不可见的多光 普图像;可以是电子显微镜图像,也可以是遥感图像甚至天文望远镜图像。只要对这些 来自不同信息源的图像数字化后,都可以采用计算机来处理。 (5)图像信息的视觉效果主观性大、识别困难 经过处理后的图像一般是给人观察和评价的,因此受人的主观因素影响较大,比如 说兴趣、视觉、情绪等。通常情况下,图像的识别比较困难。如果要求取图像上某一区 域的面积,利用计算机可以很方便的达到目的,并且精确度很高;但是要计算机识别某 一区域是什么东西,则十分困难。 (6)图像处理技术综合性强 数字图像处理涉及的技术领域相当广泛,如计算机技术、电子技术、通信技术等。 当然,数学、物理学等领域更是数字图像处理的基础。并且在数字图像处理中涉及到硬 件、软件、接口、网络等多项技术。总而言之,数字图像处理技术的发展涉及越来越多 的基础理论知识,它是一项涉及多学科的综合性技术。 数字图像处理的数据量有时非常大,而且有时又对处理的实时性要求很高,所以对 于所有图像处理的算法都用普通的编程语言进行编写,虽然理论上能够实现,但是效率 比较低下,而且难度也相当大。基于以上的考虑,在数字图像处理中引进OpenCV,以 实现图像处理和计算机视觉方面的通用算法,可以用于开发实时的图像处理、计算机视 觉和模式识别等,而且其中大部分函数都进行了汇编优化。可以说,基于OpenCV开发 的图像处理算法运行起来具有更高的效率。
一、 设计的任务和目的 1.1 设计的目的 本次设计的目的是让初学者了解有关图像处理的相关知识,并对该系统进行简单的
图像处理。 1.2 设计的任务 本次设计主要研究如何通过 VC++平台利用 OpenCV 函数库,开发一个针对学习和
研究的数字图像处理系统,为初学者提供一个图形用户界面交互平台,供大家学习并研 究数字图像处理的技术方法。
2.2 数字图像处理的特点 (1)信息量大
2
由于数字图像在计算机中采用二维矩阵表示和存储,所以其信息量很大。比如对一 幅由 512×512 个像素组成的电视图像,其灰度级用8比特的二进制数来表示,其信息量 为 512×512=8×256KB对于这样大信息量的图像,虽然我们可以获取较多的信息,但是 如果要对此图像进行处理,我们必须要用具有相当大内存和存储器的计算机。
首先介绍了数字图像处理的主要内容,给出了现有图像处理软件的结构和构成。在 熟悉了图像处理的各种算法之后,研究了面向对象的语言 VC++的编程方式及其在编写 图像处理软件和图像处理算法中模块化的编程思想。最后在 Windows 操作系统下,利 用 C++语言在 Visual C++ 2010 的开发环境下,设计和实现了一个数字图像处理系统。
专业设计报告
设计题目:基于 OpenCV 的数字图像处理
姓名:
朱正乔
学院:
自动化
指导教师:
同组人姓名:
学号: 专业: 韩芳芳 温大鹏 刘圣楠
20120662 测控
摘要:
OpenCV(OpenSourceComputerVisionLibrary)是 Intel 公司面向应用程序开发者开 发的计算机视觉库。它轻量级而且高效,由一系列 Baidu Nhomakorabea 函数和少量 C++类构成,同时提供 了 MatLab 等语言的接口,实现了图像处理和计算机视觉方面很多通用算法,因此极大 地方便了图像处理和视频技术的二次开发。OpenCV 具备强大的图像和矩阵运算能力, 有效提高开发效率和程序运行的可靠性。开发者可根据需要在 Windows 和 Linux 两种平 台进行开发。OpenCV 是近年来推出的开源、免费的计算机视觉库,利用其所包含的函 数可以很方便地实现数字图像和视频处理。同时利用面向对象的 VC++编程工具,用 C++ 语言进行程序编写,大大提高了计算机的运行速度。OpenCV 算法库为 VC++编程处理 数字图像提供了很大的方便,其必将成为图像视频处理领域的强有力的工具。
本设计主要介绍了数字图像处理的含义,OpenCV 的特点以及结构,然后以图像打 开与显示、灰度化、二值化和视频采集为例介绍了 OpenCV 在数字图像处理中的典型应 用,以及数字图像处理的各种算法和系统的各部分组成及功能,给出了相应的处理结果, 实现了人机软件界面。
关键词: OpenCV 图像处理 图像灰度化 二值化
(1)直接由二维离散数学函数生成数字图像。 (2)将模拟图像、物理图像等可见图像经过数字化处理转换为数字图像,例如将 一幅照片通过扫描仪输入到计算机中,扫描的过程实质上就是一个数字化过程。 (3)应用光电转换设备可以直接得到数字图像,例如数字相机使用CCD器件记录 影像,然后把CCD器件的电子信号转换成数码信号,并把所得到的数字图像存入存储器 中。 无论采取哪种方式所获取的数字图像在数学上都是一个二维矩阵,因此,数字图像 处理的实质是将原始图像变为目标图像的过程,实质上是由一个矩阵变为另一个矩阵的 数学过程。不管是图像的放缩、图像的几何变换、图像的灰度变换还是离散余弦等正交 变换,本质上都是基于图像矩阵的数学运算。 获取图像信息的目的不仅仅只是为了获 取图像,更为主要的是对图像信息进行加工处理,以满足我们的视觉心理或者应用需求。 因此,从某种意义上讲,对图像信息进行处理比图像获取更为重要。图像处理一般是指 数字图像处理,所谓数字图像处理就是指对一个物体的数学表示,即对一个二维矩阵施 加一系列的操作,以得到所期望的结果。虽然某些处理也可以用光学方法或模拟技术实 现,但它们远不及数字图像处理那样灵活和方便,因而数字图像处理成为图像处理的主 要方面。 既然图像处理如此重要,那么开发一个好的数字图像处理软件也是十分必要的。 MATLAB软件虽然能够对数字图像进行方便的处理,并且其制作的界面也比较友好,但 是由于其过于庞大,移植性和速度方面也很难与VC++相比。另外,由于商业化的VC++ 数字图像处理软件价格比较昂贵,而且不便于二次开发,所以自己利用VC++集成开发 环境开发一套简单的数字图像处理软件系统,本系统界面友好,不但能对现代光学测量 中散斑和条纹图像进行良好的处理,而且还能够满足一些简单的数字图像处理的需求, 为以后的学习和研究奠定了基础。
二、 设计原理
2.1 数字图像处理简介 数字图像处理(DigitalImageProcessing)是将图像本身的信号转换成数字信号且运 用计算机对其进行处理,最早可以追溯到20世纪的20年代。它已经成为一门具有广阔前
1
景的学科,目前已经广泛应用于科学研究、生物医学、航空航天、机器人视觉、工业检 测等领域。目前数字图像处理有以下几个研究的方面:一是图像数字化,二是图像编码, 三是图像增强,四是图像恢复,五是图像分割,六是图像分析,七是图像重建。
(2)数字图像占用的频带较宽 数字图像信息占用的频带要比语音信息大几个数量级。如语音带宽约为 4KHz,而 电视图像的带宽却为 5.6MHz 左右。所以在成像、传输、存储、处理、显示等各个环 节的实现上,技术难度较大,成本亦高,这就对频带压缩技术提出了更高的要求。 (3)数字图像像素间相关性大 数字图像中各个像素的灰度并不是独立的,其间的相关性很大,就电视画面而言, 同一帧各相邻像素间的相关系数可达 0.9 以上,而相邻两帧之间的相关性比帧内相关性 一般还要大些, 因此图像信息具有很大的可压缩性。如果在图像通信领域中,能够充 分利用数字图像的这一特性,将大大提高图像处理和传输的效率。 (4)再现性好、适用面宽 由于数字图像在计算机中采用二维矩阵表示和存储,这样计算机容易处理。因此, 在传送和复制图像时,只在计算机内部进行处理,这样数据就不会丢失或遭破坏,保持 了完好的再现性。这一点在模拟图像处理中,几乎是很难实现的。另外,对于数字图像 处理来说,图像可以来自多种信息源,它们可以是可见光图像,也可以是不可见的多光 普图像;可以是电子显微镜图像,也可以是遥感图像甚至天文望远镜图像。只要对这些 来自不同信息源的图像数字化后,都可以采用计算机来处理。 (5)图像信息的视觉效果主观性大、识别困难 经过处理后的图像一般是给人观察和评价的,因此受人的主观因素影响较大,比如 说兴趣、视觉、情绪等。通常情况下,图像的识别比较困难。如果要求取图像上某一区 域的面积,利用计算机可以很方便的达到目的,并且精确度很高;但是要计算机识别某 一区域是什么东西,则十分困难。 (6)图像处理技术综合性强 数字图像处理涉及的技术领域相当广泛,如计算机技术、电子技术、通信技术等。 当然,数学、物理学等领域更是数字图像处理的基础。并且在数字图像处理中涉及到硬 件、软件、接口、网络等多项技术。总而言之,数字图像处理技术的发展涉及越来越多 的基础理论知识,它是一项涉及多学科的综合性技术。 数字图像处理的数据量有时非常大,而且有时又对处理的实时性要求很高,所以对 于所有图像处理的算法都用普通的编程语言进行编写,虽然理论上能够实现,但是效率 比较低下,而且难度也相当大。基于以上的考虑,在数字图像处理中引进OpenCV,以 实现图像处理和计算机视觉方面的通用算法,可以用于开发实时的图像处理、计算机视 觉和模式识别等,而且其中大部分函数都进行了汇编优化。可以说,基于OpenCV开发 的图像处理算法运行起来具有更高的效率。
一、 设计的任务和目的 1.1 设计的目的 本次设计的目的是让初学者了解有关图像处理的相关知识,并对该系统进行简单的
图像处理。 1.2 设计的任务 本次设计主要研究如何通过 VC++平台利用 OpenCV 函数库,开发一个针对学习和
研究的数字图像处理系统,为初学者提供一个图形用户界面交互平台,供大家学习并研 究数字图像处理的技术方法。
2.2 数字图像处理的特点 (1)信息量大
2
由于数字图像在计算机中采用二维矩阵表示和存储,所以其信息量很大。比如对一 幅由 512×512 个像素组成的电视图像,其灰度级用8比特的二进制数来表示,其信息量 为 512×512=8×256KB对于这样大信息量的图像,虽然我们可以获取较多的信息,但是 如果要对此图像进行处理,我们必须要用具有相当大内存和存储器的计算机。