目标跟踪是大多数视觉系统中不可或缺的环节。基于目标颜色信息或基于目标运动信息的二维视频跟踪算法是常用的跟踪方法。在以往的研究中,我们发现大多数普通摄像头(彩色摄像头)下非基于背景建模的跟踪算法都很容易受到光照条件的影响。这是因为颜色变化是由光学颜色变化引起的。假设基于体素和图像素守恒的光流算法也假设一个物体的颜色在前后帧中没有巨大而明显的变化。
但在特定的场景应用(如视频监控)中,有一些经典的跟踪算法可以达到更好的跟踪效果。以下主要介绍了三种经典的跟踪算法:CamShift算法、光流跟踪和粒子滤波算法。最后,对各种跟踪方法进行比较。
1、 CamShift()跟踪算法
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) 利用图像序列的时空微分计算基于梯度的方法D速度场(光流)。基于梯度的方法因其计算简单、效果好而得到了广泛的研究。虽然许多基于梯度的光流估计方法都取得了良好的光流估计,但在实时监测和自动跟踪目标时仍存在许多问题。
光流法检测运动物体的基本原理是给图像中的每个像素点一个速度矢量,形成一个图像操场。在运动的特定时刻,图像上的点与三维物体上的点一一对应。这种对应关系可以通过投影关系获得,图像可以根据每个像素点的速度矢量特征进行动态分析。若图像中没有运动物体,则光流矢量在整个图像区域不断变化。当图像中有运动物体时,目标和图像背景是相对运动的,运动物体形成的速度矢量必须不同于相邻的背景速度矢量,以检测运动物体和位置。运动物体检测采用光流法的主要问题是大多数光流法计算耗时,实时性和实用性差。然而,光流法的优点是,光流不仅携带运动对象的运动信息,而且携带丰富的风景三维结构信息,可以检测运动对象而不知道任何场景信息。
对于视频监控系统来说,使用的图像基本上是在相机静止状态下获取的,因此对于具有实时性和准确性要求的系统来说,单纯使用光流法来检测目标是不现实的。更多的是利用光流计算方法与其他方法相结合,实现目标检测和运动估计。
然而,在实际应用中,由于屏蔽、多光源、透明度和噪声,光流场基本方程灰度守恒假设条件不能满足,不能解决正确的光流场,大多数光流计算方法相当复杂,计算量大,不能满足实时要求,因此一般不采用精度和实时监控系统。
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.三、二号粒子图像与目标的相似性为0.02,三号粒子图像与目标的相似性为0.0003”,“N图像与目标的相似性为0.然后做加权平均。图像素坐标像素坐标是(Xn,Yn),其报告的相似性为Wn,于是目标最可能的像素坐标X = sum(Xn*Wn),Y = sum(Yn*Wn)。
(4) 重采样阶段Resampling
在新帧图像中,为了搜索目标的新位置,需要分散粒子进行搜索。但是现在该怎么分散呢?根据上一帧各粒子返回的相似性报告。例如,一号粒子图像与目标的相似性为0.三、二号粒子图像与目标的相似性为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
从cvchina搞到的机器视觉开源处理库汇总,转来了,很给力,还在不断更新。。。
通用库/General Library
- OpenCV
无需多言。
- RAVL
Recognition And Vision Library. 线程安全。强大的IO机制。包含AAM。
- CImg
很酷的一个图像处理包。整个库只有一个头文件。包含一个基于PDE的光流算法。
图像,视频IO/Image, Video IO
- FreeImage
- DevIL
- ImageMagick
- FFMPEG
- VideoInput
- portVideo
AR相关/Augmented Reality
- ARToolKit
基于Marker的AR库
- ARToolKitPlus
ARToolKit的增强版。实现了更好的姿态估计算法。
- PTAM
实时的跟踪、SLAM、AR库。无需Marker,模板,内置传感器等。
- BazAR
基于特征点检测和识别的AR库。
局部不变特征/Local Invariant Feature
- VLFeat
目前最好的Sift开源实现。同时包含了KD-tree,KD-Forest,BoW实现。
- Ferns
基于Naive Bayesian Bundle的特征点识别。高速,但占用内存高。
- SIFT By Rob Hess
基于OpenCV的Sift实现。
目标检测/Object Detection
- AdaBoost By JianXin.Wu
又一个AdaBoost实现。训练速度快。
- 行人检测 By JianXin.Wu
基于Centrist和Linear SVM的快速行人检测。
(近似)最近邻/ANN
- FLANN
目前最完整的(近似)最近邻开源库。不但实现了一系列查找算法,还包含了一种自动选取最快算法的机制。
- ANN
另外一个近似最近邻库。
SLAM & SFM
- SceneLib [LGPL]
monoSLAM库。由Androw Davison开发。
图像分割/Segmentation
- SLIC Super Pixel
使用Simple Linear Iterative Clustering产生指定数目,近似均匀分布的Super Pixel。
目标跟踪/Tracking
- TLD
基于Online Random Forest的目标跟踪算法。
- KLT
Kanade-Lucas-Tracker
- Online boosting trackers
Online Boosting Trackers
直线检测/Line Detection
- DSCC
基于联通域连接的直线检测算法。
- LSD [GPL]
基于梯度的,局部直线段检测算子。
指纹/Finger Print
- pHash [GPL]
基于感知的多媒体文件Hash算法。(提取,对比图像、视频、音频的指纹)
视觉显著性/Visual Salience
- Global Contrast Based Salient Region Detection
Ming-Ming Cheng的视觉显著性算法。
标签 fft 下的日志" class="st_tag internal_tag" href="http://www.cvchina.info/tag/fft/" target="_blank" rel="noopener noreferrer">FFT/DWT
- FFTW [GPL]
最快,最好的开源FFT。
- FFTReal [WTFPL]
轻量级的FFT实现。许可证是亮点。
音频处理/Audio processing
- STK [Free]
音频处理,音频合成。
- libsndfile [LGPL]
音频文件IO。
- libsamplerate [GPL ]
音频重采样。
快速小波变换(FWT)
- 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/
物体识别是计算机视觉应用的一项基本任务。识别通常基于目标物体的灰度信息、颜色信息或形状信息。物体识别的目的就是要找到一个包含可以区分不同目标物体的有效信息的描述。由于要识别的物体是事先知道的,所以目标物体的几何特征可以被直接应用到识别任务中。
不规则物体的形状匹配是一种有效的利用物体几何特征进行识别的方法。根据匹配对象的不同,可以将不规则物体的形状匹配分为基于区域的匹配方法和基于轮廓的匹配方法。
基于轮廓特征的形状匹配在实际中更为常用,这主要有两方面的原因:一是基于轮廓特征的匹配计算量小,可以较好的满足实时性要求;二是要识别的目标物通常是预先知道的,那么它的几何信息完全可以被用于识别过程中。为了识别不规则物体,主要任务就是设计一种基于(少量的)目标物几何约束先验知识的有效匹配方法。
1.
链码直方图将人眼看上去相似的物体归为一类。因此利用它不能进行精确的识别和分类。
方向链码(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) 规格化链码直方图可以达到更好的旋转不变性。
成对几何直方图通过相对角和相对位置特征来描述目标轮廓,并采用关系直方图统计这对几何特征来进行形状索引。采用这种编码方式需要具备一定的前提,即对于一个不规则物体我们可以将其近似为一个几何多边形。这种编码方法可以很好地描述一个多边形物体。
将不规则形状近似为多边形,并将其定义为边缘点的集合。这样它所包含的轮廓边缘(线段)就可以由连续的边缘点来表示。接下来我们计算多边形的PGH:将每一个轮廓边缘视为其方向上的基准线,那么它与其他轮廓边缘间的相对角 以及最大最小垂直距离(dmin和dmax)可以被计算出来。边缘之间的角度定义了直方图的行,然后在其中增加对应的计算出来的最大和最小距离的所有直方块,就得到了当前多边形的PGH。
它具有如下特点:
(1) 计算简单,可满足实时性要求;
(2) 具有平移、尺度不变性;
(3) 具有360度旋转不变性。
3.
如图,它们是几种简单的形状描述符,分别代表了凹凸性、主轴、致密性、差异性和椭圆差异性。
凹凸性:轮廓凸包周长与原轮廓周长的比率。(所有凸起的覆盖轮廓称为凸包)
主轴:过物体质心的正交轴,主轴之间的比例可以由物体轮廓的协方差矩阵计算出来
致密性:物体区域面积与等面积的正方形周长的比例,也可以是圆。
差异性:表现为与模板比较的比例均方误差。
单独用这几种简单描述符的任何一种来表示形状进行匹配,都不能达到较好的匹配结果。但是如果我们将这五种简单形状描述符进行结合,同时用它们来描述一个形状,那么这个形状的描述信息就非常丰富了,匹配的结果也会很好。
这种形状描述方式具有如下的特点:
(1) 单独的任何一种简单描述符都不能用于精确识别物体,但是多种简单描述符的结合可以达到很高的识别效率;
(2) 计算简单,可以达到实时性;
(3) 具有平移、尺度不变性;
(4) 理论上360度旋转不变性。
4.
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度。但由于匹配的数据量大,执行速度较慢。适合于进行一些更精确的匹配。
一、简单介绍
Hough变换是图像处理中从图像中识别几何形状的基本方法之一。Hough变换的基本原理在于利用点与线的对偶性,将原始图像空间的给定的曲线通过曲线表达形式变为参数空间的一个点。这样就把原始图像中给定曲线的检测问题转化为寻找参数空间中的峰值问题。也即把检测整体特性转化为检测局部特性。比如直线、椭圆、圆、弧线等。
二、Hough变换的基本思想
设已知一黑白图像上画了一条直线,要求出这条直线所在的位置。我们知道,直线的方程可以用y=k*x+b 来表示,其中k和b是参数,分别是斜率和截距。过某一点(x0,y0)的所有直线的参数都会满足方程y0=kx0+b。即点(x0,y0)确定了一族直线。方程y0=kx0+b在参数k--b平面上是一条直线,(你也可以是方程b=-x0*k+y0对应的直线)。这样,图像x--y平面上的一个前景像素点就对应到参数平面上的一条直线。我们举个例子说明解决前面那个问题的原理。设图像上的直线是y=x, 我们先取上面的三个点:A(0,0), B(1,1), C(22)。可以求出,过A点的直线的参数要满足方程b=0, 过B点的直线的参数要满足方程1=k+b, 过C点的直线的参数要满足方程2=2k+b, 这三个方程就对应着参数平面上的三条直线,而这三条直线会相交于一点(k=1,b=0)。 同理,原图像上直线y=x上的其它点(如(3,3),(4,4)等) 对应参数平面上的直线也会通过点(k=1,b=0)。这个性质就为我们解决问题提供了方法,就是把图像平面上的点对应到参数平面上的线,最后通过统计特性来解决问题。假如图像平面上有两条直线,那么最终在参数平面上就会看到两个峰值点,依此类推。
简而言之,Hough变换思想为:在原始图像坐标系下的一个点对应了参数坐标系中的一条直线,同样参数坐标系的一条直线对应了原始坐标系下的一个点,然后,原始坐标系下呈现直线的所有点,它们的斜率和截距是相同的,所以它们在参数坐标系下对应于同一个点。这样在将原始坐标系下的各个点投影到参数坐标系下之后,看参数坐标系下有没有聚集点,这样的聚集点就对应了原始坐标系下的直线。
在实际应用中,y=k*x+b形式的直线方程没有办法表示x=c形式的直线(这时候,直线的斜率为无穷大)。所以实际应用中,是采用参数方程p=x*cos(theta)+y*sin(theta)。这样,图像平面上的一个点就对应到参数p---theta平面上的一条曲线上,其它的还是一样。
三、Hough变换推广
1、已知半径的圆
其实Hough变换可以检测任意的已知表达形式的曲线,关键是看其参数空间的选择,参数空间的选择可以根据它的表达形式而定。比如圆的表达形式为 ,所以当检测某一半径的圆的时候,可以选择与原图像空间同样的空间作为参数空间。那么圆图像空间中的一个圆对应了参数空间中的一个点,参数空间中的一个点对应了图像空间中的一个圆,圆图像空间中在同一个圆上的点,它们的参数相同即a,b相同,那么它们在参数空间中的对应的圆就会过同一个点(a,b),所以,将原图像空间中的所有点变换到参数空间后,根据参数空间中点的聚集程度就可以判断出图像空间中有没有近似于圆的图形。如果有的话,这个参数就是圆的参数。
2、未知半径的圆
对于圆的半径未知的情况下,可以看作是有三个参数的圆的检测,中心和半径。这个时候原理仍然相同,只是参数空间的维数升高,计算量增大。图像空间中的任意一个点都对应了参数空间中的一簇圆曲线。 ,其实是一个圆锥型。参数空间中的任意一个点对应了图像空间中的一个圆。
3、椭圆
椭圆有5个自由参数,所以它的参数空间是5维的,因此他的计算量非常大,所以提出了许多的改进算法。
四、总结
图像空间中的在同一个圆,直线,椭圆上的点,每一个点都对应了参数空间中的一个图形,在图像空间中这些点都满足它们的方程这一个条件,所以这些点,每个投影后得到的图像都会经过这个参数空间中的点。也就是在参数空间中它们会相交于一点。所以,当参数空间中的这个相交点的越大的话,那么说明元图像空间中满足这个参数的图形越饱满。越象我们要检测的东西。
Hough变换能够查找任意的曲线,只要你给定它的方程。Hough变换在检验已知形状的目标方面具有受曲线间断影响小和不受图形旋转的影响的优点,即使目标有稍许缺损或污染也能被正确识别。
转自:http://blog.csdn.net/icerain_3321/article/details/1665280
OpenCV是Intel®开源计算机视觉库。它由一系列 C 函数和少量 C++ 类构成,实现了图像处理和计算机视觉方面的很多通用算法。 OpenCV 拥有包括 300 多个C函数的跨平台的中、高层 API。它不依赖于其它的外部库——尽管也可以使用某些外部库。 OpenCV 对非商业... |
faceservice.cgi 是一个用来进行人脸识别的 CGI 程序, 你可以通过上传图像,然后该程序即告诉你人脸的大概坐标位置。faceservice是采用 OpenCV 库进行开发的。 |
OpenCVDotNet 是一个 .NET 对 OpenCV 包的封装。 |
jViolajones是人脸检测算法Viola-Jones的一个Java实现,并能够加载OpenCV XML文件。 示例代码:http://www.oschina.net/code/snippet_12_2033 |
JavaCV 提供了在计算机视觉领域的封装库,包括:OpenCV、ARToolKitPlus、libdc1394 2.x 、PGR FlyCapture和FFmpeg。此外,该工具可以很容易地使用Java平台的功能。 JavaCV还带有硬件加速的全屏幕图像显示(CanvasFrame),易于在多个内核中执行并行代码(并... |
QMotion 是一个采用 OpenCV 开发的运动检测程序,基于 QT。 |
OpenVSS - 开放平台的视频监控系统 - 是一个系统级别的视频监控软件视频分析框架(VAF)的视频分析与检索和播放服务,记录和索引技术。它被设计成插件式的支持多摄像头平台,多分析仪模块(OpenCV的集成),以及多核心架构。 |
手势识别,用OpenCV实现 |
提供人脸检测、识别与检测特定人脸的功能,示例代码 cvReleaseImage( &gray ); cvReleaseMemStorage(&storage); cvReleaseHaarClassifierCascade(&cascade);... |
Active Shape Model Library (ASMLibrary©) SDK, 用OpenCV开发,用于人脸检测与跟踪。 |
ECV 是 lua 的计算机视觉开发库(目前只提供linux支持) |
OpenCVSharp 是一个OpenCV的.Net wrapper,应用最新的OpenCV库开发,使用习惯比EmguCV更接近原始的OpenCV,有详细的使用样例供参考。 |
基于OpenCV构建的图像处理和3D视觉库。 示例代码: ImageSequenceReaderFactory factory; ImageSequenceReader* reader = factory.pathRegex("c:/a/im_%03d.jpg", 0, 20); //ImageSequenceReader* reader = factory.avi("a.avi"); if (reader == NULL) { ... |
基于 QT 的面向对象的多平台计算机视觉库。可以方便的创建图形化应用程序,算法库主要从 OpenCV,GSL,CGAL,IPP,Octave 等高性能库借鉴而来。 |
cvBlob 是计算机视觉应用中在二值图像里寻找连通域的库.能够执行连通域分析与特征提取. |
GShow is a real-time image/video processing filter development kit. It successfully integrates DirectX11 with DirectShow framework. So it has the following features: GShow 是实时 图像/视频 处理滤波开发包,集成DiretX11。... |
VideoMan 提供一组视频捕获 API 。支持多种视频流同时输入(视频传输线、USB摄像头和视频文件等)。能利用 OpenGL 对输入进行处理,方便的与 OpenCV,CUDA 等集成开发计算机视觉系统。 |
Pattern Recognition project(开放模式识别项目),致力于开发出一套包含图像处理、计算机视觉、自然语言处理、模式识别、机器学习和相关领域算法的函数库。 |
OpenCV的Python封装,主要特性包括: 提供与OpenCV 2.x中最新的C++接口极为相似的Python接口,并且包括C++中不包括的C接口 提供对OpenCV 2.x中所有主要部件的绑定:CxCORE (almost complete), CxFLANN (complete), Cv (complete), CvAux (C++ part almost... |
计算机视觉快速开发平台,提供测试框架,使开发者可以专注于算法研究。 |
对函数库v412的封装,从网络摄像头等硬件获得图像数据,支持YUYV裸数据输出和BGR24的OpenCV IplImage输出 |
OpenVIDIA projects implement computer vision algorithms running on on graphics hardware such as single or multiple graphics processing units(GPUs) using OpenGL, Cg and CUDA-C. Some samples will soon support OpenCL and Direct Compute API'... |
实现了基于混合高斯模型的点集配准算法,该算法描述在论文: A Robust Algorithm for Point Set Registration Using Mixture of Gaussians, Bing Jian and Baba C. Vemuri. ,实现了C++/Matlab/Python接口... |
Recognition And Vision Library (RAVL) 是一个通用 C++ 库,包含计算机视觉、模式识别等模块。 |
LTI-Lib 是一个包含图像处理和计算机视觉常用算法和数据结构的面向对象库,提供 Windows 下的 VC 版本和 Linux 下的 gcc 版本,主要包含以下几方面内容: 1、线性代数 2、聚类分析 3、图像处理 4、可视化和绘图工具 |
优化了OpenCV库在DSP上的速度。 |
Integrating Vision Toolkit (IVT) 是一个强大而迅速的C++计算机视觉库,拥有易用的接口和面向对象的架构,并且含有自己的一套跨平台GUI组件,另外可以选择集成OpenCV |
The Epipolar Geometry Toolbox (EGT) is a toolbox designed for Matlab (by Mathworks Inc.). EGT provides a wide set of functions to approach computer vision and robotics problems with single and multiple views, and with different vision se... |
ImageNets 是对OpenCV 的扩展,提供对机器人视觉算法方面友好的支持,使用Nokia的QT编写界面。 |
视频处理、计算机视觉和计算机图形学的快速开发库。 |
Matlab 的计算机视觉包,包含用于观察结果的 GUI 组件,貌似也停止开发了,拿来做学习用挺不错的。 |
SIP 是 Scilab(一种免费的类Matlab编程环境)的图像处理和计算机视觉库。SIP 可以读写 JPEG/PNG/BMP 格式的图片。具备图像滤波、分割、边缘检测、形态学处理和形状分析等功能。 |
STAIR Vision Library (SVL) 最初是为支持斯坦福智能机器人设计的,提供对计算机视觉、机器学习和概率统计模型的支持。 |
Jia-Bin Huang童鞋收集,此童鞋毕业于国立交通大学,之前拍过很多CVPR举办地科罗拉多州的照片,这里大多为matlab code,
link: https://netfiles.uiuc.edu/jbhuang1/www/resources/vision/index.html
包括:
Feature Extraction:
- SIFT [1] [Demo program][SIFT Library] [VLFeat]
- PCA-SIFT [2] [Project]
- Affine-SIFT [3] [Project]
- SURF [4] [OpenSURF] [Matlab Wrapper]
- Affine Covariant Features [5] [Oxford project]
- MSER [6] [Oxford project] [VLFeat]
- Geometric Blur [7] [Code]
- Local Self-Similarity Descriptor [8] [Oxford implementation]
- Global and Efficient Self-Similarity [9] [Code]
- Histogram of Oriented Graidents [10] [INRIA Object Localization Toolkit] [OLT toolkit for Windows]
- GIST [11] [Project]
- Shape Context [12] [Project]
- Color Descriptor [13] [Project]
- Pyramids of Histograms of Oriented Gradients [Code]
- Space-Time Interest Points (STIP) [14] [Code]
- Boundary Preserving Dense Local Regions [15][Project]
Image Segmentation:
- Normalized Cut [1] [Matlab code]
- Gerg Mori’ Superpixel code [2] [Matlab code]
- Efficient Graph-based Image Segmentation [3] [C++ code] [Matlab wrapper]
- Mean-Shift Image Segmentation [4] [EDISON C++ code] [Matlab wrapper]
- OWT-UCM Hierarchical Segmentation [5] [Resources]
- Turbepixels [6] [Matlab code 32bit] [Matlab code 64bit] [Updated code]
- Quick-Shift [7] [VLFeat]
- SLIC Superpixels [8] [Project]
- Segmentation by Minimum Code Length [9] [Project]
- Biased Normalized Cut [10] [Project]
- Segmentation Tree [11-12] [Project]
- Entropy Rate Superpixel Segmentation [13] [Code]
Object Detection:
- A simple object detector with boosting [Project]
- INRIA Object Detection and Localization Toolkit [1] [Project]
- Discriminatively Trained Deformable Part Models [2] [Project]
- Cascade Object Detection with Deformable Part Models [3] [Project]
- Poselet [4] [Project]
- Implicit Shape Model [5] [Project]
- Viola and Jones’s Face Detection [6] [Project]
Saliency Detection
- Itti, Koch, and Niebur’ saliency detection [1] [Matlab code]
- Frequency-tuned salient region detection [2] [Project]
- Saliency detection using maximum symmetric surround [3] [Project]
- Attention via Information Maximization [4] [Matlab code]
- Context-aware saliency detection [5] [Matlab code]
- Graph-based visual saliency [6] [Matlab code]
- Saliency detection: A spectral residual approach. [7] [Matlab code]
- Segmenting salient objects from images and videos. [8] [Matlab code]
- Saliency Using Natural statistics. [9] [Matlab code]
- Discriminant Saliency for Visual Recognition from Cluttered Scenes. [10] [Code]
- Learning to Predict Where Humans Look [11] [Project]
- Global Contrast based Salient Region Detection [12] [Project]
Image Classification
- Pyramid Match [1] [Project]
- Spatial Pyramid Matching [2] [Code]
- Locality-constrained Linear Coding [3] [Project] [Matlab code]
- Sparse Coding [4] [Project] [Matlab code]
- Texture Classification [5] [Project]
- Multiple Kernels for Image Classification [6] [Project]
- Feature Combination [7] [Project]
- SuperParsing [Code]
Image Matting
- Closed Form Matting [Code]
- Spectral Matting [Project]
- Learning-based Matting [Code]
等等等等。。。。
大家可以去那个网址自己看。。。。