opencv lbp人脸检测算法

 

一、 MB-LBP特征

算法使用的特征为MB-LBP特征,以区域块像素值和为基础进行计算,因此MB-LBP特征计算窗口可为长方形。
 
LBP特征如下:
 
MB-LBP特征如下:
 
 
opencv的MB-LBP特征使用积分图来计算区域像素值的和:
 
 
特征计算代码如下:
#define CALC_SUM_(p0, p1, p2, p3, offset) \
    ((p0)[offset] - (p1)[offset] - (p2)[offset] + (p3)[offset])
inline int LBPEvaluator::Feature :: calc( int _offset ) const
{
    int cval = CALC_SUM_( p[5], p[6], p[9], p[10], _offset );

    return (CALC_SUM_( p[0], p[1], p[4], p[5], _offset ) >= cval ? 128 : 0) |   // 0
           (CALC_SUM_( p[1], p[2], p[5], p[6], _offset ) >= cval ? 64 : 0) |    // 1
           (CALC_SUM_( p[2], p[3], p[6], p[7], _offset ) >= cval ? 32 : 0) |    // 2
           (CALC_SUM_( p[6], p[7], p[10], p[11], _offset ) >= cval ? 16 : 0) |  // 5
           (CALC_SUM_( p[10], p[11], p[14], p[15], _offset ) >= cval ? 8 : 0)|  // 8
           (CALC_SUM_( p[9], p[10], p[13], p[14], _offset ) >= cval ? 4 : 0)|   // 7
           (CALC_SUM_( p[8], p[9], p[12], p[13], _offset ) >= cval ? 2 : 0)|    // 6
           (CALC_SUM_( p[4], p[5], p[8], p[9], _offset ) >= cval ? 1 : 0);
}
 
 
 
数组p可快速计算出区域像素和,p[0]指向图像数据起点,offset控制滑动窗口偏移,数组p的每个下标对应位置如下:
 
 
 

二、 算法步骤

算法检测人脸的流程与一般的物体检测流程类似,均是通过滑动窗口遍历整个图像。

其中,滑动窗口的大小是固定的,24x24像素。通过缩放原始输入图像来达到检测不同人脸尺寸的目的。

 

三、 xml文件格式分析

点击打开链接

四、 其他

积分图生成方法:

方法一. one pass,  每一行记录一个row_sum,integral(row, col) = integral(row-1, col) + row_sum。 

方法二. two pass,第一轮计算row sum, 第二轮在row sum数值上再计算col sum。

 

 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值