摘要
在计算机视觉技术中,运动目标检测是重要的研究方向之一,它需要对大量信息数据进行分析,并且对实时性要求较高,因此图像处理速度非常关键。鉴于 ARM的片上系统具有体积小、功耗低、速度快等优点,它能够很好支持 OpenCV 库的运行,因此,基于 ARM 的片上系统在图像处理中有着广泛的应用前景。
本学位论文首先对运动检测在国内外的研究背景进行了分析,并且对目前主流的运动检测算法进行了比较。由于 ViBe 算法对运动目标的检测效果良好,并且算法本身时间复杂度较低,非常适合在 ARM 架构下运行。因此,本文选择 ViBe算法作为论文的运动检测算法。传统的图像处理都是在 x86 架构下进行运行,相应的处理器芯片存在高成本和高功耗等缺点,因此,本学术论文提出并实现了基于ARM 架构和 Linux 系统上的运动检测系统。在硬件设计方面,本论文对图像传感器和图像数据缓存方案进行对比分析。由于本文中对图像的目标细节描述要求较低,因此图像传感芯片采用成本较低的 CMOS 传感器 OV9650,并针对 OV9650 编写了相应的驱动程序,同时为提高 CPU 的运行效率,对现有的环形缓存区的数据填充机制进行了改进。
尽管 ViBe 算法检测结果良好,具有算法的时间复杂度较低的优点,但检测运动目标时存在空洞现象和鬼影现象。为了进一步提高对于运动检测的准确度,本文提出了 ViBe 算法的改进算法。为了解决 ViBe 算法检测初期出现的鬼影现象的问题,本论文提出一种 ViBe 与帧间差分联合优化算法。它使用三帧差分法更新 ViBe算法的背景模型,加快对于背景误判的消除,鬼影现象问题得到解决。同时,为了解决 ViBe 算法在实际检测环境中产生的空洞现象,本文使用了形态学中膨胀、腐蚀的操作。本学位论文对 ViBe 算法的改进解决了 ViBe 算法存在的空洞现象和鬼影现象等问题,大大提高了目标检测的准确性。
最后,通过大量的实验验证和数据分析,本文在 Linux 系统下对改进后的 ViBe算法极大地提高了运动物体检测的准确度,该系统的应用场景也得到了扩展。
关键词:嵌入式 Linux,摄像头驱动,OpenCV,运动检测,ViBe 算法
Abstract
Motion detection research plays a significant role in computer vision technology. It requires instantaneity and analysis of enormous data. Therefore the speed of processing images is the key factor. Taking advantages of System on Chip, such as small size, low power consumption and fast speed as well as its compatibility with OpenCV Base, ARM chips have a bright prospect to serve the development of image processing. Firstly,the researchbackground of motiondetection at home and abroad is analyzed, and the current motion detection algorithm is compared in this thesis. Because the ViBe algorithm has good performance on the detection of moving objects, and the algorithm itself is less time-intensive, it is very suitable for running under the ARM architecture.
Therefore, the ViBe algorithm is used as the motion detection algorithm in this thesis. The traditional image processing runs under the x86 architecture, and the corresponding processor chip has the disadvantages such as high cost and high power consumption, therefore, the motion detection system based on ARM architecture and Linux system is proposed and implemented in this thesis. In the aspect of hardware design, the image sensor and image data caching scheme are compared and analyzed. Since the description of the details of the image is less demanding, the low cost CMOS sensor OV9650 is used as the image sensor chip in this thesis. And the driver for OV9650 is coded. At the same time, in order to improve the operating efficiency of CPU, the data filling mechanism of existing ring buffer area is improved.
Although the ViBe algorithm has good detecting performance and has the advantages of low time complexity, there are problems of void phenomena and ghost phenomena when detecting moving objects. In order to further improve the accuracy of motion detection, an improved algorithm based on ViBe algorithm is proposed. In order tosolvetheproblemof ghostingphenomenonintheearlydetectionusingViBe algorithm, a joint optimization algorithm of ViBe algorithm and interframe difference algorithm is proposed. The three-frame difference method is used to update the background model of the ViBe algorithm in order to speed up the elimination of the background miscarriage of justice, thus the problem of ghost phenomenon is solved. At the same time, in order to solve the void phenomenon in the actual detection environment using ViBe algorithm, the operation of expansion and corrosion in morphology is employed in this thesis. The proposed algorithm based on ViBe algorithm solves the problems of void phenomenon and ghost phenomenon, therefor the accuracy of target detection is greatly improved. Finally, the large number of experimental verification and data analysis show that the improved algorithm based on ViBe algorithm under Linux system greatly improves the accuracyof movingobjectdetection,andthe applicationscene of this system hasbeen extended.
Keywords: Embedded Linux, Camera Drive, OpenCV, Moving Detection, ViBe Algorithm
自二十世纪九十年代 Intel 公司发行开源跨平台计算机视觉库以来,计算机视觉无论在科研领域还是工程应用领域都得到广泛应用,目前计算机领域研究的热点方向之一就是利用计算机强大的计算功能实现图像视觉感知技术[1]。计算机视觉是通过使用计算设备对人类视觉的一种仿真,它的主要任务是通过对获得的图片进行计算、分析从而挖掘必要的信息[2]。计算机视觉是实现机器视觉、智能监控、目标追踪等众多应用的基础和关键。但是计算机视觉在科学研究领域具有极强的挑战性,自从诞生以来在工程应用领域得到了越来越多的重视。其中,运动目标检测作为计算机视觉的基础,逐渐成为众多科研人员的研究领域[3]。
运动目标检测是通过图像处理,对单个或多个目标的特征包括位置、大小和形状等信息经过一系列的转换后进行计算、分析与表达,然后实现对目标状态的识别与理解,判断出视频图像中运动目标的形状、位置等信息,并标记相关信息,使其做出决策或者等待进行进一步的处理[3]。当前无论在生活应用领域还是科研领域,运动目标检测都得到了很好的应用:在现代农业上对农作物的检测与长势进行监控;在现代军事领域上,对空中目标进行检测拦截;在医学上对微生物的检测与运动分析;在交通运输上对车流量进行智能监控与流量分析等[4]。
进入二十一世纪以来,对于运动目标检测的研究技术越来越成熟,在现实生活中的应用场景也越来越广泛。但是传统的运动目标检测是依赖于个人计算机的,图像采集部分与图像处理部分相互分离,这就要求个人计算机需要具备十分强大的计算处理能力,同时检测系统体积过于庞大,系统的成本和功耗也非常高,导致系统在很多领域无法得到很好的应用。由于半导体生产工艺和嵌入式芯片设计技术的快速发展,使得嵌入式 CPU 具有极低的功耗、良好性能以及超高的性价比等优点,使得基于嵌入式系统的运动目标检测在未来的发展中能够得到更广泛的应用。
基于嵌入式系统的运动目标检测系统不仅通过嵌入式开发板对图像进行采集,同时需要完成对采集后的图像进行计算以及后台显示等任务。这样在嵌入式系统中对运动目标进行检测,使得整个系统成本得到极大降低,同时方便了携带与使用,使得应用场景更加广泛。故此次研究是基于嵌入式系统,通过对运动目标检测算法改进以及对摄像头驱动的编写,使得在嵌入式系统中,对运动目标的检测能有较好的精确度,让本文的研究能够在相关产业得到应用。
围绕着基于 Linux 系统运动目标检测系统设计,本论文所做的主要工作如下:
1.搭建硬件平台:对本文采用的硬件器件进行方案选型;对本文使用的开发板进行环境搭建,主要是移植 Bootloader、裁剪内核以及制作根文件系统;介绍Linux 系统下图像传感器驱动的相关架构,编写驱动程序并调试,针对摄像头驱动中的缓存机制进行改进;2.应用软件的设计:Linux 下 ARM 平台的 OpenCV 的移植;3.算法的设计与移植:对论文中所使用的 ViBe 算法进行改进,对于 ViBe 算法存在的空洞现象和鬼影现象,本文使用形态学处理中的开运算来解决存在的空洞问题,通过在 ViBe 算法中融合三帧差分法来消除存在的鬼影现象,并将改进后的 ViBe 算法在 PC 机上进行运行;将改进后的 ViBe 算法移植到 ARM 平台下运行;4.功能测试:在 ARM 平台下进行功能测试。
本论文为基于 Linux 系统运动检测的系统设计,在研究前人的工作和阅读大量的文献基础上,对基于 Linux 系统运动检测的系统设计进行了相关研究与设计工作。本文的各章节安排如下。
第一章为引言。描述了当前运动检测发展现状及相关研究背景,介绍了嵌入式系统的发展现状与运动目标检测的研究现状,阐述了论文的主要工作以及论文的主要组织架构。
第二章为运动检测算法研究。本章节主要介绍了当前主流的运动目标检测算法及其相关原理,同时分析这几种算法的不足以及使用的相关场景。在这一章,重点介绍了三帧差分法的原理,以及 ViBe 算法的优点和不足,为后面章节使用 ViBe算法做出了说明。
第三章为系统方案的设计及平台的搭建。本章节首先对本文使用的平台方案进行选择,其次,对本文所需要的开发环境进行搭建,在搭建好的环境中对本文采用的图像传感器进行驱动开发,最后,改进了驱动缓存机制并进行拍照测试。
第四章为 OpenCV 环境的搭建。本章节首先对 OpenCV 进行了详细介绍,然后完成 OpenCV 在 VS2012 上的配置,最后将 OpenCV 移植到 ARM 开发板平台上。
第五章为对于运动目标检测算法的改进。本章节先介绍了论文所使用的主要算法 ViBe 算法,并分析了 ViBe 算法的优缺点。针对本文分析的缺点,对现有的ViBe 算法进行优化,并将优化后的算法在 PC 机以及嵌入式设备下进行使用。
第六章为总结与展望。对本文实现的基于 Linux 下运动目标检测系统设计的优缺点进行了分析和总结,并针对优化和改进提出进一步的设想。
linux系统运动检测系统界面实现图:
ubuntu 图形界面
解压后的交叉编译链工具文件
安装上的交叉编译链工具信息
NFS 工作显示图
Linux 内核的组成架构
Linux 内核界面
Linux 内核编译成功界面
拍照测试图片
OpenCV 环境变量配置
新建 Visual C++项目
新建 Visual C++项目
目录
图录
第 1 章 引言
1.1 研究背景及意义
1.2 国内外研究现状
1.2.1 嵌入式系统发展现状
1.2.2 目标检测的研究现状
1.3 论文主要工作
1.4 论文组织结构
第 2 章 运动检测算法研究
2.1 光流法
2.1.1 光流场与运动场
2.2 帧间差分法
2.2.1 两帧差分法
2.2.2 三帧差分法
2.3 背景差分法
2.3.1 单高斯模型算法
2.3.2 混合高斯模型算法
2.3.3 ViBe 算法
2.4 本章小结
第 3 章 系统方案的设计及平台的搭建
3.1 平台方案选择
3.1.1 嵌入式系统
3.1.2 图像传感器
3.2 嵌入式系统开发环境的搭建
3.3 Bootloader
3.3.1 安装配置 NFS、FTP
3.4 Linux 内核移植
3.4.1 Linux 内核的配置和裁剪
3.5 根文件的制作
3.6 视频驱动的研究与实现
3.6.1 OV9650 摄像头的工作原理与操作时序
3.6.2 IIC 总线
3.6.3 V4L2 的研究与实现
3.6.4 驱动程序的实现
3.6.5 缓存机制的改进
3.6.6 拍照测试
3.7 本章小结
第 4 章 搭建 OpenCV 环境
4.1 OpenCV 在 VS2012 下配置
4.2 OpenCV 移植到 ARM 开发板上
4.3 本章总结
第 5 章 基于 ViBe 算法改进的运动检测算法
5.1 运动检测算法方案的选择
5.2 运动算法的改进
5.2.1 三帧差分与 ViBe 算法的结合
5.2.2 形态学处理
5.2.3 检测结果验证
5.3 本章小结
第 6 章 总结与展望
6.1 论文工作总结
6.2 未来工作的展望
参考文献
致谢
攻读硕士学位期间从事的科研工作及取得的成果
(如您需要查看本篇毕业设计全文,请您联系客服索取)