自学视觉算法
Ⅰ 机器视觉算法基本步骤
1、图像数据解码
2、图像特征提取
3、识别图像中目标
Ⅱ 视觉追踪的典型算法
(1)基于区域的跟踪算法
基于区域的跟踪算法基本思想是:将目标初始所在区域的图像块作为目标模板,将目标模板与候选图像中所有可能的位置进行相关匹配,匹配度最高的地方即为目标所在的位置。最常用的相关匹配准则是差的平方和准则,(Sum of Square Difference,SSD)。
起初,基于区域的跟踪算法中所用到的目标模板是固定的,如 Lucas 等人提出 Lucas-Kanade 方法,该方法利用灰度图像的空间梯度信息寻找最佳匹配区域,确定目标位置。之后,更多的学者针对基于区域方法的缺点进行了不同的改进,如:Jepson 等人提出的基于纹理特征的自适应目标外观模型[18],该模型可以较好的解决目标遮挡的问题,且在跟踪的过程中采用在线 EM 算法对目标模型进行更新;Comaniciu 等人[19]提出了基于核函数的概率密度估计的视频目标跟踪算法,该方法采用核直方图表示目标,通过 Bhattacharya 系数计算目标模板与候选区域的相似度,通过均值漂移(MeanShift)算法快速定位目标位置。
基于区域的目标跟踪算法采用了目标的全局信息,比如灰度信息、纹理特征等,因此具有较高的可信度,即使目标发生较小的形变也不影响跟踪效果,但是当目标发生较严重的遮挡时,很容易造成跟踪失败。
(2)基于特征的跟踪方法
基于特征的目标跟踪算法通常是利用目标的一些显着特征表示目标,并通过特征匹配在图像序列中跟踪目标。该类算法不考虑目标的整体特征,因此当目标被部分遮挡时,仍然可以利用另一部分可见特征完成跟踪任务,但是该算法不能有效处理全遮挡、重叠等问题。
基于特征的跟踪方法一般包括特征提取和特征匹配两个过程:
a) 特征提取
所谓特征提取是指从目标所在图像区域中提取合适的描绘性特征。这些特征不仅应该较好地区分目标和背景,而且应对目标尺度伸缩、目标形状变化、目标遮挡等情况具有鲁棒性。常用的目标特征包括颜色特征、灰度特征、纹理特征、轮廓、光流特征、角点特征等。D.G. Lowe 提出 SIFT(Scale Invariant Feature Transform)算法[20]是图像特征中效果较好的一种方法,该特征对旋转、尺度缩放、亮度变化具有不变性,对视角变化、仿射变换、噪声也具有一定的稳定性。
b) 特征匹配
特征匹配就是采用一定的方式计算衡量候选区域与目标区域的相似性,并根据相似性确定目标位置、实现目标跟踪。在计算机视觉领域中,常用的相似性度量准则包括加权距离、Bhattacharyya 系数、欧式距离、Hausdorff 距离等。其中,Bhattacharyya 系数和欧式距离最为常用。
Tissainayagam 等人提出了一种基于点特征的目标跟踪算法[21]。该算法首先在多个尺度空间中寻找局部曲率最大的角点作为关键点,然后利用提出的MHT-IMM 算法跟踪这些关键点。这种跟踪算法适用于具有简单几何形状的目标,对于难以提取稳定角点的复杂目标,则跟踪效果较差。
Zhu 等人提出的基于边缘特征的目标跟踪算法[22],首先将参考图像划分为多个子区域,并将每个子区域的边缘点均值作为目标的特征点,然后利用类似光流的方法进行特征点匹配,从而实现目标跟踪。
(3)基于轮廓的跟踪方法
基于轮廓的目标跟踪方法需要在视频第一帧中指定目标轮廓的位置,之后由微分方程递归求解,直到轮廓收敛到能量函数的局部极小值,其中,能量函数通常与图像特征和轮廓光滑度有关。与基于区域的跟踪方法相比,基于轮廓的跟踪方法的计算复杂度小,对目标的部分遮挡鲁棒。但这种方法在跟踪开始时需要初始化目标轮廓,因此对初始位置比较敏感,跟踪精度也被限制在轮廓级。
Kass 等人[23]于 1987 年提出的活动轮廓模型(Active Contour Models,Snake),通过包括图像力、内部力和外部约束力在内的三种力的共同作用控制轮廓的运动。内部力主要对轮廓进行局部的光滑性约束,图像力则将曲线推向图像的边缘,而外部力可以由用户指定,主要使轮廓向期望的局部极小值运动,。
Paragios 等人[24]提出了一种用水平集方法表示目标轮廓的目标检测与跟踪算法,该方法首先通过帧差法得到目标边缘,然后通过概率边缘检测算子得到目标的运动边缘,通过将目标轮廓向目标运动边缘演化实现目标跟踪。
(4)基于模型的跟踪方法[25]
在实际应用中,我们需要跟踪的往往是一些特定的我们事先具有认识的目标,因此,基于模型的跟踪方法首先根据自己的先验知识离线的建立该目标的 3D 或2D 几何模型,然后,通过匹配待选区域模型与目标模型实现目标跟踪,进而在跟踪过程中,根据场景中图像的特征,确定运动目标的各个尺寸参数、姿态参数以及运动参数。
Shu Wang 等人提出一种基于超像素的跟踪方法[26],该方法在超像素基础上建立目标的外观模板,之后通过计算目标和背景的置信图确定目标的位置,在这个过程中,该方法不断通过分割和颜色聚类防止目标的模板漂移。
(5)基于检测的跟踪算法
基于检测的跟踪算法越来越流行。一般情况下,基于检测的跟踪算法都采用一点学习方式产生特定目标的检测器,即只用第一帧中人工标记的样本信息训练检测器。这类算法将跟踪问题简化为简单的将背景和目标分离的分类问题,因此这类算法的速度快且效果理想。这类算法为了适应目标外表的变化,一般都会采用在线学习方式进行自更新,即根据自身的跟踪结果对检测器进行更新。
Ⅲ 学习了哪些知识,计算机视觉才算入门
计算机视觉是一个很大的范畴的总和,有两种学习方式,一种是阅读基础书,搞懂它的每一部分;另一种是找一个问题,看文献,编程实现,不断往深走。这两种学习方式是互补的,如果你看了好几年书还不能上手解决问题,或者只会解决某些很特殊的问题,对其他问题束手无策都不算成功。因此你需要把看书掌握一般知识和编程实验解决具体问题齐头并进。下面说你要干什么:
下载安装OpenCV2
OpenCV是一个非常强大的计算机视觉库,包括了图像处理、计算机视觉、模式识别、多视图几何的许多基本算法,有c++和Python两种接口。学习的材料首先是安装目录下doc文件夹里的帮助文档,提供所有函数的用法,任何时候对任何函数有疑问请查阅帮助文档,安装目录下还提供一大堆写好的演示程序供参考;《OpenCV_2 Computer Vision Application Programming Cookbook》是一本比较基础的介绍材料,它的缺点是没有介绍分类器(模式识别)方面的函数怎么用。
虽然网上还有其他很多流行的库,比如处理特征点的VLfeat,处理点云的PCL,处理GPU运算的CUDA,处理机器人问题的ROS和MRPT,但是这些都是你在解决具体问题时才会考虑去用的东西,如果你想快速读取视频、做个屏幕交互程序、使用流行的分类器、提取特征点、对图像做处理、进行双目重建,OpenCV都提供相应函数,因此在你不知道该把余生用来干什么的时候,先装OpenCV学习。
读综述
Computer Vision: Algorithms and Application。这本书用1000页篇幅图文并茂地浏览了计算机视觉这门学科的诸多大方向,如果你不知道计算机视觉是一门搞什么的学科,这本书是你绝佳的选择。它的优点是涉猎了大量文献,缺点是缺乏细节,因此很显然只读这本书你根本没法上手工作,因为它讲的实在是太粗糙了。如果你对其中的某一部分感兴趣,就请去读相关文献,继续往下走,这就是这本书的意义。有中文版,但是翻译的不好,也不建议你细细去读,看看里面的图片即可。
Computer Vision: Models, Learning, and Inference:这本书是我认为研究生和高年级本科生入门计算机视觉最好的教材。它内容丰富,难度适中,推导翔实,语言流畅,强烈推荐你花2个月时间把这本书读完。
多视图几何
Multiple View Geometry in Computer Vision:这本书是多视图几何的圣经,意思就是说想搞三维重建或者图像测量之类的项目,这本书是必读的。它需要你有线性代数的基本知识,会SVD分解即可。第一版有中文版,翻译的非常好,但是已经绝版了,可以上淘宝高价买一本,第二版添加的内容很少,在网上可以下载到。
模式识别
模式识别核心就是训练一个函数来拟合手头的数据,如果数据的标签是离散的,称为分类问题,如数据的标签是连续的,称为回归问题;分类又分有监督分类和无监督分类,有监督分类器有神经网络、支持向量机、AdaBoost、随机场、树模型等等。当你拿到一大堆数据,需要从里面找关系的时候,一般都需要使用模式识别算法来训练一个函数/分类器/模型,因此模式识别是机器学习的核心。
《模式分类(第二版)》:这是一本适合普通读者阅读的教材,介绍了模式识别中经典的分类器,讲解细致,语言生动,难度适中,每一个算法都有伪代码。
The Elements of Statistical Learning:这本书使用严谨的数学工具分析模式识别算法,它比较难,但是非常深刻。每拿到一个模型它都会分析这个模型在数学上是如何构造的,并且推导模型的分类错误率。分析和推导是这本书的精髓。
Pattern Recognition and Machine Learning:这是一本从贝叶斯学派的角度分析模式识别模型的书,它使用的工具主要是概率论,比较难,非常深刻,内容非常丰富。
虽然这两本书很难,但是它们用到的数学知识不过是基本的概率论和线性代数,只是用的比较活,计算机视觉这个学科需要的数学知识也是这个水平。
图形学
图形学教材首先推荐《计算机图形学与几何造型导论》,这本书用流畅的语言介绍了图形学的基础知识,选材有趣,推导简洁但是绝不跳步走,保证你能看懂而且不会看烦。
光线追踪器我看过一本薄的《Realistic Ray Tracing》和一本厚的《Ray Tracing from the Ground Up》,两本书都有代码。后一本内容极其丰富,有中文版,翻译尚可。后一本唯一的缺点就是讲不清楚BRDF,但这恰恰是前一本的亮点。
还有一些比较偏的书,比如偏微分方程在图像处理中的应用、细分、压缩感知、马尔科夫随机场、超分辨率分析,概率机器人、多尺度几何分析,这些领域都有各自的名着,你在某个领域深挖的时候,类似这样的书可能会出现在参考文献中,那时再看不迟。
读文献
写到书里的知识基本上都有些过时,你得通过看文献掌握各个领域最新的发展动态。计算机视觉的顶级期刊有两个PAMI和IJCV,顶级会议有ICCV和CVPR,在科学网—[转载]计算机视觉方向的一些顶级会议和期刊有更加详细的介绍。
Ⅳ 自学机器视觉应该怎么入门
找本机器视觉的书来系统的学习。
比如:《图像处理分析与机器视觉》、《机器视觉算法与应用》、《机器视觉与机电一体化实践》