Skip to content

基于OpenCV的图像序列的运动目标检测

Notifications You must be signed in to change notification settings

DerekSunYH/Realtime_cb

 
 

Repository files navigation

Realtime_cb

基于OpenCV的图像序列的运动目标检测

前言

随着多媒体技术的发展和计算机性能的提高,计算机视觉的研究重点已经从静态图像过渡到动态图像序列上面,其中运动目标检测与跟踪是其中一个主要分支,这方面的应用包括交通检测,智能监控,智能人机交互,军事应用,图像检索等方面。运动区域的有效分割对于目标分类、跟踪和行为理解等后期处理是非常重要的,然而由于背景图像的动态变化,如天气、光照等的影响,使得运动检测成为一项相当困难的工作。目前几种常用的方法有 :背景减除、时间差分、光流、扩展的 EM 算法、能量运动检测等。 OpenCV 是 Intel公司资助的开源计算机视觉库 , 它由一系列 C 函数和少量 C++ 类构成,实现了图像处理和计算机视觉方面的很多算法,为计算机图像分析和机器视觉提供了极大便利,减少了很多底层代码的编写,提高了工作效率。 代码开发环境Visual Studio 2010,由Git进行代码管理。 Github地址为:https://github.com/xzdbd/Realtime_cb

1 背景减法

固定场景下应用背景差分法进行运动目标检测,首要任务是提取到真实的背景 , 针对这种情况,背景模型便应用而生。 (1) 手动给出背景法 需要没有前景物体时获得背景图像。 (2) 统计方法 在一定的时间段内对各个点的灰度取平均值 , 用这个平均值作为背景图像对应点的灰度:

其中N为N幅图像,Bk 为统计平均后得到的背景图像, k I 为第 K 帧的灰度图像。 (3) Surendra 背景更新算法 其思想是通过背景差分法取得运动区域 , 对运动区域内的背景保持不变 , 而非运动区域的背景用当前帧进行权值更新。其主要步骤如下 : (a) 求当前帧的背景差分二值图像

(b) 由二值图像Di更新背景图像Bi , 即

式中B (x, y) i 为背景图像 ;Di为二值图像 ; i I 为第i帧图像 ; 为加权系数。 (4) 高斯背景模型 背景模型法是对背景图像中的各个像素点建立分布模型,并且随着时间推移对模型参数进行更新,背景模型可分为单模态和多模态两种。

2 帧间差分法

帧间差分法对动态环境有很强的自适应能力,能够检测出运动对象的部分轮廓信息,但是在检测结果中,不能完全提取出所有属于运动对象的特征像素点。 2.1 两帧差分 设第i帧图像的灰度为 ,定义差分函数如下:

2.2 改进的两帧差分 改进的帧间差分法的本质是变“点与点”为“点的邻域与点的邻域”的比较。设第i帧的图像为 ,第i−1帧的图像为 ,算法主要步骤如下 : (1) 对第i−1帧图像的点(x, y) ,确定其 N U N 的邻域B0,在第i帧图像中,以点(x, y)为中心,以 M 个像素距离为限进行块匹配,设点 (x1, y1) 最匹配 ; (2) 计算 。如果L大于某个事先设定的阈值 ,则点(x, y) 是运动目标点,否则该点是静止的背景。

3 光流法

光流计算方法最初是由Horn 和 Schunck 于 1981 年提出的 , 它是一种以灰度梯度基本不变或亮度恒定的约束假设为基础的目标检测的有效方法。

4 背景减法与轮廓检测的背景更新

首先运用背景减法检测出运动区域,由于噪声的影响,对二值图像进行形态学腐蚀,去掉一些没有意义的点或噪声,然后采用Canny算子对当前帧进行边缘检测,但检测的结果通常是一些分散的边缘,没有形成闭合边界。根据邻近的边缘像素在梯度和幅度方向上具有一定相似性而将它们连接起来。然后对二值化图像值为 1 的点和当前帧进行匹配检测,若当前帧的区域轮廓和二值化图像像素为 1的点基本重合,则当前边缘轮廓为运动区域,对找不到匹配轮廓的值为 1 的点用单模态高斯背景模型更新背景图像,而值为 0 的点代替背景点。

About

基于OpenCV的图像序列的运动目标检测

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C++ 98.4%
  • C 1.6%