哈尔特征(Haar-like features)
FROM: http://zh.wikipedia.org/wiki/%E5%93%88%E5%B0%94%E7%89%B9%E5%BE%81
哈尔特征(Haar-like features) 是用于物体识别的一种数字图像特征。它们因为与哈尔小波转换 极为相似而得名,是第一种实时的人脸检测算子。
历史上,直接使用图像的强度(就是图像每一个像素点的RGB值)使得特征的计算强度很大。帕帕乔治奥等人提出可以使用基于哈尔小波的特征而不是图像强度[1] 。维奥拉和琼斯[2]进而提出了哈尔特征。哈尔特征使用检测窗口中指定位置的相邻矩形,计算每一个矩形的像素和并取其差值。然后用这些差值来对图像的子区域进行分类。
例如,当前有一个人脸图像集合。通过观察可以发现,眼睛的颜色要比两颊的深。因此,用于人脸检测的哈尔特征是分别放置在眼睛和脸颊的两个相邻矩形。这些矩形的位置则通过类似于人脸图像的外接矩形的检测窗口进行定义。
在维奥拉-琼斯目标检测框架的检测阶段,一个与目标物体同样尺寸的检测窗口将在输入图像上滑动,在图像的每一个子区域都计算一个哈尔特征。然后这个差值会与一个预先计算好的阈值进行比较,将目标和非目标区分开来。因为这样的一个哈尔特征是一个弱分类器(它的检测正确率仅仅比随机猜测强一点点),为了达到一个可信的判断,就需要一大群这样的特征。在维奥拉-琼斯目标检测框架中,就会将这些哈尔特征组合成一个级联分类器,最终形成一个强分类群。
哈尔特征最主要的优势是它的计算非常快速。使用一个称为积分图的结构,任意尺寸的哈尔特征可以在常数时间内进行计算。
矩形哈尔特征[编辑]
一个矩形哈尔特征可以定义为矩形中几个区域的像素和的差值,可以具有任意的位置和尺寸。这种特质也被称为2矩形特征(2-rectangle feature)。 维奥拉和琼斯也定义了3矩形特征和4矩形特征。这个值表明了图像的特定区域的某些特性。每一个特征可以描述图像上特定特性的存在或不存在,比如边缘或者纹理的变化。例如,一个2-矩形特征可以表明一个边界位于一个亮区域和一个暗区域之间。
哈尔特征的快速计算[编辑]
维奥拉和琼斯的一个重要贡献是使用积分图[3] 。 积分图是一个二维矩形的查找表,与原始图像具有一样的尺寸。积分图的每一个元素是原始图像在对应位置左上角所有像素的和。这就使得在任意位置计算任意尺寸的矩形的像素和时,只需要进行四次查表:
其中点 属于原始图像 ,如图所示。
每个哈尔特征的查找次数取决于它的定义。维奥拉和琼斯的2矩形特征需要六次查询,3矩形需要八次,而4矩形则需要九次。
倾斜的哈尔特征[编辑]
兰哈切和梅迪[4] 提出了倾斜的(45°)哈尔特征。这种对特征维度的扩充是为了提升对物体的检测。由于这些特征对一些物体的描述更为适合,这种扩充是有效的。例如,一个倾斜的特征可以描述一个倾斜45°的边缘。针对这种特征的计算,也提出了倾斜的积分图。
参考文献[编辑]
- ^ Papageorgiou, Oren and Poggio, "A general framework for object detection", International Conference on Computer Vision, 1998.
- ^ Viola and Jones, "Rapid object detection using a boosted cascade of simple features", Computer Vision and Pattern Recognition, 2001
- ^ Crow, F, "Summed-area tables for texture mapping", in Proceedings of SIGGRAPH, 18(3):207–212, 1984
- ^ Lienhart, R. and Maydt, J., "An extended set of Haar-like features for rapid object detection", ICIP02, pp. I: 900–903, 2002
HaarTraining算法剖析
http://wiki.opencv.org.cn/index.php/HaarTraining%E7%AE%97%E6%B3%95%E5%89%96%E6%9E%90
引言
通过前段时间阅读OpenCV的HaarTraining代码,基本掌握了HaarTraining算法。现将其中的算法作一梳理,同时对HaarTraining的使用方法做一简要说明。
HaarTraining算法总体上以Friedman, J. H等人的“Additive Logistic Regression: a Statistical View of Boosting”为出发点,实现了其中2类分类问题的4种Boost算法:Discrete AdaBoost, Real AdaBoost, LogitBoost 和Gentle AdaBoost。同时实现了文中第8节Additive Logistic Trees和第9节Weight Trimming.
Friedman, J. H等人只描述了如何训练一个强分类器,对于训练级联的强分类器(Cascade of Classifiers),OpenCV采用的是Paul Viola等人的“Robust Real-Time Face Detection”中所述方法。
HaarTraining采用的是OpenCV扩展的Haar特征,具体描述可参考Rainer Lienhart等人的“An Extended Set of Haar-like Features for Rapid Object Detection”。
总体框架
...
具体请参考《 OpenCV之_HaarTraining算法剖析》。
作者
周明才(mingcai.zhou@ia.ac.cn)