一种嵌入式图像处理系统的算法设计毕业论文
2020-04-02 11:22:46
摘 要
本课题在分析了目前国内外已有的基于嵌入式设备的图像处理算法,以在NVIDIA Jetson TK1设计出UI界面对实际拍摄到的物体进行尺寸测量为目标,设计出一种智能相机的框架。该系统以Qt creator为集成开发环境(IDE),OpenCV为第三方视觉库设计出相机拍摄的UI界面,然后再通过相关的图像处理算法来实现实际中物体尺寸的测量。
论文首先介绍了机器视觉的发展状况,提出了基于嵌入式平台的系统设计方案,并配置硬件的开发环境,其中详细介绍了开发板型号和刷机步骤。
其次介绍在软件开发的过程中所使用到的相关软件和视觉库,设计出UI界面,实现图片的拍摄,显示等操作。
然后是介绍数字图像处理的相关算法,对所拍摄到的图片的进行处理,包括相机矫正,中值滤波,直方图均衡等。
最后,通过对拍摄到的已知尺寸的物体进行像素标定,得到对应关系。之后对拍摄的实际物体进行尺寸检测,然后进行误差分析。
本系统通过实际对多种物体进行尺寸测量,进行误差分析后发现可以达到所要求的检测精度,最终实现具有便携性、实时处理显示的创新性的基于嵌入式平台的图像处理系统,来实现实际物体尺寸的测量。
关键词:嵌入式系统;QT creator;图像处理;尺寸测量;OpenCV
Abstract
This topic analyzes the existing image processing algorithms based on embedded devices both at home and abroad, and aims to design a smart camera framework by designing a UI interface on the NVIDIA Jetson TK1 to measure the size of objects actually shot. The system uses Qt creator as an IDE. OpenCV designs a UI for camera shooting for a third-party vision library, and then uses an image processing algorithm to measure the actual object size.
The dissertation firstly introduces the development of machine vision, puts forward the system design scheme based on embedded platform, and configures the hardware development environment. The development model and brushing steps are introduced in detail.
Secondly, it introduces related software and visual library used in the process of software development, designing a UI interface, and implementing operations such as shooting and display of pictures.
Then it introduces the related algorithms of digital image processing and processes the captured images, including camera correction, median filtering, and histogram equalization.
Finally, a correspondence relationship is obtained by pixel-calibrating a photographed object of a known size. Afterwards, the actual objects that were photographed were dimensioned and then subjected to error analysis.
The system through the actual measurement of a variety of objects size, after the error analysis found that can reach the required detection accuracy, and ultimately achieve image processing based on the embedded platform to achieve the actual object size measurement.
Key Word: Embedded System; QT creator; Image Processing; Size Measurement; OpenCV
目 录
第1章 绪论 1
1.1 课题研究背景与意义 1
1.2 嵌入式图像处理系统的国内外研究现状 3
1.3 课题研究研究内容和预期目标 3
第2章 Jetson TK1开发板的底层环境搭建 4
2.1 Jetson TK1介绍 4
2.2 Jetson TK1开箱以及刷机 5
2.3 TK1刷机心得 8
第3章 相机拍照的UI界面设计 9
3.1 Qt Creator介绍 9
3.2 Qt Widgets Application的创建 11
3.3 相机拍照的UI界面编写 12
第4章 图像处理算法 18
4.1 Open CV视觉库概述 18
4.2 图像预处理 18
4.2.1 非线性滤波:中值滤波 18
4.2.2 直方图均衡化 19
4.3 相机标定 22
4.3.1 相机标定的原因 22
4.3.2 相机标定的理论基础 23
4.3.3 张正友标定法 26
4.4 像素标定 29
第5章 物体测量 31
5.1 物体轮廓检测 31
5.2 实验结果分析 32
第6章 总结与展望 33
参考文献 34
致 谢 35
第1章 绪论
课题研究背景与意义
近年来,伴随着我国微电子技术与集成电路技术的不断发展,芯片处理速度得以不断提高,存储技术的快速发展也使得存储容量日益增大。在此基础上,基于嵌入式的机器视觉系统逐渐代替了以往基于PC端的传统机器视觉系统,变得更加小型化、智能化,一种将嵌入式系统和图像处理算法相结合的产品应运而生,也被我们所称为智能相机。
传统的机器视觉系统需要包括光学系统、图像摄取装置、图像处理模块和显示模块等。其组织结构是分体式的,各自完成自己的任务。虽然它的视觉系统检测精度较高、运行速度较快,但存在着系统结构复杂、成本较高、外形尺寸较大等缺点。如下图1.1所示。
图1.1 传统机器视觉系统图
随着机器视觉向着集成化、微型化、模块化的方向发展,一种嵌入式机器视觉系统(智能相机)应运而生。如下图1.2所示。
图1.2 智能相机外观图
我们选择ARM嵌入式开发板作为硬件平台,在此上面搭建图像处理系统,也就是NVIDIA公司的Jetson TK1开发板,它有着低成本高效率的特点,同时它与传统机器视觉相比也具有以下各种优势:
(1)实时处理:当在不同的项目中,对机器视觉系统的要求不同,有时要求处理速度快,有时要求结果实时显示,传统的机器视觉虽然处理速度较快,但是由于PC尺寸的原因,意味着它不能满足实时显示的要求,便使得特定的项目难以实施。
(2)集成度高:由于微电子集成技术的发展,如今的嵌入式设备都是功耗低,体积小,所以我们能够使用蓄电池,如航模电池进行供电,更加容易随身携带。
(3)软件稳定性好:我们能够通过QT creator对TK1进行开发,将代码进行封装,直接在开发板进行调用进行实时显示即可。
(4)低成本。当我们将此开发板搭载着开发出来的软件大批量生产时,低功耗就决定了我们的低成本。
从上述优点可以看出,搭载嵌入式开发板的数字图像处理系统能在满足开发者要求的同时,实现随时移动,方便携带等特点,也顺应了如今机器视觉向着微型化,集成化和模块化转变的潮流。
嵌入式图像处理系统的国内外研究现状
随着微电子集成技术的不断发展和图像处理算法的不断研究,国内外对嵌入式图像处理研究也越来越多。比如在由美国的WinRiver公司所设计的名叫Vxworks嵌入式操作系统,通过系统外部所连接的摄像头对外界环境进行采集,然后传输到指挥中心进行三维地表环境的重建[1]。又比如美国的Apple公司所设计的基于嵌入式芯片的人脸识别技术,用于其手机的自动解锁,被称为Face ID。这是基于嵌入式设备的图像处理系统[2]。
简而言之,基于嵌入式设备的图像处理系统的研究主要是集中在图像信息的三维重建、行人检测[3]和物体识别[4]。而国内的主要应用领域是在定位测量、产品缺陷检测等方面,如内蒙古工业大学的许美珍,提出结合嵌入式开发板和图像处理对雪糕棒形状缺陷和表面污染进行检测等,又比如长安大学的唐致龙提出的基于OpenCV的嵌入式的人脸检测系统和杭州电子科技大学的严志超提出的基于嵌入式Linux的燃气表自动识别技术的研究等。
课题研究研究内容和预期目标
本课题的主要内容是先对现有的ARM开发板,即Jetson TK1进行编译环境的搭建,熟悉TK1的硬件结构,然后结合Qt creator的集成开发环境以及OpenCV的第三方开源视觉库来搭建智能相机[5]的框架,实现对实际物体进行拍摄、图像处理、分析和尺寸大小的输出,主要完成了以下的工作:
(1)查阅资料,了解基于嵌入式机器视觉的发展历程,确定所使用的嵌入式开发板为基于Cortex-A15的Jetson TK1[6]。熟悉其硬件结构,搭建外部设备进行刷机。
(2)选取工业相机作为图像摄取装置,并在TK1开发板上下载驱动。安装我们所需要用到的QT creator开发软件以及OpenCV视觉库,然后进行开发,设计出UI界面,能够实现控制相机拍摄图片并显示到界面上。
(3)增添功能,对显示到界面上的图片进行数字图像处理如图像预处理、畸变矫正等,方便后续的边缘轮廓的提取以及测量,最后得到实际物体的尺寸,计算误差并评价该图像处理系统的性能。
(4)对整个嵌入式图像处理系统进行总体总结,分析尺寸测量误差的来源,并计划后续的优化方法。
完成上述图像处理算法设计后,将相机和开发板以及显示屏集成在一起,形成上述所展示的智能相机的雏形,以实现对物体尺寸测量的功能。
第2章 Jetson TK1开发板的底层环境搭建
Jetson TK1介绍
Jetson TK1[7]是NVIDIA公司旗下的首款嵌入式超级计算机,处理器为ARM Cortex-A15 CPU[8],拥有192个CUDA核心和桌面CPU同架构的Kepler显示核心,自带的操作系统为Ubuntu-Linux,最高时钟频率为2.3GHz。由于Linux系统具有开放性,能够让开发者迅速的了解底层环境,投入到基于嵌入式设备的图像处理算法的研究工作中。除此之外NVIDIA提供整个BSP(板级支持包)和软件包,其中包括CUDA、OPENGL(开源图形库)4.4以及由Tegra芯片加速的OPENCV等软件。下图2.1.1是NVIDIA官网对该开发板硬件参数的介绍:
图2.1 Jetson TK1的介绍
通过该参数表我们可以看出TK1开发板的虽然体积小,功耗低,但是它的性能却不比PC端差很多,拥有着2.3GHz的时钟频率,8G内存,以及高清视频显示输出。足够开发者在上面进行软件开发,相信它在图像处理效果上也会有着不俗的表现。
Jetson TK1开箱以及刷机
当拿到TK1开发板时,接通电源时发现是没有图形界面输出的,此时需要我们通过相关的命令,从文本界面进入图形界面。需要注意的三点是,一是由于Jetson TK1的视频输出接口的特性,必须要使用HDMI视频线接到HDMI的屏幕才会有图形界面的显示;二是由于TK1的usb接口只有一个,然而我们需要接入外部设备,如鼠标、键盘等。所以我们需要一个usb hub来拓展接口。三是由于TK1配备的电源线的插头是使用的美标,不适合我们国内的标准插座,所以需要一个转换器。
完成TK1的开箱后,已经可以看到如图2.2所示的图形界面了,可以看到自带的Ubuntu系统为14.04,这个和我们接下来要做的刷机相关。
图2.2 TK1的图形界面
上网查询到TK1开发板的底层环境搭建的教程以及相关视频,都是使用原生编译,通过分别下载CUDA、sample以及toolkit。我们知道对嵌入式的开发一般有两种选择,即原生编译和交叉编译。交叉编译时是指我们在Host主机上编写代码,然后挂载到我们的开发板上运行,而原生编译是指直接在开发板上搭建环境、运行代码。为了方便起见,我们采用的是原生编译,也就是直接在TK1上进行软件开发。
但是这种方法到如今是不可行的。因为NVIDIA公司为了方便用户,将所用到的资源都储存在一个叫做Jatpack的工具包中。因此我们只需要通过host主机对TK1开发板进行工具包的安装,也就是我们所称的刷机,便可以一步搭建完成。对于刷机过程主要分为以下几个步骤:
(1)首先,你必须准备一台Ubuntu X64的计算机(Host)。切记Jetpack是在宿主机(Ubuntu X64)上运行的,在开发板平台上无法运行。在NVIDIA官网上下载最新的Jetpack for L4T:https://developer.nvidia.com/embedded/downloads
下载完成之后先设置当前模式为超级用户模式,然后进入到你下载文件的路径下,但是此时会报错,错误表明该命令无法运行。这是因为安装包没有权限,如下图2.3所示,我们右键选择属性,勾选中红色圈中的选项便可。
图2.3 Jetpack的属性选择
(2)当你运行完上述的安装包时,会出现选择页面,其中包括了Jetson TK1、TX1和TX2这三个选项,我们选择TK1,之后屏幕上会出现相关的选择界面。如下图2.4所示:
图2.4 JetPack选择性安装界面
在上述所显示的安装文件中可以分为两部分,一类是安装给TK1的文件,另一类是安装在Host主机上的文件,由于我们是采用原生编译,不需要在宿主机上进行开发,因此第二类文件我们不需要进行安装,只需要关注第一类。根据我所需要的安装CUDA Toolkit for L4T(底层环境)以及OpenCV for Tegra(为了编译OpenCV这一第三方视觉库)。
这个过程耗费时间的长短根据网速而定,一般为几十分钟。当我们完成下载以后,注意此时是下载到了Host上,接下来才是通过usb线传输到TK1开发板上,值得注意的是我们 所使用Host以及我们的TK1开发板都要把网线连接到同一个路由器,也就是如图2.5所示的选项:
图2.5 网线连接方法
(3)这样Jetson TK1的IP地址便可以自动获取,其余的设置保持默认值即可,如下图2.6所示:
图2.6 网络入口的选择
(4)在上述操作以后会出现提示,告诉开发人员如何将TK1设置成恢复模式,首先在开发板接上电源的情况下,按住恢复按键至少三秒,不能松开,此时按一下重置按键,此时再松开恢复按键。此时设备便进入了恢复模式。另外我们可以通过在终端输出“lsusb”的命令,输出Host通过usb连接的外部设备,如果在输出列表中有发现“NVIDIA Corporation”的设备,便表示TK1开发板已经成功进入恢复模式。
(5)剩下的操作系统会自动完成,我们只需要耐心等待即可。当完成后,会出现Success的字样,按Enter键会重启TK1开发板并直接进入图形界面,为了测试底层环境是否搭建成功,我们运行CUDA自带的范例Smoke Particles,得到运行的烟尘视频,我们清晰地看到烟尘颗粒,如图2.7所示。这也说明了TK1在处理速度和渲染效果上不俗的表现。
图2.7 烟尘效果演示图
TK1刷机心得
(1)在对开发板进行刷机时,需要使用Host宿主机,最好不要是虚拟机。它的操作系统是必须是Ubuntu14,04或者是16.04版本的系统,而且要求系统是英文版,中文版的系统在很多时候文件的保存路径会出现问题。
(2)由于我们是学生进行开发,使用的网络难免会是校园网,而校园网就必须考虑到账号登陆的问题。当我们将开发板设置成为恢复模式时,便将网络连接中断,因此当它再次进入图形界面时是无网络状态,此时需要我们在TK1上手动登陆进去系统,登陆自己的校园网账号,使网络变得可用,才能使后面的相关下载顺利进行。否则便会一直报错,表明连接中断。
(3)刷机这个操作是每个对TK1进行开发的人员的必修课,也就意味着没有人能够随随便便一次通过,总会遇到各种各样的问题,我们所要做的就是保持耐心,查疑纠错,不断的探索中找到刷机的正确方法
第3章 相机拍照的UI界面设计
Qt Creator介绍
Qt是一种开发框架,由奇趣科技公司在1995年正式推出,面向社会。Qt核心编程思想“信号与槽”由公司总裁Eirik提出,它是一个简单并且有效的强大的图形用户界面百年城规范。之后随着人员的增加和技术的提升,这一思想已经可以被多个软件程序所实现。2008年是重要的一年,奇趣科技公司被Nokia收购,从此加快了其开平台开发战略的进程。
在科技迅速发展的今天,集成开发环境的种类让人眼花缭乱,那我们为什么选择了Qt Creator作为我们的开发环境呢?以下是我们选择它的原因:
以上是毕业论文大纲或资料介绍,该课题完整毕业论文、开题报告、任务书、程序设计、图纸设计等资料请添加微信获取,微信号:bysjorg。
相关图片展示: