资讯详情

【老生谈算法】基于matlab的运动目标识别与跟踪系统设计与算法原理及程序源码——目标识别算法

基于matlab运动目标识别与跟踪系统设计与算法原理

大家好,今天给大家介绍一下。matlab监控和跟踪系统的设计和原理。 视频图像分析主要是分析和处理运动图像序列,通常涉及几个过程:运动检测、目标分类、目标跟踪和行为理解和描述。其中,运动目标检测和跟踪处于整个视觉监控系统的底部,是视频图像分析中最基本的方法,是目标分类、行为理解等各种后续高级处理的基础。

  • 基于matlab运动目标识别与跟踪系统设计与算法原理
    • 1、项目简介
    • 2、难度指数
    • 3.运行环境:
    • 4.项目详解:
    • 5.下载源码:

1、项目简介

  1. 对所要求的场景提出了一种检测运动物体,跟踪运动物体的方法。用背景差分得到运动人体的区域, 通过卡尔曼滤波器跟踪人体并给出例子

  2. 目前,运动物体检测和运动参数测量的研究方法主要包括人工神经网络和图像处理。本文研究了运动物体的图像处理方法。该方法一般可分为四类:基于帧间差、背景差、特征和光流场。

  3. 运动物跟踪系统的基本过程如下: 1.在图像序列中检测运动物和运动区域 2.对检测到的运动物体提取特征建立目标匹配模板 3.计算目标的形心 4.预测下一刻目标可能移动的位置,确定下一刻目标的搜索范围 5.在预测的搜索范围内,用前一刻的模板进行匹配搜索,找到最佳匹配位置,在预测范围内找不到目标时进行例外处理。


2、难度指数

项目难度:中难度 适用场景:毕业设计及相关领域的应用研究


3.运行环境:

环境配置: 本项目使用MATLAB版本为MATLAB 7.8.0(R2016a) 注:可以适应大部分matlab版本 项目技术: 轮廓提取算法 图像分割算法 背景差分算法 图像预处理 卡尔曼滤波算法 运动跟踪 物体检测识别等


4.项目详解:

提示:以下是项目的详细介绍,项目源代码和项目设计文件下载地址见文末。

4.11运动物体的检测方法 运动目标的检测是一个重要而困难的研究课题。它不仅可以分割运动量和背景量,还可以利用检测到的运动块为未来的识别、分类和行为分析提供感兴趣的区域。从分割的角度来看,运动物体检测被认为是视频对象的空间域分割。具体来说,是指逐帧检测和分割序列图像中独立运动的区域。换句话说,所谓的运动物体检测是指当场景中的新物体进入或场景中的物体移动时,通过检测算法知道有物体出现,而分割是从背景图像中分割进入场景的物体。

4.1.运动物体常用的检测方法 差分图像通常用于检测运动物体。 一般有两种情况:差分图像: 1.当前图像与固定背景图像的差异通常称为背景差异; 2.连续两幅图像之间的差异通常称为帧间差异。

该项目采用背景差异的方法获取运动物体。过程如下: 在这里插入图片描述 基于背景差异的方法是目前运动分割中最常用的方法。它是一种利用当前图像和背景图像之间的差异来检测运动区域的技术。该方法通常可以提供完整的特征数据,但对光线和外部无关事件的干扰等动态场景的变化特别敏感。

4.1.2灰度图像背景提取 原始彩色图像序列不能直接用于运动目标的检测和跟踪,而是用灰度图像序列将彩色视频图像序列转换为灰度图像序列,然后从灰度图像序列中提取背景。

彩色图像转换成灰度图像: 彩色图像的每个像素点RGB空间中有一个三维矢量,每个重量分别代表红、绿、蓝三种颜色的灰度。将彩色图像转换为灰度图像的最简单方法是将这三个重量取平均值。但这种方法与人眼视觉感知不符。红、绿、蓝三种颜色的权重是不同的。JPEG图像压缩格式采用YUV空间,YUV空间是RGB空间的线性变换。转换公式为: R、G、B分别表示红、绿、蓝三种颜色分量的灰度值。Y重量表示图像的亮度,符合人眼对颜色的感知。我们将Y重量作为图像像素的灰度。将彩色像素转换为灰度像素的公式是 GRAY=0.299R 0.587G 0.114B 将彩色图像转换为灰度图像的算法如下: 每一个像素矢量遍历彩色图像,红、绿、蓝三色分量值为矢量R、G、B,则 输出灰度图像的对应像素值为0.299R 0.587G十0.114B

运动检测的目的是从背景图像中提取图像序列中的前景运动区域。运动检测是运动物分类、跟踪和行为理解的基础。现阶段处理结果的质量直接影响未来处理效果,因此运动检测在人体运动分析中的作用非常重要。然而,由于天气、光线、阴影和混乱干扰等背景图像的动态变化,运动检测成为一项非常困难的工作。

本项目对象检测采用背景相减(baekgroundsubtraetion)该方法是目前运动分割中最常用的方法。它是一种利用当前图像和背景图像之间的差异来检测运动区域的技术。其主要工作过程如图所示:首先使用公式计算背景图像与当前图像之间的差异,然后对差异图像进行二值化,并对二值化图像进行连接分析。当连接区域的面积(像素数)大于一定阈值时,认为检测到目标,并认为连接区域是提取的目标图像。

基于背景相减的运动检测算法流程图:

该方法通常可以提供最完整的特征数据,但对光和外部无关事件的干扰等动态场景的变化特别敏感。最简单的背景模型是平均时间图像,大多数研究人员致力于开发不同的背景模型,以减少动态场景变化对动态分割的影响。

例如:Haritaoglu使用最小、最大强度值和最大时差值对场景中的每个像素进行统计建模,并定期更新背景; McKenna自适应背景模型结合像素颜色和梯度信息,解决影子和不可靠颜色线索对分割的影响; Karmann与Brandt、Kilger基于卡尔曼滤波(Kalmanfiltering)适应天气和光照时间变化的自适应背景模型; Stauffer与Grimson采用自适应的混合高斯背景模型(即混合高斯分布模型)和在线估计更新模型,可靠处理光变化和背景混乱运动的干扰。

还有以下其他方法: 时差法(temporal difference)。时差是利用连续图像序列中两个或三个相邻帧之间的时差和阈值来提取图像中的运动区域,其基本过程如图所示。首先,利用公式计算第k帧图像与第k1帧图像之间的差异,得到差异后的图像,然后对差异后的图像进行二值化。当差异图像中的一个像素值大于一定的阈值时,它被认为是前景像素,否则它被认为是背景像素。差分图像二值化后,最后进行连通性分析。当连接区域的面积大于给定的阈值时,检测到目标,并认为该区域是目标占用的区域。 检测算法流程图基于时差:

光流法(optiealflow):基于光流方法的运动检测采用了运动目标随时间变化的光流特性。如Meyer基于轮廓的跟踪算法可以通过计算位移到量光流场来初始化,从而有效地提取和跟踪运动目标。该方法的优点是,独立的运动目标也可以在相机运动存在的前提下检测到。然而,大多数光流计算方法相当复杂,抗噪性差。如果没有特殊的硬件设备,则不能应用于全帧视频流的实时处理。

由于时差容易在运动实体内产生空洞,难以准确获取运动物体的轮廓信息;光流方法时间成本大,抗噪性差,不适用于复杂背景;背景减少是利用当前图像与背景图像的差异快速检测,并能提供最完整的运动区信息,缺点是对背景干扰敏感。

4.1.计算目标形心坐标3 背景差异后,图像获得了运动目标的分割图,并进行了二值处理,使目标区域的像素灰度值为255,其他区域为0。为了获得运动物体的运动轨迹,或预测运动物体在下一帧图像中的位置,必须计算运动物体的形心坐标。

4.跟踪运动物体 4.2.1跟踪简介 在计算机视觉、图像处理图像处理和模式识别领域非常活跃的课题。所谓运动目标跟踪,就是在序列图像中的每一幅图像中找到感兴趣的运动目标的位置。简单地说,在下一帧图像中找到运动物体的确切位置。因为周围的环境是动态的,某一时刻所拍摄的图像和另一时刻的图像是不同的,因而视觉系统的一个初步任务在于将图像特征从一幅图像到另一幅图像匹配起来。这个过程称为图像特征跟踪(token tracking)。

在视频监中运动目标跟踪的作用非常重要,因为它不但可以提供被监视目标的运动轨迹,也为进行场景中运动目标的运动分析和场景分析提供了可靠的数据来源,同时运动目标的跟踪信息也反过来为运动目标的正确检测以及运动目标的识别提供了帮助。

如果将所有图像重叠起来(即在图像坐标系下考虑问题),我们可以将第一幅图像的每个特征和后继图像中匹配的特征连接起来,这样对每个图像特征就得到一条轨迹(trajectory)。因此,我们也可将“跟踪”重新定义为图像特征轨迹的估计。根据这个定义,特征跟踪可以认为是参数估计的一个特例。我们将会看到,参数估计理论确实构成了特征跟踪的基础。但是,特征跟踪所涉及的范围要比参数估计宽的多,例如统计决策理论(statistic decision theory)在特征跟踪中也起着很重要的作用。

特征服踪是在一个“匹配—修正—预测”(matching-update-prediction)环中实现的。在时刻所检测到的图像特征要和系统已有的特征建立对应关系(匹配),然后修正这些特征的参数,最后预测它们在下一时刻可能出现的方位。在匹配过程中,我们将要用到统计决策理论;在修正和预测中,需要用到参数估计理论;为了预测,我们还必需描述特征的运动模型。 特征跟踪的“匹配-修正-预测”环: 到此为止,图像的特征还只是一个抽象的概念。事实上,它可以是多种多样的:点、直线段、直线、曲线(以上既可以是二维的也可以是三维的);二维区域,平面和曲面等。根据不同的应用应选择适当的特征。以下我们将以点为例子来研究特征的跟踪。

4.2.2参数估计理论简介 参数估计是从不确定的甚至是错误的观测值中推断出有意义的值的过程.当然,这里所谓“有意义的”必须根据具体的问题来决定。参数估计涉及的内容广泛,此处仅给出在解决特征跟踪问题时必需的部分.

状态空间表示法: 在实际应用中,经常要研究动态系统.用状态空间来描述动态系统有很多好处,使得我们可以在一个一般的且一致的框架下研究任何复杂的动态系统。利用这个表示法,通过引进中间变量,很多动态系统可以用如下的一阶微分向量方程来表述: 例 一动态系统由和两变量描述,并有下列两微分方程: 如果定义下列向量(称为状态向量): 称为状态变量,那么原系统可表达为一阶微分向量方程: 我们可以将状态变量看作为记忆变量。我们能从状态变量中重新得到所有想要得到的有关过去的东西(不是所有过去的东西)。也就是说,状态变量储存了一个动态系统关于“历史”所需的信息。

一个离散动态系统可分解成两个过程:维的动态系统和维(<)的观测系统。在时刻,维输入向量经过动态系统,再加上维噪声向量(称为动态噪声)产生维状态向量。这里,下标表示这是时刻的值.一般地,动态系统的演变可由下列差分方程(称为动态系统方程或系统方程)描述。 离散动态系统的描述: 状态向量通过维的观测系统,再加上维噪声向量 (称为观测噪声),输出观测向量。一般地,观测系统可由下列差分方程(称为观测方程)描述:

4.2.3卡尔曼滤波算法 Kalman滤波器是一个线形递归滤波器,它基于系统以前的状态序列对下一个状态做最优估计,预测时具有无偏、稳定和最优的特点。

通常情况下,在一个有噪声的系统中,我们用y描述系统在k时刻的状态, z为在k时刻观察到的特征向量。通过z我们可以对y的值有一个估计,如果我们还知道如何y随时间变化,我们就会对y有一个预测。这表明了一个预测反馈的机制,这种预测反馈机制就是Kalman 滤波的思想。

卡尔曼滤波器的结构如图。它处理的是这样一个系统:Xk是系统第k时刻的状态矢量,A是系统的状态转移矩阵,Wk是系统第k时刻的系统噪声矢量,系统的当前状态依赖且仅依赖于系统的上一状态,并且是线性关系 人们对系统的状态矢量x做观测,h是观测矩阵,v是第k时刻的观测噪声矢量,人们最终看到的是z。 卡尔曼滤波的目标是,己知系统转移矩阵A,观测矩阵H、系统噪声矢量的协方差矩阵Q、观测噪声矢量的协方差矩阵R,从观测到的Z中恢复X 卡尔曼滤波器的结构: 从式子中可以看出,当观测噪声矢量的协方差矩阵中的元素越大卡尔曼增益就越小,对预测的修正量就越小。这是因为观测噪声的协方差矩阵元素越大,观测值的可信度就越小,最终估计值越靠近预测值。

将卡尔曼滤波用于运动跟踪。状态矢量为物体位置和速度,各有两个方向,因此状态矢量是四维矢量。转移矩阵是新位置与速度与上一时刻位置与速度的关系。认为速度不变,而新位置等于上一时刻位置加上速度乘以采样周期,即可得到转移矩阵。观测矩阵就是取出状态矢量的两个方向的位置分量。系统噪声是由运动物体加速度导致的,而观测噪声是由前述运动物体和连通区域不一致导致的。

4.3项目设计总结 使用基于灰度图像的卡尔曼滤波跟踪,跟踪效果主要取决于检测的效果。检测的效果越好,则能给予跟踪过程的检测对象特征信息就越多,跟踪的效果就越好。因此检测过程是图像序列跟踪的主要过程。

灰度图像的检测,优点是检测方便有效,但极易受到光照的影响,检测对象与背景的对比差别、检测对象本身的对比度变化,运动物体的阴影也有很大影响。此外,使用灰度图像进行检测很难解决物体遮挡的问题。因此,对以上问题可以考虑采用其他的方法进行检测,例如使用彩色图像序列,根据颜色分量,特征点、线等方法进行检测。

对于卡尔曼跟踪,只要获取的信息较为准确,数量足够多,建立的特征运动模型足够准确,一般都能获得较好的跟踪效果;如果状态初始值取得足够合理,将能很快收敛。

4.4程序设计流程 1. 获取背景图像及其特征,转换为灰度图像。

2. 进行卡尔曼滤波的初始化。

3. 开始对前景图像进行循环处理。具体过程为: (1) 将前景图像转换为灰度图像。 (2) 将前景图像与背景图像进行差分运算,以获取检测区域。 (3) 对图像进行二值化操作,滤除噪音,并进一步获得检测对象。 (4) 对除噪声后的图像进行膨胀操作,突出检测对象。 (5) 标注二值图像中的连接成分,获取检测对象的图形属性,主要是获取检测对象的质心坐标。 (6) 以先验知识对检测对象的图形属性进行处理 (7) 对两个检测对象的质心坐标进行卡尔曼滤波跟踪,获取预测值。

4. 将所得的对象质心检测坐标与预测坐标进行绘图比较。

检测与跟踪效果(A、B两位同学在图像中的水平坐标) A同学的跟踪与检测过程 B同学的跟踪与检测过程:

4.5部分程序源码

%获取背景图像
Im0 = (imread('1.jpg'));
Im1 = (imread('2.jpg'));
Im2 = (imread('3.jpg'));
Im3 = (imread('4.jpg'));
Im4 = (imread('5.jpg'));
Im = (1/5)*Im0+(1/5)*Im1+(1/5)*Im2+(1/5)*Im3+(1/5)*Im4;
I_gray = rgb2gray(Im);
Imback=medfilt2(I_gray);
[MR,MC,Dim] = size(Imback);
%卡尔曼滤波初始化
R=[[1,0]',[0,1]'];
H=[[1,0]',[0,1]'];
Q=0.01*eye(2);
P = 100*eye(2);
dt=1;
A=[[1,0]',[0,1]'];
kfinit=0;
x1=zeros(300,2);
x2=zeros(300,2);
 
% 对前景图像进行循环处理
fig1=1;
fig2=0;
fig15=0;
fig3=0;
fig4=0;
fig5=0;
for i = 1 : 150
	%获取前景图像
    Im0 = rgb2gray(imread([int2str(i), '.jpg'],'jpg')); 
    Im= medfilt2(Im0);
  if fig1 > 0
    figure(fig1)
clf
imshow(Im)
  end
  Imwork = Im;
 
  %获取检测对象  [cc1(i),cr1(i),cc2(i),cr2(i),flag]=extract(Imwork,Imback,fig1,fig2,fig3,fig15,i);
  if flag==0
    continue
  end
 
  if fig1 > 0
    figure(fig1)
    hold on
      plot(cc1(i),cr1(i),'g+')
      plot(cc2(i),cr2(i),'go')
  end
 
    % 对A同学运动的Kalman 预测过程
  if kfinit==0
    xp = [MC/2,MR/2]'
  else
    xp=A*x1(i-1,:)'
  end
  kfinit=1;
  PP = A*P*A' + Q
  K = PP*H'*inv(H*PP*H'+R)
  x1(i,:) = (xp + K*([cc1(i),cr1(i)]' - H*xp))';
 
  P = (eye(2)-K*H)*PP
   if fig1 > 0
    figure(fig1)
    hold on
    plot(x1(i,1),x1(i,2),'r+')
   end
 
    % 对B同学运动的Kalman预测过程
  if kfinit==0
    xp = [MC/2,MR/2]'
  else
    xp=A*x2(i-1,:)'
  end
  kfinit=1;
  PP = A*P*A' + Q
  K = PP*H'*inv(H*PP*H'+R)
  x2(i,:) = (xp + K*([cc2(i),cr2(i)]' - H*xp))';
 
  P = (eye(2)-K*H)*PP
   if fig1 > 0
    figure(fig1)
    hold on
    plot(x2(i,1),x2(i,2),'ro')
   end
end
 
% 显示检测与跟踪过程
if fig4 > 0
  figure(fig4)         %A同学的检测与跟踪过程
  hold on
  clf
  plot(cc1,'g*');
  hold on
  plot(x1(:,1),'r+');
  figure(fig5)         %B同学的检测与跟踪过程
  plot(cc2,'g*');
  hold on
  plot(x2(:,1),'r+');
end


5、源码下载:

本项目及一些精选的matlab目标识别目标跟踪项目源码如下,有需要的朋友可以点击进行下载

序号 matlab目标识别项目(点击下载)
1 (本项目源码) 基于matlab卡尔曼滤波的运动目标(人体)识别追踪程序源码+图片集+毕业论文_运动目标跟踪_卡尔曼滤波_人体识别_matlab
2 MATLAB目标检测_matlab__meanshift结合颜色特征跟踪目标的程序(推荐)_meanshift_颜色特征识别
3 MATLAB目标跟踪_matlab_目标检测_matlab语言实现的经典Mean shift 目标跟踪算法_mean shift
4 MATLAB目标跟踪_matlab_matlab用背景差分法提取出运动目标,再用边缘检测法对目标进行跟踪_背景差分法_边缘检测
5 MATLAB目标跟踪_matlab_目标检测_实现高斯背景建模提取运动目标(人体)(推荐)_高斯背景建模_人体识别_运动目标检测
6 MATLAB目标跟踪_matlab_目标检测_matlab上实现车辆预测跟踪_车辆跟踪_车辆识别
7 MATLAB目标跟踪_matlab_目标检测_matlab编写的IMM目标跟踪程序_IMM_目标跟踪
8 MATLAB目标跟踪_matlab_目标检测_matlab 实现运动估计 经过试用,可显示运动目标_运动估计
9 MATLAB目标跟踪_matlab_目标检测_IMM雷达多目标跟踪matlab_IMM_雷达跟踪
10 MATLAB目标跟踪_matlab_目标检测_在matlab上用vibe算法完成视频前景提取_vibe)_视频前景提取
11 MATLAB目标跟踪_matlab_目标检测_运动目标检测背景建模,基于混合高斯模型(matlab)_运动目标检测_混合高斯
12 MATLAB目标跟踪_matlab_目标检测_运动车辆检测跟踪系统opencv_车辆跟踪_opencv
13 MATLAB目标跟踪_matlab_目标检测_用matlab模拟出十字路口的车辆通行情况_车辆检测
14 MATLAB目标跟踪_matlab_目标检测_用matlab读取视频文件中的图像并对图像中的运动目标检测_运动目标检测_视频图像
15 MATLAB目标跟踪_matlab_目标检测_用matlab编写的一个三维雷达跟踪粒子滤波器_粒子滤波器_雷达跟踪_三维雷达
16 MATLAB目标跟踪_matlab_目标检测_用帧间差分法进行运动目标(人体)的检测matlab_帧差法_运动目标检测_人体检测
17 MATLAB目标跟踪_matlab_目标检测_实现对动态车辆的实时检测、跟踪和标记matlab(推荐)_动态车辆检测_车辆跟踪
18 MATLAB目标跟踪_matlab_目标检测_粒子滤波的多目标检测前跟踪程序matlab_例子滤波_多目标检测
19 MATLAB目标跟踪_matlab_目标检测_利用帧差法对视频中的行人进行检测和跟踪matlab_帧差法_行人检测_行人跟踪
20 MATLAB目标跟踪_matlab_目标检测_扩展卡尔曼滤波在跟踪运动轨迹中的应用(matlab)_扩展卡尔曼滤波_运动轨迹跟踪
21 MATLAB目标跟踪_matlab_目标检测_扩展卡尔曼滤波仿真中实现对雷达目标的跟踪matlab_EKF_雷达目标跟踪
22 MATLAB目标跟踪_matlab_目标检测_交互多模(IMM)卡尔曼滤波器机动目标跟踪_IMM_卡尔曼滤波_机动目标跟踪
23 MATLAB目标跟踪_matlab_目标检测_基于粒子滤波的雷达弱小点目标检测_粒子滤波_雷达目标检测_弱小点目标检测
24 MATLAB目标跟踪_matlab_目标检测_构造无迹卡尔曼滤波器(matlab)_无迹卡尔曼滤波
25 MATLAB目标跟踪_matlab_目标检测_背景差分建模运动目标检测和跟踪,附有一个实验视频(推荐)_背景差分法_目标跟踪
26 交互式多模型目标跟踪_UKF和EKF滤波_IMM雷达多目标跟踪_matlab
27 扩展卡尔曼滤波仿真中实现对雷达目标的跟踪_EKF_matlab
28 用matlab读取视频文件中的图像,并对图像中的运动目标检测,循环_matlab
29 目标跟踪_视觉分析_基于模型的行人跟踪_涉及底层视觉的高层视觉处理_行人跟踪_matlab
30 雷达CFAR恒虚警检测二维信号仿真_模拟目标距离_多普勒域信号检测_使用CA-CFAR进行二维检测_matlab
31 多目标车辆路径算法matlab程序_遗传算法_启发式算法_matlab
32 用背景差法对车流量进行检测_自适应能力强__判断有无车辆_完成车辆计数_实现车流量计算_虚拟线圈法_目标跟踪法_matlab源码

标签: cr1mt交流功率固态继电器cr1u系列特殊型固态继电器

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台