1绪论
1.1课题综述与现状
这与传统的图像分割(Image Segmentation)技术有些类似。相比之下,传统的图像分割,是从静止图像中抽取感兴趣目标,对图像进行区域分割。而运动目标检测,是针对运动信息进行提取。实际上,运动目标检测算法是基于图像分割算法的。很多特定的运动目标检测算法的指导思想仍旧是图像分割技术,例如值分割、直方图思想等。
运动检测算法的需求,来自智能视频监控技术的发展。视频监控,即通过摄像机监控现场的动态场景,实现日常管理以及在异常情况发生时做出快速反应。视频监控直观、方便、信息内容丰富,可以节省人力、物力,降低生产成本和提高生产效率,从而被广泛应用到许多场合,己经成了工业、服务行业、乃至各行各业的发展趋势。随着技术的飞速发展,人们对视频监控系统的要求越来越高,智能化在监控领域也得到越来越多的应用。而所谓智能视频监控,是指在经典的视频监控系统上,加入智能信息获取和分析功能,使得系统检测工作智能化,自动化。相比起传统的视频监控系统而言,智能监控系统能够根据用户需求和设置,自动分析实时视频,获取特定的目标运动、方位、动作等信息,并加以记录和处理,以便产生日志报警等工作。结合机器视觉、图像处理等相关知识,通过自动化手段,达到快速、准确的分析和报警,节省人力物力的目的。例如,在某些监控场所对安全性的要求比较高,需要对运动的物体进行及时的检测和跟踪,因此我们需要一些精确的图像检测技术来提供自动报警和目标检测。运动检测作为在安防智能化应用最早的领域,它的技术发展和应用前景都受到人们的关注。
一般的,智能视频监控系统的核心流程大致分为四部分:运动目标检测、目标分类、目标跟踪、行为分析。其中,运动目标检测作为智能视频监控流程的第一环节,其检测效率和检测精度对整个系统占有极其重要的影响。因为后续环节的检测效果受其检测效果的制约和影响,所以人们对运动检测算法提出颇高需求。特别是针对实际应用环境,一方面要保证检测运行效率,另一方面要增加对复杂多变的外界环境造成的图像噪声的应对功能,即在复杂环境下保证检测精度。这是个非常有挑战性的问题。很多算法在良好的测试环境下表现优异,但是在实际应用中差强人意。近年来,针对运动检测算法的改进工作,很大程度上是针对算法的鲁棒性进行的。许多新提出的算法,相比较之前的算法而言,对图像背景噪声的适应性增强,检测率和检测精度等指标都有很大提高。但是,另一方面,算法的时间复杂度大大增加,算法处理时间无法满足实时性要求。像混合高斯背景建模(GMM)算法,像素梯度直方图(HOG)〕算法等,效果良好,但是性能低下。性能瓶颈现在成为了制约这一类算法实用化的最大障碍。
实际上,智能视频监控领域有关算法性能问题的解决方案,在早期就已经有了。之前,针对图像处理的加速,主要是通过算法的硬件化来实现的。即使用嵌入式设备,DSP或者FPGA等手段,将大规模耗时的图像算法或者算法中的核心步骤,采用硬件电路实现。这样,数万乃至数百万个CPU时钟周期的代码程序,可以在可编程芯片上使用几千几百个时钟周期实现。这种做法,使得算法的整体处理时间大大缩短,能够将之前在CPU上运行无法达到实时性要求的一些算法,加速到满足一般实时性要求,无忧论文网www.51lunwen.org提供文科论文,论文格式范文,毕业论文格式,论文格式模板,论文参考文献格式,联系方式:QQ357500023,电话13795489978。以供应实际产品的使用。但是,这种做法有一些很明显的缺点。相对于软件开发来说,硬件编程难度大,需要硬件底层相关的数学,电学等知识;开发门槛高,程序的调试也异常困难。另一方面,因为硬件编程的基本思维异于软件编程,因此很多针对软件实现的,流程化的算法,实际用硬件实现是相当困难的。综合各方面的问题,硬件开发相比起软件开发来说,周期长,成本高。对于一般的组织或者人员来说,难以实现。
GPU通用计算的应用与算法加速,主要是在近十年来逐渐兴起的。之前,PC主机显卡上的GPU,主要工作是为了游戏提供大规模高速的特定图形运算加速,主要包括矩阵运算,图像纹理和顶点处理等操作。这些运算虽然速度很快,但是有着很强的专业性。针对的算法主要就是游戏显示中使用的少数几种;而对于开发人员来说,编程要使用专门的图形API接口,图形编程也和普通通用编程不太一样。随着时代发展,显卡的计算能力与性能提升速度远远超越CPU。为了充分使用显卡的运算资源,有人提出了使用显卡进行大规模并行化的通用计算。为了达到此目的,主流显卡厂商改进显卡的硬件架构以适应新的编程需要,并提出新的,适合一般编程人员学习和容易接受的通用计算API。这样,GPU编程不再是游戏开发人员独有,而是变得更加大众化。在此基础上,催生了一系列算法的GPU通用计算加速应用。其中,图形图像处理方面的应用,因为主要内容是矩阵相关的运算,一般来说,非常适合进行GPU并行化,并且能够获得较高加速比,因此属于热点话题。
CUDA(Compute Unified Device Architecture)是NVIDIA公司推出的一种并行编程与计算平台。其面向对象是有大规模数据量和高性能计算需求的客户。
2 GPU通用加........... 16-30
2.1 GPU历史与........... 16-17
2.2 GPGPU........... 17-19
2.3 CUDA技术........... 19-30
2.3.1 CUDA综述........... 19-21
2.3.2 CUDA编程模........... 21-25
2.3.3 CUDA程序优化........... 25-27
2.3.4 CUDA程序优化........... 27-30
3 运动目标检测........... 30-52
3.1 算法综述........... 30-33
3.2 GMM算法........... 33-40
3.2.1 算法简介........... 33-34
3.2.2 算法内容........... 34-38
3.2.3 通用算法实........... 38-40
3.3 HOG算法........... 40-52
3.3.1 算法简介........... 40-41
3.3.2 算法内容........... 41-44
3.3.3 通用算法实现........... 44-52
4 运动目标检测算法的CUDA........... 52-68
4.1 基本思想........... 52-54
4.2 GMM算法的CUDA........... 54-60
4.2.1 算法并行化........... 54-58
4.2.2 改进后的算法........... 58-60
4.3 HOG算法的CUDA加速........... 60-68
4.3.1 算法并行化........... 60-64
4.3.2 改进后的算法........... 64-68
总结与展望
GMM和HOG的并行化实现过程中,绝大部分设计都尽量遵循了效率最大化原则,少数细节因为考虑程序设计成本和代码编写成本,无法做到尽善尽美。其中最可能造