对OpenCV中Haar特征CvHaarClassifierCascade等结构理解

上传人:汽*** 文档编号:456942387 上传时间:2023-11-24 格式:DOCX 页数:14 大小:114.05KB
返回 下载 相关 举报
对OpenCV中Haar特征CvHaarClassifierCascade等结构理解_第1页
第1页 / 共14页
对OpenCV中Haar特征CvHaarClassifierCascade等结构理解_第2页
第2页 / 共14页
对OpenCV中Haar特征CvHaarClassifierCascade等结构理解_第3页
第3页 / 共14页
对OpenCV中Haar特征CvHaarClassifierCascade等结构理解_第4页
第4页 / 共14页
对OpenCV中Haar特征CvHaarClassifierCascade等结构理解_第5页
第5页 / 共14页
点击查看更多>>
资源描述

《对OpenCV中Haar特征CvHaarClassifierCascade等结构理解》由会员分享,可在线阅读,更多相关《对OpenCV中Haar特征CvHaarClassifierCascade等结构理解(14页珍藏版)》请在金锄头文库上搜索。

1、对 OpenCV 中 Haar 特征 CvHaarClassifierCascade 等结构理解首先说一下这个级联分类器,OpenCV中级联分类器是根据VJ 04年 的那篇论文(Robust Real-Time Face Detection)编写的,查看那 篇论文,知道构建分类器的步骤如下:1、根据haar-like特征训练多个弱分类器2、使用adaboost算法将多个弱分类器组合成一个强分类器3、最终的分类器是由多个强分类器级联而成下面这幅图是弱分类器组合成强分类器的示意图(图片来源于网络):下面这张是多个强分类器级联的示意图(图片来源于网络):ClassifierClassifierCla

2、ssifier A谷碧下载WWW.GPXZ.COM待松洲图像判别有待检测子窗判别为非人胫在了解了级联分类器是怎么一回事后,我们来看一看OpenCV里面级联分类器的结构 在调用OpenCV中的级联分类器对目标进行分类时,都会将一个训练好的分类器(一个训练好的.xml文件)读入到一个CvHaarClassifierCascade 结构中,如下:1 CvHaarClassifierCascade* cascade = (CvHaarClassifierCascade*)cvLoad( haarcascade_frontalfac e_alt.xml, 0, 0, 0 );那么这个CvHaarClas

3、sifierCascade结构体里面的内容都有哪些呢?路1 typedefstructCvHaarClassifierCascade2 3 int flags;/*标志位 */4 int count;/*分级分类器中强分类器的数量*/5 CvSizeorig_window_size;/*训练中原始目标的大小*/67 /* these two parameters are set by cvSetImagesForHaarClassifierCascade */8 CvSizereal_window_size; /* 待检测物体的大小 */9 double scale;/* Haar 块缩放的尺

4、寸 */1011 CvHaarStageClassifier* stage_classifier; /* 定义强分类器数组 */12 CvHidHaarClassifierCascade* hid_cascade;13 CvHaarClassifierCascade;第一个flags,还不是很清楚,在debug模式下,flags=1112539136(好吧,这个值很诡异),我也不是很清楚第二个count,表示整个分级分类器中强分类器的数量,即最后参与级联的强分类器的个数第三个orig_window_size,表示的是在训练时用的正样本的尺寸,OpenCV中的尺寸是20x20第四个和第五个,注释

5、中说了,这两个参数需要自己设置,具体每个参数看注释第六个stage_classifier,是强分类器指针,指向一个强分类器数组,之前的count是多少,那么此处的强分类器就有多少最后一个hid_cascade,还不是很清楚下面来看上面第六个参数的强分类器结构体1 typedefstructCvHaarStageClassifier2 3 int count; /* number of classifiers in the battery 构成强分类 器的弱分类器的数量*/4 float threshold; /* threshold for the boosted classifier 叠加分

6、 类器的阈值*/5 CvHaarClassifier* classifier; /* array of classifiers 定义分类 器数组*/6 /* these fields are used for organizing trees of stage classifiers,7 rather than just stright cascades */8 intnext;9 intchild;10 intparent;11 CvHaarStageClassifier;第一个count,表示该强分类器中,弱分类器的数量,即该强分类器由多少个弱分类器组成第二个threshold,叠加分类器

7、的阈值(好吧。这个我也不知道)第三个classifier,是一个指针,指向的是一个弱分类器数组,之前的count是多少,此处的弱分类器就有多少后面3个都不清楚。(望知道的网友给予帮助)下面是弱分类器的结构1 typedefstructCvHaarClassifier2 3 int count; /* number of nodes in the decision tree */4 /* these are parallel arrays. Every index i corresponds to a node of the decision tree (root has 0-th index)

8、.5 lefti - index of the left child (or negated index if the left child is a leaf)6 righti - index of the right child (or negated index if the right child is a leaf)7 thresholdi - branch threshold. if feature responce is = threshold, left branch is chosen, otherwise right branch is chosed.8 alphai -

9、output value correponding to the leaf. */ 910 CvHaarFeature*haar_feature;11 float* threshold;12 int* left;13 int* right;14 float* alpha;15 CvHaarClassifier;第一个count,在opencv里,发现始终都是1,自己想了想,因为这 个结构体记录的是一个弱分类器,自然弱分类器的个数就是1了。第二个haar_feature,也是一个指针,指向一个(因为count是1) 特征结构体CvHaarFeature,这个结构体中记录的内容是弱分类器的 类型(

10、包括该haar-like特征的位置,大小,以及种类,这个结构体会 在下面给出,再细说)第三个threshold,就是那个判别函数:h(x,f,p,theta) = (p*f(x) p*theta ? 1 : 0),中的阈值 thetah(xrfrp90) =刃(x) pe 其他第四个left,第五个right不是很清楚(求知道的同学详解啊 )第六个alpha,就是这个弱分类器的权重(每一个强分类器都是由多个 弱分类器按照各自的权重进行表决,而得到的) 特征的结构体如下1 #define CV_HAAR_FEATURE_MAX 32 / 一个Haar特征由23个具有相应权重的矩形组成3 type

11、defstructCvHaarFeature4 / 0 means up-right feature, 1 means 45-rotated5 int tilted;feature6 struct7 (8 CvRect r;9 float weight;10 rectCV_HAAR_FEATURE_MAX;11 / 2-3 rectangles with weights of opposite signs and with absolute values inversely proportional to the areas of the rectangles.ifrect2.weight !

12、= 0, then the featureconsists of 3 rectangles,otherwise it consists of 2.12 CvHaarFeature;电第一个参数titled, 0表示该特征是标准的haar-like特征,1表示旋转45后的特征标准的haar-like特征如下:1, Caractenstques de voresZ Caractenstjques de limesH 雄HaarsIHaar_y3Haar_4而旋转45后的特征如下:第二个参数是个结构体数组,每个结构体中包括一个矩形和一个权重, 这个数组的大小是CV_HAAR_FEATURE_MAX

13、(3)(注释中说:此 处可能有23个矩形,这里的矩形等看了下面的解释就知道了),这 个矩形和权重有什么用呢?在debug模式下,查看第一个弱分类器数组内的元素第一个元素:电1 rect0.r.x = 32 rect0.r.y = 73 rect0.r.width = 144 rect0.r.height = 45 rect0.weight = -1第二个元素:1 rect1.r.x = 32 rect1.r.y = 93 rect1.r.width = 144 rect1.r.height = 25 rect1.weight = 2昭第三个元素则全都是0这么看这些坐标,并不是很清楚,我们可以画

14、个图:由图可见,第一个矩形表示的是A+B区域,第二个矩形表示的是 B区域。此时再看一看每个元素的权重weight,结合积分图的概念,发现 第一个矩形的积分图乘以其权重加上第二个积分图乘以其权重,恰好得 到下述结果:(A+B)*(-1)+B*2 = B-A看到这个公式,大家都不会陌生,这正式VJ论文中给出的众多 haar-like模板中的其中一个模板的计算方法(此处不知如何表达,大 家将就,看懂就行)我们继续考察第二个弱分类器的特征部分,其特征参数如下:1 rect0.r.x = 1, rect0.r.y = 22 rect0.r.width = 18, rect0.r.height = 43

15、rect0.weight = -145 rect1.r.x = 7, rect1.r.y = 26 rect1.r.width = 6, rect1.r.height = 47 rect1.weight = 3数组的第三个元素依然都是是0,对其绘图:第一块矩形区域是A+B+C,第二块矩形区域是B,积分图乘以权重,再相加,可得:(A+B+C)*(-1)+B*3 = 2*B-A-C也是haar-like特征模板之一(此处不知如何表达,大家将就,看 懂就行)刚刚找了好久,找到一个第三个元素权重不为0的,该数组三个元素如下:1 rect0.r.x = 0, rect0.r.y = 22 rect0.r.width = 20, rect0.r.height = 6;3 rect0.

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文 > 其它学术论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号