利用积分图像法快速计算Haar特征
2016-01-12 13:49
316 查看
由于Haar特征是矩形中黑色区域所有像素值的和减去白色区域所有像素值的和。在之前(《计算Haar特征个数》)我们看到,24*24的图片中,有115984个特征,远远大于其像素个数。如果计算每个特征的像素和,计算量会非常大,而且很多次运算是重复的。
Paul Viola提出一种利用积分图像法快速计算Haar特征的方法(《Rapid object detection using a boosted cascade of simple features》)。简单说来,就是先构造一张“积分图”(Integral
image),也叫Summed Area Table,之后任何一个Haar矩形特征都可以通过查表的方法(Look Up Table)和有限次简单运算得到,大大减少了运算次数。
将矩形表示为:
![](http://img.my.csdn.net/uploads/201211/24/1353727655_2637.png)
其中,x,y表示起点坐标,w,h表示宽,高,a表示角度。
矩形内像素值之和表示为:
![](http://img.my.csdn.net/uploads/201211/24/1353727732_1166.png)
![](http://img.my.csdn.net/uploads/201211/24/1353727992_9083.png)
积分图像中,每个点存储是其左上方所有像素之和:
![](http://img.my.csdn.net/uploads/201211/24/1353727809_7246.png)
其中I(x,y)表示图像(x,y)位置的像素值。
积分图像可以采用增量的方式计算:
![](http://img.my.csdn.net/uploads/201211/24/1353727870_2532.png)
初始边界:SAT(-1,y)=SAT(x,-1)=SAT(-1,-1)=0
所以,只需要对整张图像遍历一次就可以求得这张图的积分图像。
![](http://img.my.csdn.net/uploads/201211/24/1353728074_1079.png)
利用积分图计算可计算矩形区域内像素和:
![](http://img.my.csdn.net/uploads/201211/24/1353728156_9326.png)
所以,无论矩形r的尺寸大小,只需查找积分图像4次就可以求得任意矩形内像素值的和。
![](http://img.my.csdn.net/uploads/201211/24/1353728232_8265.png)
旋转积分图中,每个点存储是其左上方延伸出的45°区域范围内所有像素之和:
![](http://img.my.csdn.net/uploads/201211/24/1353728269_7001.png)
RSAT(x,y)也采用增量方计算得到:
![](http://img.my.csdn.net/uploads/201211/24/1353728322_1201.png)
初始边界:RSAT(-1,y)=RSAT(x,-1)=RSAT(x,-2)=0
RSAT(-1,-1)=RSAT(-1,-2)=0
公式具体示意如下图:
![](http://img.my.csdn.net/uploads/201211/24/1353728399_5510.png)
![](http://img.my.csdn.net/uploads/201211/24/1353728450_4965.png)
*图太难画了,不清楚的自己在草稿纸上试试吧~
同样的,无论旋转矩形r的尺寸大小,只需要查找积分图像4次就可以求得任意矩形内像素值得和。
Paul Viola提出一种利用积分图像法快速计算Haar特征的方法(《Rapid object detection using a boosted cascade of simple features》)。简单说来,就是先构造一张“积分图”(Integral
image),也叫Summed Area Table,之后任何一个Haar矩形特征都可以通过查表的方法(Look Up Table)和有限次简单运算得到,大大减少了运算次数。
将矩形表示为:
![](http://img.my.csdn.net/uploads/201211/24/1353727655_2637.png)
其中,x,y表示起点坐标,w,h表示宽,高,a表示角度。
矩形内像素值之和表示为:
![](http://img.my.csdn.net/uploads/201211/24/1353727732_1166.png)
0°矩形特征
构造积分图像Summed Area Table
![](http://img.my.csdn.net/uploads/201211/24/1353727992_9083.png)
积分图像中,每个点存储是其左上方所有像素之和:
![](http://img.my.csdn.net/uploads/201211/24/1353727809_7246.png)
其中I(x,y)表示图像(x,y)位置的像素值。
积分图像可以采用增量的方式计算:
![](http://img.my.csdn.net/uploads/201211/24/1353727870_2532.png)
初始边界:SAT(-1,y)=SAT(x,-1)=SAT(-1,-1)=0
所以,只需要对整张图像遍历一次就可以求得这张图的积分图像。
计算Haar矩形特征
如图所示:![](http://img.my.csdn.net/uploads/201211/24/1353728074_1079.png)
利用积分图计算可计算矩形区域内像素和:
![](http://img.my.csdn.net/uploads/201211/24/1353728156_9326.png)
所以,无论矩形r的尺寸大小,只需查找积分图像4次就可以求得任意矩形内像素值的和。
45°Rotated矩形特征
构造旋转积分图像Rotated SummedArea Table
![](http://img.my.csdn.net/uploads/201211/24/1353728232_8265.png)
旋转积分图中,每个点存储是其左上方延伸出的45°区域范围内所有像素之和:
![](http://img.my.csdn.net/uploads/201211/24/1353728269_7001.png)
RSAT(x,y)也采用增量方计算得到:
![](http://img.my.csdn.net/uploads/201211/24/1353728322_1201.png)
初始边界:RSAT(-1,y)=RSAT(x,-1)=RSAT(x,-2)=0
RSAT(-1,-1)=RSAT(-1,-2)=0
公式具体示意如下图:
![](http://img.my.csdn.net/uploads/201211/24/1353728399_5510.png)
计算Haar矩形特征
同样的方式,可推出每个矩形内像素和的计算公式:![](http://img.my.csdn.net/uploads/201211/24/1353728450_4965.png)
*图太难画了,不清楚的自己在草稿纸上试试吧~
同样的,无论旋转矩形r的尺寸大小,只需要查找积分图像4次就可以求得任意矩形内像素值得和。
(转载请注明作者和出处:http://blog.csdn.net/xiaowei_cqu 未经允许请勿用于商业用途)
相关文章推荐
- Adaboost原理、算法以及应用
- Adaboost分类器 haar特征
- Integral images in OpenCV
- 积分图像与积分直方图
- 浅析人脸检测之Haar分类器方法:Haar特征、积分图、 AdaBoost 、级联
- opencv积分图计算
- 【图像处理】所谓的“快速积分图”,其实并不快
- 目标检测的图像特征提取之(三)Haar特征
- 快速计算积分图
- openCV计算积分图
- AdaBoost中利用Haar特征进行人脸识别算法分析与总结1——Haar特征与积分图
- 关于java中进制的快速计算
- 程序员的机器学习入门笔记(九):人脸检测之Haar分类器方法:Haar特征、积分图、 AdaBoost 、级联
- SURF学习(一)——积分图
- 积分图像与积分直方图
- 聊聊spark这个大数据计算框架
- 新手上手Tensorflow之手写数字识别应用(3)
- webrtc的Sqrt()快速计算
- 机器学习 之 Haar特征
- 大数据技术hadoop入门理论系列之二—HDFS架构简介