模式识别之目标跟踪---最简单的目标跟踪方法--------模板匹配与相关系数法

前言

  模板匹配和相关系数法是目标跟踪的经典方法,它的优点有很多:简单准确,适用面广,抗噪性好,而且计算速度快。缺点是不能适应剧烈光照变化和目标剧烈形变。

  所谓模板匹配法,就是指在一帧图像内寻找目标模板的位置,和模板最像的地方就是目标了。只要把全图的所有子区域和目标模板比较一下,找到最像目标模板的子区域,它就是目标的位置。如何度量子区域和目标模板的相似程度呢?最简单的办法就是计算这二者的相关系数。

相关系数

  相关系数(r)是一种数学距离,可以用来衡量两个向量的相似程度。它起源于余弦定理:cos(A)=(a2+c2-b2)/2bc.如果两个向量的夹角为0度(对应r=1),说明它们完全相似,如果夹角为90度(r=0),则它们完全不相似,如果夹角为180度(r=-1),则它们完全相反。把余弦定理写成向量的形式:

cos(A) = <b,c>/(|b|*|c|),

即:cos(A) = (b1c1+b2c2+… bncn)/sqrt[(b12+b22+…+bn2) (c12+c22+…+cn2)]

其中分子表示两个向量的内积,分母表示两个向量的模相乘。

在实际应用中,更常用的是去均值相关系数,它在上式的基础上还要在分子分母减去各个向量的均值:

这样,两个向量相似的部分被减掉,它们的相关性就被放大了。

假设目标模板是一个10*10的图像,它就可以被看作是一个100维的向量,每一维是一个像素点的灰度值。然后把这个向量和图像中的每一个子区域作比较,找出相关系数最大的子区域,目标的位置就找到了。

算法加速

按照上文的方法在一帧600*800的图像中寻找一个30*30的目标大概需要几秒的时间,还远远达不到实时性的要求。上式可以化简加速的地方有很多,将原式变形:

其中xi的求和,分母的左半部分都是一个常数,不必每次都算。分子的左边,yi求和,分母的右边可以通过intergral image的方法来加速。通过这些加速方法,算法的速度可以达到每帧100ms以内,但还是不能达到实时的标准。

搜索策略

   在搜索时,最笨的方法就是暴力式逐行遍历搜索,把图像中的每一个子区域都计算一遍。实际上目标往往只在一个非常小的区域出现,很多地方根本没必要计算。所以在搜索时,如果当前位置的相关系数小于一定阈值或者该位置离上一帧的目标中心很远的时候,搜索的步长可以加大,反之则减小搜索步长。

另一种搜索方法是以上一帧的目标中心为起点,以梯度下降的方法来搜索目标。该方法有一点需要注意,如果目标运动幅度较大,需要利用图像金字塔的方法搜索。

这两种方法都能够使算法的速度达到30ms以内。

模板大小

模板大小的确定往往是一个经验值,紧帖目标轮廓的模板或者包含太多背景的模板都不好,前者的模板太小,它对目标的变化太敏感,会很容易丢失目标。后者正相反,目标变化的时候算法却没有反应。一般而言,目标所占模板的比例在30%~50%为佳。

http://www.cnblogs.com/easymind223/archive/2012/08/14/2638015.html

时间: 2024-12-28 21:13:28

模式识别之目标跟踪---最简单的目标跟踪方法--------模板匹配与相关系数法的相关文章

模式识别—最邻近模板匹配法

简介 在模式识别中一个最基本的方法,就是模板匹配法(template matching),它基本上是一种统计识别方法.  为了在图像中检测出已知形状的目标物,我们使用这个目标物的形状模板(或窗口)与图像匹配,在约定的某种准则下检测出目标物图像,通常称其为模板匹配法.它能检测出图像中上线条.曲线.图案等等.它的应用包括:目标模板与侦察图像相匹配:文字识别和语音识别等. 原理 我们采用以下的算式来衡量模板T(m,n)与所覆盖的子图Sij(i,j)的关系,已知原始图像S(W,H),如图所示: 利用以下

目标跟踪之模板匹配---简单的模板匹配

一.概述 目标跟踪是计算机视觉领域的一个重要分支.研究的人很多,近几年也出现了很多很多的算法.大家看看淋漓满目的paper就知道了.但在这里,我们也聚焦下比较简单的算法,看看它的优势在哪里.毕竟有时候简单就是一种美. 在这里我们一起来欣赏下“模板匹配”这个简单点的跟踪算法.它的思想很简单,我们把要跟踪的目标保存好,然后在每一帧来临的时候,我们在整个图像中寻找与这个目标最相似的,我们就相信这个就是目标了.那如何判断相似呢?就用到了一些相关性的东西了,这个在我之前的一篇博文里面介绍过,大家可以参考下

最简单的目标跟踪(模版匹配)

一.概述 目标跟踪是计算机视觉领域的一个重要分支.研究的人很多,近几年也出现了很多很多的算法.大家看看淋漓满目的paper就知道了.但在这里,我们也聚焦下比较简单的算法,看看它的优势在哪里.毕竟有时候简单就是一种美. 在这里我们一起来欣赏下“模板匹配”这个简单点的跟踪算法.它的思想很简单,我们把要跟踪的目标保存好,然后在每一帧来临的时候,我们在整个图像中寻找与这个目标最相似的,我们就相信这个就是目标了.那如何判断相似呢?就用到了一些相关性的东西了,这个在我之前的一篇博文里面介绍过,大家可以参考下

语义分割(semantic segmentation) 常用神经网络介绍对比-FCN SegNet U-net DeconvNet,语义分割,简单来说就是给定一张图片,对图片中的每一个像素点进行分类;目标检测只有两类,目标和非目标,就是在一张图片中找到并用box标注出所有的目标.

from:https://blog.csdn.net/u012931582/article/details/70314859 2017年04月21日 14:54:10 阅读数:4369 前言 在这里,先介绍几个概念,也是图像处理当中的最常见任务. 语义分割(semantic segmentation) 目标检测(object detection) 目标识别(object recognition) 实例分割(instance segmentation) 语义分割 首先需要了解一下什么是语义分割(s

C++ Primer 学习笔记_29_操作符重载与转换(4)--转换构造函数和类型转换运算符归纳、operator new 和 operator delete 实现一个简单内存泄漏跟踪器

C++ Primer 学习笔记_29_操作符重载与转换(4)--转换构造函数和类型转换运算符归纳.operator new 和 operator delete 实现一个简单内存泄漏跟踪器 一.转换构造函数 可以用单个实参来调用的构造函数定义从形参类型到该类型的一个隐式转换.如下: class Integral { public: Integral (int = 0); //转换构造函数 private: int real; }; Integral A = 1; //调用转换构造函数将1转换为In

怎样设定目标(五)——设定目标失败的七大原因

为什么你制定了目标却仍然失败?也许失败已经让你觉得设定目标毫无用处,可是真的如此吗?那么,你有静下来想想为什么你的目标会失败呢?我想你很可能犯下了以下一些错误: 太多的长期.中期目标 你是否设定了太多的目标,并且天真地希望自己全部都能一一实现.这不是不可能,更多的目标意味着精力的分散,特别是当你拥有太多的长期目标和中期目标时. 学习一门新技能.减肥20公斤等等,这些都需要花费几个月才可能达到目标.如果你设定了太多诸如此类的大目标,你就会被到处牵着走,反而又变成没有目的性了.所以,建议你只留2-3

设计模式 之 简单工厂与工厂方法

    最近开始学习<大话设计模式>,作者以通俗的方式来讲解,还有故事情节,幽默的对白,给人耳目一新的感觉.非常喜欢作者的这种步步深入,循循善诱的方式.学习了就要总结,总结的时候自己也学着作者的方式,以自己生活中的小例子来实现我们的设计模式.下面就开始我们的第一讲<简单工厂和工厂方法>.     前两天带着一个老乡去吃饭,当然,作为一个四川人,去外边吃饭当然是点我们著名的川菜!下面先用简单工厂来实现一下: using System; using System.Collections

推荐一种简单易学的读书方法

推荐一种简单易学的读书方法 本文由有道云笔记推荐 前段时间我简单统计了一下,从大学毕业后到现在的6年多时间里,总共读了200多本书,平均1年读20-40本,范围涉及企业管理.营销.励志.传记.小说.历史.哲学等等.书读的多了,慢慢的也形成了一套自认为适合自己的读书方法,可以简单地用12个字进行概括:"定目标.列书单.读两遍.致运用".下面我会仔细地跟大家聊聊. 一.定目标(确定读书目标)人的时间和精力是有限的,因此读书.学习都存在成本.为了能够以最小的投入获得最大的产出,我们一定要先确

简单工厂模式\工厂方法模式

工厂模式 一.本节目标 我们本节课程主要介绍[工厂模式]的相关知识,将会涉及以下内容: 什么是工厂模式 工厂模式类图 工厂模式代码 工厂模式应用 PS:学习 Java 设计模式之前最好有一定的 Java 语言基础.由于讲这种东西其实比较枯燥,为了让大家学习起来轻松愉快一点,我会尽量使用一些生动.形象和幽默的例子. 二.什么是工厂模式 工厂模式(Factory Pattern)的意义就跟它的名字一样,在面向对象程序设计中,工厂通常是一个用来创建其他对象的对象.工厂模式根据不同的参数来实现不同的分配