简介:
对于Harr特征以及Adaboost的讲解,网上有很多分析,在此记录一些较好的博客。
较好的文章:
两篇原文:
1、Rapid Object Detection using a
Boosted Cascade of Simple Features
2、An Extended Set of Haar-like
Features for Rapid Object Detection
维基百科:
Viola–Jones object detection framework
小魏的修行路:
1、【OpenCV】基于Adaboost和Haar-like特征人脸识别
zouxy09的博客:
liuliu603的博客:
当然对于24x24子窗口内,harr特征个数的计算到底是18K左右还是16K左右,依然是有争论:
Viola-Jones‘ face detection claims 180k features
Harr特征:
下面就Harr特征也来说说我的理解,以人脸检测为例,如有失误的地方,还请多多指教。此处不去介绍积分图像、Adaboost级联分类器,Harr特征个数(我也没去推导)的计算等等。
对于一副待检测图像,目的是要将图中的人脸标记出来。由于拍摄者的距离远近不同或者相机对焦等设置,会导致图像中人脸分辨率大小不一致,想要准确的检测图像中所有的人脸,则需要从不同的尺度、不同的位置来检测,也就是多尺度法。
多尺度法:即待检测图像的大小保持不变,逐层等比放大检测窗口,利用这些不同大小的窗口来扫描检测整幅图像。下面做详细说明。
在图像中,子窗口取24x24大小,计算当前子窗口内的Harr特征向量,特征向量就是当前子窗口的表征,把这个向量送到已经训练好了的分类器中,判定其是否为人脸。若是,则标记一下;若不是,则子窗口滑动到下24x24的位置。重复上述特征计算,一直到整幅图像24x24的子窗口从左到右、从上到下都扫描完了,也就结束了当前层(尺度)的检测。
Harr特征也称矩形特征,最初的就是下面的几种:
看了上面列出的博客,大概都知道如何利用积分图像计算Harr特征。后来演变为下面的几种:
不管矩形特征怎么变,计算方法都是一样的,只是表征子窗口的特征向量的维度发生了改变。
以第一幅图中的A、B、C、D为例,有2个两矩形的,2个三矩形的,1个四矩形的组成,再详细点就是下图:
在上图中,a是2x1大小,在24x24的子窗口中滑动,每滑动一次会有一个值,则可产生23x24个值,也就是Harr特征值;同理b、c、d、e的都可以产生若干个Harr特征值,将它们组成一个向量,这就是Harr特征向量。在图像中扫描式的取子窗口,计算特征向量,判别是否是人脸,记录下当人脸的窗口,当然这只是进行了一层(一种尺度)的检测。
在一幅图像中,有的人脸可能小,有的可能很大,24x24的窗口可能检测不到,出现漏检的情况。如下图所示。
这个时候就需要将窗口进行适当的放大了,形成一个较大的窗口,也就是另一种尺度(另一层)。放大因子取1.25效果较好,每一尺度都是上一尺度的1.25倍大小,尺度(层)的大小不能超过原始图像的大小。
当然,子窗口进行了等比例的放大,那么矩形特征(a、b、c、d、e)也要进行一定比例的放大。然后计算Harr特征向量,再判别记录。
如此循环计算,直到子窗口大小达到不超过原始图像的最大尺寸。然后,再将所有记录过的人脸的进行标记,由于人脸区域在不同尺度的窗口中可能会有重复检测到,所以需要将重叠检测到的人脸区域合并起来成为一个区域并标记。
综上所述,就是Harr特征算法了,感觉有点像HOG特征算法,都是窗口内有东西在滑动计算,而窗口本身也是滑动的,只是Harr的窗口大小还在改变。
版权声明:本文为博主原创文章,未经博主允许不得转载。