使用MB-LBP提取特征以进行多视图面部检测

时间:2014-12-09 09:31:40

标签: opencv face-detection feature-detection feature-extraction

我正在进行多视图人脸检测。我在开发面部检测方面有两个步骤,

(1)决策树决定运行哪个分类器

(2)运行选定的分类器以检测面部的特定方向。

我有9个使用Ada-boost算法训练的分类器,用于9个面部视图。

现在我的问题是使用MB-LBP(多尺度块局部二进制模式)功能训练决策树。 我为不同的x,y位置和不同的矩形大小选择了100个矩形。 我喜欢使用这些矩形来使用MB-LBP提取特征。 据我所知,如果我们使用MB-LBP概念,我们可以为矩形标记0-255。在OpenCV中,它实现为(在第217行,cascadedetect.hpp)

inline int 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);
}

此代码可以提取标签。从那里,我无法弄清楚如何为每个矩形获得有意义的功能。 我在CascadeTraining检查了OpenCV的代码。这真的很复杂。我是否有线索如何使用MB-LBP产生有用的功能? 感谢

1 个答案:

答案 0 :(得分:0)

阅读this paperthis paper后,了解我可以直接使用MB-LBP功能。如果我们使用MB-LBP功能,对于每个矩形,我们可以具有0到255之间的值。这些值是功能,可用于识别图像。在级联分类器中,强分类器的每一步都是弱分类器的总和。每个弱分类器都是从这些MB-LBP特征及其派生方式得出的,我们可以从this paper中学习。 感谢