计算机视觉的专家和网站

分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow

也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!

               

 目标跟踪是绝大多数视觉系统中不可或缺的环节。在二维视频跟踪算法中,基于目标颜色信息或基于目标运动信息等方法是常用的跟踪方法。从以往的研究中我们发现,大多数普通摄像头(彩色摄像头)下非基于背景建模的跟踪算法都极易受光照条件的影响。这是因为颜色变化在某种程度上是光学的色彩变化造成的。如基于体素和图像像素守恒假设的光流算法它也是假设一个物体的颜色在前后两帧没有巨大而明显的变化。

 但在特定的场景应用中(如视频监控等领域),不失有一些经典的跟踪算法可以实现较好的跟踪效果。以下主要介绍三种经典的跟踪算法:CamShift算法、光流跟踪以及粒子滤波算法。最后将给出一个各种跟踪方法间的比较。

1、  CamShift(Continuously Adaptive Mean Shift)跟踪算法

CamShift算法是一种基于均值漂移的算法。均值移动的理论基础是概率密度估计。均值移动的过程实际上就是在概率密度空间中寻找局部极大点。从其全称可知CamShift的算法基础实际上是MeanShift算法,均值移动的操作过程可用如下几步来表示:

(a)    计算以初始点x­0为中心的某一核窗所对应的均值移动向量mG(x0);

(b)    根据mG(x0)来移动核窗的中心位置,也即把mG(x0)中的加权平均值部分赋予x0,把x0作为新的初始点,并转回步骤(a);

(c)    重复(a)、(b)过程,直到满足某一预定的条件。

因此,均值移动过程就是寻找数据分布最密处的过程。

均值移动的实现过程可图示为:

  (1) 计算目标区域的均值、移动目标区域

  

  (2) 重新计算目标区域均值,还存在移动向量,继续移动目标区域

  

  (3) 移动向量越来越小

  

  

  (4)  找到局部极大点,停止移动

  

  

  以上过程只是一次MeanShift算法过程,在连续帧上使用MeanShift算法就是CamShift跟踪算法。CamShift同经典的均值移动跟踪算法的基本思想是相同的,所不同的它是建立在颜色概率分布图和矩的基础之上。CamShift对室内环境下的目标跟踪具有较高的鲁棒性。

1、  光流跟踪算法

将三维空间中的目标和场景对应于二维图像平面运动时,他们在二维图像平面的投影就形成了运动,这种运动以图像平面亮度模式表现出来的流动就称为光流。光流法是对运动序列图像进行分析的一个重要方法,光流不仅包含图像中目标的运动信息,而且包含了三维物理结构的丰富信息,因此可用来确定目标的运动情况以及反映图像其它等信息。

光流是空间运动物体在观测成像面上的像素运动的瞬时速度。光流的研究是利用图像序列中的像素强度数据的时域变化和相关性来确定各自像素位置的“运动”,即研究图像灰度在时间上的变化与景象中物体结构及其运动的关系。一般情况下,光流由相机运动、场景中目标运动或两者的共同运动产生。光流计算方法大致可分为三类:基于匹配的、频域的和梯度的方法。

  (1) 基于匹配的光流计算方法包括基于特征和基于区域两种。基于特征的方法不断地对目标主要特征进行定位和跟踪,对大目标的运动和亮度变化具有鲁棒性。存在的问题是光流通常很稀疏,而且特征提取和精确匹配也十分困难。基于区域的方法先对类似的区域进行定位,然后通过相似区域的位移计算光流。这种方法在视频编码中得到了广泛的应用。然而,它计算的光流仍不稠密。

  (2) 基于频域的方法利用速度可调的滤波组输出频率或相位信息。虽然能获得高精度的初始光流估计,但往往涉及复杂的计算。另外,进行可靠性评价也十分困难。

  (3) 基于梯度的方法利用图像序列的时空微分计算2D速度场(光流)。由于计算简单和较好的效果,基于梯度的方法得到了广泛的研究。虽然很多基于梯度的光流估计方法取得了较好的光流估计,但由于在计算光流时涉及到可调参数的人工选取、可靠性评价因子的选择困难,以及预处理对光流计算结果的影响,在应用光流对目标进行实时监测与自动跟踪时仍存在很多问题。

  光流法检测运动物体的基本原理是:给图像中的每一个像素点赋予一个速度矢量,这就形成了一个图像运动场,在运动的一个特定时刻,图像上的点与三维物体上的点一一对应,这种对应关系可由投影关系得到,根据各个像素点的速度矢量特征,可以对图像进行动态分析。如果图像中没有运动物体,则光流矢量在整个图像区域是连续变化的。当图像中有运动物体时,目标和图像背景存在相对运动,运动物体所形成的速度矢量必然和邻域背景速度矢量不同,从而检测出运动物体及位置。采用光流法进行运动物体检测的问题主要在于大多数光流法计算耗时,实时性和实用性都较差。但是光流法的优点在于光流不仅携带了运动物体的运动信息,而且还携带了有关景物三维结构的丰富信息,它能够在不知道场景的任何信息的情况下,检测出运动对象。

  

  对于视频监控系统来说,所用的图像基本都是摄像机静止状态下摄取得,所以对有实时性和准确性要求的系统来说,纯粹使用光流法来检测目标不太实际。更多的是利用光流计算方法与其它方法相结合来实现对目标检测和运动估计。

  然而,在实际应用中,由于遮挡性、多光源、透明性和噪声等原因,使得光流场基本方程的灰度守恒假设条件不能满足,不能求解出正确的光流场,同时大多数的光流计算方法相当复杂,计算量巨大,不能满足实时的要求,因此,一般不被对精度和实时性要求比较高的监控系统所采用。

3、  粒子滤波跟踪算法

粒子滤波算法有很多变种,以Rob Hess实现的这种最基本的粒子滤波算法为例。它的核心思想是随机采样和重要性重采样。在不知道目标在哪里的情况下,随机向场景中分散粒子,撒完粒子后,根据特征相似度计算每个粒子的重要性,然后在重要的地方多撒粒子,不重要的地方少撒粒子。所以说粒子滤波较之蒙特卡洛滤波计算量较小。这种思想虽然简单,但效果往往很好。

粒子滤波实现对目标的跟踪通常分以下四个步骤:

(1)    初始化阶段-提取跟踪目标特征

该阶段要人工指定跟踪目标,程序计算跟踪目标的特征,比如可以采用目标的颜色特征。这点和CamShift算法类似,不能实现自动初始化。但我们可以在初始时给定一个颜色样本,实现程序的半自动初始化。然后计算该区域色调(Hue)空间的直方图,即为目标的特征。直方图可以用一个向量来表示,所以目标特征就是一个N*1的向量V。

(2)    搜索阶段—分撒搜索粒子

获取目标特征后,在场景中分撒许多搜索粒子去搜索目标对象。粒子分撒有许多种方式。比如,a) 均匀分撒。即在整个图像平面均匀的撒粒子(uniform distribution);b)在上一帧得到的目标附近按照高斯分布来放,可以理解成,靠近目标的地方多放,远离目标的地方少放。Rob Hess的代码用的是后一种方法。粒子放出去后按照初始化阶段得到的目标特征(色调直方图,向量V)计算它所处的位置处图像的颜色特征,得到一个色调直方图,向量Vi,计算该直方图与目标直方图的相似性(直方图匹配)。相似性有多种度量,最简单的一种是计算sum(abs(Vi-V))。每个粒子算出相似度后再做一次归一化,使得所有的粒子得到的相似度加起来等于1。

(3)      决策阶段

分撒出去的每个粒子将返回其所处位置的图像信息。比如,“一号粒子处图像与目标的相似度是0.3”,“二号粒子处图像与目标的相似度是0.02”,“三号粒子处图像与目标的相似度是0.0003”,“N号粒子处图像与目标的相似度是0.013”然后做加权平均。设N号粒子的图像像素坐标是(Xn,Yn),它报告的相似度是Wn,于是目标最可能的像素坐标X = sum(Xn*Wn),Y = sum(Yn*Wn)。

(4)      重采样阶段Resampling

在新的一帧图像里,为了搜索到目标的新位置,需要再分撒粒子进行搜索。但现在应该怎样分撒呢?这要根据上一帧各个粒子返回的相似度报告。比如,“一号粒子处图像与目标的相似度是0.3”,“二号粒子处图像与目标的相似度是0.02”,“三号粒子处图像与目标的相似度是0.0003”,“N号粒子处图像与目标的相似度是0.013”。综合所有粒子的报告,一号粒子处的相似度最高,三号粒子处的相似度最低,于是要重新分撒粒子,在相似度最高的粒子那里放更多条粒子,在相似度最低的粒子那里少放粒子,甚至把原来那条粒子也撤回来。这就是Sampling Importance Resampling,根据重要性重采样(更具重要性重新放粒子)。

(2)->(3)->(4)->(2)如是反复循环,即完成了目标的动态跟踪。

       粒子滤波跟踪算法可用于视频监控领域,可以跟踪速度较快的跟踪目标。

 

4、  其他跟踪算法及优缺点

  将其他一些常用的跟踪算法及优缺点形成了一个表,其原理不做赘述,可参阅相关文献。

  

local orientation correlation (LOC) , flocks of features tracking (FF) , optical flow tracking using templates on a regular grid (OF) and local feature tracking, KLT-tracker(KLT) , and boosted detection (BD).

 

参考

[1] 《基于均值移动的人脸跟踪简介》 未公开

[2] http://kb.cnblogs.com/a/1742263/

[3] AIDIA – Adaptive Interface for Display Interaction

[4] http://baike.baidu.com/view/2810997.htm

分类:  目标跟踪
posted @ 2012-04-18 16:05 Hanson-jun 阅读(68) 评论(0)  编辑
 

cvchina搞到的机器视觉开源处理库汇总,转来了,很给力,还在不断更新。。。

通用库/General Library

无需多言。

Recognition And Vision Library. 线程安全。强大的IO机制。包含AAM。

很酷的一个图像处理包。整个库只有一个头文件。包含一个基于PDE的光流算法。

图像,视频IO/Image, Video IO

AR相关/Augmented Reality

基于Marker的AR库

ARToolKit的增强版。实现了更好的姿态估计算法。

实时的跟踪、SLAM、AR库。无需Marker,模板,内置传感器等。

基于特征点检测和识别的AR库。

局部不变特征/Local Invariant Feature

目前最好的Sift开源实现。同时包含了KD-tree,KD-Forest,BoW实现。

基于Naive Bayesian Bundle的特征点识别。高速,但占用内存高。

基于OpenCV的Sift实现。

目标检测/Object Detection

又一个AdaBoost实现。训练速度快。

基于Centrist和Linear SVM的快速行人检测。

(近似)最近邻/ANN

目前最完整的(近似)最近邻开源库。不但实现了一系列查找算法,还包含了一种自动选取最快算法的机制。

另外一个近似最近邻库。

SLAM & SFM

monoSLAM库。由Androw Davison开发。

图像分割/Segmentation

使用Simple Linear Iterative Clustering产生指定数目,近似均匀分布的Super Pixel。

目标跟踪/Tracking

基于Online Random Forest的目标跟踪算法。

Kanade-Lucas-Tracker

Online Boosting Trackers

直线检测/Line Detection

基于联通域连接的直线检测算法。

基于梯度的,局部直线段检测算子。

指纹/Finger Print

基于感知的多媒体文件Hash算法。(提取,对比图像、视频、音频的指纹)

视觉显著性/Visual Salience

Ming-Ming Cheng的视觉显著性算法。

FFT/DWT

最快,最好的开源FFT。

轻量级的FFT实现。许可证是亮点。

音频处理/Audio processing

音频处理,音频合成。

音频文件IO。

音频重采样。

小波变换

快速小波变换(FWT)

BRIEF: Binary Robust Independent Elementary Feature 一个很好的局部特征描述子,里面有FAST corner + BRIEF实现特征点匹配的DEMO:http://cvlab.epfl.ch/software/brief/

http://code.google.com/p/javacv


Java打包的OpenCV, FFmpeg, libdc1394, PGR FlyCapture, OpenKinect, videoInput, and ARToolKitPlus库。可以放在Android上用~

 

libHIK,HIK SVM,计算HIK SVM跟Centrist的Lib。http://c2inet.sce.ntu.edu.sg/Jianxin/projects/libHIK/libHIK.htm

 

一组视觉显著性检测代码的链接:http://cg.cs.tsinghua.edu.cn/people/~cmm/saliency/

 

 

分类:  编码杂记
posted @ 2012-04-18 16:05 Hanson-jun 阅读(175) 评论(0)  编辑
 

不规则物体形状匹配综述

 

  物体识别是计算机视觉应用的一项基本任务。识别通常基于目标物体的灰度信息、颜色信息或形状信息。物体识别的目的就是要找到一个包含可以区分不同目标物体的有效信息的描述。由于要识别的物体是事先知道的,所以目标物体的几何特征可以被直接应用到识别任务中。

  不规则物体的形状匹配是一种有效的利用物体几何特征进行识别的方法。根据匹配对象的不同,可以将不规则物体的形状匹配分为基于区域的匹配方法和基于轮廓的匹配方法。

一、基于轮廓特征的形状匹配

  基于轮廓特征的形状匹配在实际中更为常用,这主要有两方面的原因:一是基于轮廓特征的匹配计算量小,可以较好的满足实时性要求;二是要识别的目标物通常是预先知道的,那么它的几何信息完全可以被用于识别过程中。为了识别不规则物体,主要任务就是设计一种基于(少量的)目标物几何约束先验知识的有效匹配方法。

1.   链码直方图(chain code histogram)

  链码直方图将人眼看上去相似的物体归为一类。因此利用它不能进行精确的识别和分类。

  方向链码(Freeman链码)是用来表示物体轮廓的典型链码表示法。一条离散曲线可以定义为Z2域内一组数量有限的8联通点。因此,一条数字化二值曲线可以用方向链码表示方向链码是相邻两像素连线的8种可能的方向值。一条曲线被网格离散化后形成n个链码方向,最终此曲线链码可表示为{ai}n,每条链指向8个方向重的一个方向,ai={0,1,2,3,4,5,6,7},i为像素的索引值,ai是由像素(i)指向像素(i+1)的方向链码。

  链码直方图的计算简单而且快速。计算公式如下:

    

  其中,nk是一个链码中链码值k的数目,n是一个链码中的节点数。

  

     (a)编码的方向示意,(b)简单物体形状,(c)形状的链码表示,(d)链码直方图

  链码法的特点:

  (1) 计算量小,可满足实时性要求;

  (2) 具有平移、尺度不变性;

  (3) 具有90度旋转不变性;

  (4) 规格化链码直方图可以达到更好的旋转不变性。

2.   成对几何直方图(Pairwise Geometric Histogram)

  成对几何直方图通过相对角和相对位置特征来描述目标轮廓,并采用关系直方图统计这对几何特征来进行形状索引。采用这种编码方式需要具备一定的前提,即对于一个不规则物体我们可以将其近似为一个几何多边形。这种编码方法可以很好地描述一个多边形物体。

   将不规则形状近似为多边形,并将其定义为边缘点的集合。这样它所包含的轮廓边缘(线段)就可以由连续的边缘点来表示。接下来我们计算多边形的PGH:将每一个轮廓边缘视为其方向上的基准线,那么它与其他轮廓边缘间的相对角 以及最大最小垂直距离(dmin和dmax)可以被计算出来。边缘之间的角度定义了直方图的行,然后在其中增加对应的计算出来的最大和最小距离的所有直方块,就得到了当前多边形的PGH。

  它具有如下特点:

  (1) 计算简单,可满足实时性要求;

  (2) 具有平移、尺度不变性;

  (3) 具有360度旋转不变性。

3.   简单形状描述符的结合(Combination of Simple Shape Descriptors)

  如图,它们是几种简单的形状描述符,分别代表了凹凸性、主轴、致密性、差异性和椭圆差异性。

  凹凸性:轮廓凸包周长与原轮廓周长的比率。(所有凸起的覆盖轮廓称为凸包)

  主轴:过物体质心的正交轴,主轴之间的比例可以由物体轮廓的协方差矩阵计算出来

  致密性:物体区域面积与等面积的正方形周长的比例,也可以是圆。

  差异性:表现为与模板比较的比例均方误差。

   

  单独用这几种简单描述符的任何一种来表示形状进行匹配,都不能达到较好的匹配结果。但是如果我们将这五种简单形状描述符进行结合,同时用它们来描述一个形状,那么这个形状的描述信息就非常丰富了,匹配的结果也会很好。

这种形状描述方式具有如下的特点:

  (1) 单独的任何一种简单描述符都不能用于精确识别物体,但是多种简单描述符的结合可以达到很高的识别效率;

  (2) 计算简单,可以达到实时性;

  (3) 具有平移、尺度不变性;

  (4) 理论上360度旋转不变性。

4.   基于hausdorff距离的形状匹配

  Hausdorff距离用来计算两个点集之间的匹配程度。给定两个有限集A={a1,a2,…,ap}和B={b1,b2,…,bq},A,B之间的Hausdorff距离定义如下:

  

  其中:

  

  

  Hausdorff距离H(A,B)取h(A,B)和h(B,A)的最大值,这样通过计算h(A,B)和h(B,A)就可以获得两个点集A,B之间的匹配程度。

  

  为了减少计算量,可以取角点进行匹配。但这样匹配率将降低。基于hausdorff距离的形状匹配的特点;

  (1) 对每个边缘点进行hausdorff距离计算,计算量稍大,但对不是过于复杂的轮廓(如小尺寸轮廓),可以满足实时性;

  (2) 具有平移、尺度不变性;

  (3) 具有旋转不变性;

二、基于区域特征的形状匹配

  基于不变矩的形状匹配是典型的基于区域的匹配方法。其中,基于Hu不变矩的形状匹配应用最为广泛。

      图像的矩函数在模式识别、目标分类中得到了广泛的应用。在1961年首先基于代数不变量引入矩不变量。通过对几何矩的非线性组合,导出了一组对于图像平移、尺度、旋转变化不变的矩,这种矩就成为Hu矩。

       一幅大小为M×N的二维图像其中(p+q)阶矩:

 

对于二值图像,其零阶矩就是该形状区域的面积。因此,将面积归一化,每一个图像矩除以零阶矩得到的商具有形状的尺度变化无关性。

  求图像的p+q阶中心矩,面积归一化,使得具有平移、尺度不变性。

  (1)

  (2)

  计算图像的7个面积归一化的中心矩,{m11,m02,m20,m21,m12,m03,m30}Hu不变矩是关于这7个矩的函数。具有平移、旋转和尺度不变性。

  

  彩色图像Hu不变矩的计算流程如下:

  

  基于Hu矩的形状匹配所具有的特点:

  (1) Hu不变矩只能用于对区域的检测,不能用于边界的检测,但由于计算简单,计算量不大,可以满足实时性;

  (2) 具有平移、尺度不变性;

  (3) 具有旋转不变性。

三、匹配方法间的比较

  

  

  CCH(链码直方图):是一种基于轮廓匹配方法。具有较强的平移不变性,尺度不变性一般,具有90度的旋转不变性。由于编码简单,执行速度快。计算量和所需内存都较小,适合差别明显的物体,对平滑和非平滑物体的识别并不明显;

  PGH(成对几何直方图):是一种基于轮廓匹配方法。具有较强的平移不变性和尺度不变性,具有360度的旋转不变性。执行速度快,可以较好地识别多边形物体和部分自封闭的物体,由于它的计算过程,对非多边形物体的识别可能会浪费计算量;

  CFSS(五种简单形状描述符结合):是一种基于轮廓匹配方法。具有较强的平移不变性和尺度不变性,具有360度的旋转不变性。执行速度处于CCH方法和PGH方法之间。识别率与PGH相当,但是比它需要更少的计算时间和内存。

  HAUSDORFF距离:是一种基于轮廓匹配方法。具有较强的平移不变性,但是尺度不变性和旋转不变性都较差。由于处理的数据维数较多,执行效率是这五种方法中最慢的一个。可用于匹配部分重和形状物体。

  Hu不变矩:是一种基于区域的形状匹配方法。具有较强的平移、尺度和旋转不变性,其中旋转不变性为360度。但由于匹配的数据量大,执行速度较慢。适合于进行一些更精确的匹配。

分类:  目标识别
posted @ 2012-04-18 16:04 Hanson-jun 阅读(42) 评论(0)  编辑
 

一、简单介绍

Hough变换是图像处理中从图像中识别几何形状的基本方法之一。Hough变换的基本原理在于利用点与线的对偶性,将原始图像空间的给定的曲线通过曲线表达形式变为参数空间的一个点。这样就把原始图像中给定曲线的检测问题转化为寻找参数空间中的峰值问题。也即把检测整体特性

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值