HAAR分类器澄清

时间:2014-08-30 05:11:07

标签: opencv image-processing haar-classifier

我试图了解haar分类器的工作原理。我在这里阅读opencv文档:http://docs.opencv.org/modules/objdetect/doc/cascade_classification.html看起来你基本上训练了一组数据来获得类似模板的东西。然后将模板放在要检查的实际图像上,然后检查每个像素以查看它是否可能是您要查找的内容。所以,假设这是正确的,我已经到了我正在看下面的照片,我不明白。块是否应该代表"可能"的区域?并且"不太可能"?提前致谢

enter image description here

1 个答案:

答案 0 :(得分:4)

这些模式是为您的训练图像评估的功能。例如,对于特征1a,训练过程在所有训练图像中找到方形区域,其中左半部分通常比右半部分更亮(反之亦然)。对于特征3a,训练找到中心比周围更暗的方形区域。

您描绘的这些特定功能是为haar级联选择的,不是因为它们是特别好的功能,而主要是因为它们是extremely fast to evaluate

更具体地说,一个haar级联的训练发现了一个有助于区分你的正面和负面训练图像的特征,(大致上对于正面图像最常见的特征,对于负面图像最常见的是假的) 。该功能将是由此产生的haar级联的第一阶段。第二个最好的功能是第二个阶段,依此类推。

训练结束后,haar级联包含一系列规则或阶段,如下所示:

  • 评估区域(x1; y1) - (x2; y2)的特征1a。结果是否大于阈值z1?
    (意思是:该区域的左半部分比右半部分明亮一些吗?)
    • 如果是,请返回'不匹配'
    • 如果不是,请执行下一阶段

在经典的haar级联中,每个此类规则仅涉及具有单个阈值的单个位置的单个特征,表示级联的阶段 OpenCV实际上使用提升级联,这意味着每个阶段都包含多个这些简单功能的组合。

原则仍然存在:每个阶段都是一个非常弱的分类器,它本身只比野性猜测好一点。选择每个阶段的阈值,以便假阴性的可能性非常低(因此,一个阶段几乎从不会错误地拒绝一个好的匹配,但是经常会错误地接受错误的匹配)。

当执行haar级联时,所有阶段都按顺序执行;只接受通过第一个和第二个和第三个......阶段的图片。

训练期间,首先训练第一阶段。然后第二阶段只训练通过第一阶段的训练图像,依此类推。