1 / 34
文档名称:

opencv学习笔记a.doc

格式:doc   页数:34页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

opencv学习笔记a.doc

上传人:sanshengyuanting 2016/7/10 文件大小:0 KB

下载得到文件列表

opencv学习笔记a.doc

相关文档

文档介绍

文档介绍:分类器(模式识别) 目标检测方法最初由 Paul Viola [Viola01] 提出,并由 Rainer Lienhart [Lienhart02] ,利用样本(大约几百幅样本图片)的 harr 特征进行分类器训练,得到一个级联的 boosted 分类器。训练样本分为正例样本和反例样本,其中正例样本是指待检目标样本(例如人脸或汽车等),反例样本指其它任意图片,所有的样本图片都被归一化为同样的尺寸大小(例如, 20x20) 。分类器训练完以后,就可以应用于输入图像中的感兴趣区域(与训练样本相同的尺寸)的检测。检测到目标区域(汽车或人脸)分类器输出为 1,否则输出为 0。为了检测整副图像,可以在图像中移动搜索窗口,检测每一个位置来确定可能的目标。为了搜索不同大小的目标物体,分类器被设计为可以进行尺寸改变,这样比改变待检图像的尺寸大小更为有效。所以,为了在图像中检测未知大小的目标物体,扫描程序通常需要用不同比例大小的搜索窗口对图片进行几次扫描。分类器中的“级联”是指最终的分类器是由几个简单分类器级联组成。在图像检测中,被检窗口依次通过每一级分类器, 这样在前面几层的检测中大部分的候选区域就被排除了,全部通过每一级分类器检测的区域即为目标区域。目前支持这种分类器的 boosting 技术有四种: Discrete Adaboost, Real Adaboost, Gentle Adaboost and Logitboost 。"boosted" 即指级联分类器的每一层都可以从中选取一个 boosting 算法(权重投票),并利用基础分类器的自我训练得到。基础分类器是至少有两个叶结点的决策树分类器。 Haar 特征是基础分类器的输入,主要描述如下。目前的算法主要利用下面的 Harr 特征。每个特定分类器所使用的特征用形状、感兴趣区域中的位置以及比例系数(这里的比例系数跟检测时候采用的比例系数是不一样的,尽管最后会取两个系数的乘积值)来定义。例如在第三行特征(2c) 的情况下,响应计算为复盖全部特征整个矩形框(包括两个白色矩形框和一个黑色矩形框)象素的和减去黑色矩形框内象素和的三倍。每个矩形框内的象素和都可以通过积分图象很快的计算出来。(察看下面和对 cvIntegral 的描述). 通过 HaarFaceDetect 的演示版可以察看目标检测的工作情况。下面只是检测部分的参考手册。 haartraining 是它的一个单独的应用,可以用来对系列样本训练级联的 boosted 分类器。详细察看 opencv/apps/haartraining 。 CvHaarFeature, CvHaarClassifier, CvHaarStageClassifier, CvHaarClassifierCascade Boosted Haar 分类器结构#define CV_HAAR_FEATURE_MAX 3 /*一个 harr 特征由 2-3个具有相应权重的矩形组成 a haar feature consists of 2-3 rectangles with appropriate weights */ typedef struct CvHaarFeature { int tilted; /*0 means up-right feature, 1 means 45--rotated feature */ /* 2-3 rectangles with weights of opposite signs and with absolute values inversely proportional to the areas of the rectangles. if rect[2].weight !=0, then the feature consists of3 rectangles, otherwise it consists of2 */ struct { CvRect r; float weight; } rect[CV_HAAR_FEATURE_MAX]; } CvHaarFeature; /*a single tree classifier (stump in the simplest case) that returns the response for the feature at the particular image location (. pixel sum over subrectangles of the window) and gives out a value depending on the responce */ typedef struct CvHaarClassifier { i