MB-LBP特征,注意区分是Multi-block LBP还是MultiScale Block LBP,区别是是否使用了多尺度方法。其中Multiscale Block LBP,来源于论文,中科院的人发明的,opencv源码在Traincascade级联目标训练检测中的LBP特征使用的就是MultiScale Block LBP。

generateFeatures

void CvLBPEvaluator::generateFeatures()
{
int offset = winSize.width + ;
for( int x = ; x < winSize.width; x++ )
for( int y = ; y < winSize.height; y++ )
for( int w = ; w <= winSize.width / ; w++ )
for( int h = ; h <= winSize.height / ; h++ )
if ( (x+*w <= winSize.width) && (y+*h <= winSize.height) )
features.push_back( Feature(offset, x, y, w, h ) );
numFeatures = (int)features.size();
}

Feature

CvLBPEvaluator::Feature::Feature( int offset, int x, int y, int _blockWidth, int _blockHeight )
{
Rect tr = rect = cvRect(x, y, _blockWidth, _blockHeight);
CV_SUM_OFFSETS( p[], p[], p[], p[], tr, offset )
tr.x += *rect.width;
CV_SUM_OFFSETS( p[], p[], p[], p[], tr, offset )
tr.y +=*rect.height;
CV_SUM_OFFSETS( p[], p[], p[], p[], tr, offset )
tr.x -= *rect.width;
CV_SUM_OFFSETS( p[], p[], p[], p[], tr, offset )
}

calc

inline uchar CvLBPEvaluator::Feature::calc(const cv::Mat &_sum, size_t y) const
{
const int* psum = _sum.ptr<int>((int)y);
int cval = psum[p[]] - psum[p[]] - psum[p[]] + psum[p[]]; return (uchar)((psum[p[]] - psum[p[]] - psum[p[]] + psum[p[]] >= cval ? : ) | //
(psum[p[]] - psum[p[]] - psum[p[]] + psum[p[]] >= cval ? : ) | //
(psum[p[]] - psum[p[]] - psum[p[]] + psum[p[]] >= cval ? : ) | //
(psum[p[]] - psum[p[]] - psum[p[]] + psum[p[]] >= cval ? : ) | //
(psum[p[]] - psum[p[]] - psum[p[]] + psum[p[]] >= cval ? : ) | //
(psum[p[]] - psum[p[]] - psum[p[]] + psum[p[]] >= cval ? : ) | //
(psum[p[]] - psum[p[]] - psum[p[]] + psum[p[]] >= cval ? : ) | //
(psum[p[]] - psum[p[]] - psum[p[]] + psum[p[]] >= cval ? : )); //
}

CV_SUM_OFFSETS

#define CV_SUM_OFFSETS( p0, p1, p2, p3, rect, step )                      \
/* (x, y) */ \
(p0) = (rect).x + (step) * (rect).y; \
/* (x + w, y) */ \
(p1) = (rect).x + (rect).width + (step) * (rect).y; \
/* (x, y + h) */ \
(p2) = (rect).x + (step) * ((rect).y + (rect).height); \
/* (x + w, y + h) */ \
(p3) = (rect).x + (rect).width + (step) * ((rect).y + (rect).height);

参考

1. LBP特征原理及代码实现;

2. opencv源码解析之LBP特征;

3. 机器学习之LBP特征;

4. matalb code之MB-LBP特征;

5. Face Detection Based on Multi-Block LBP Representation;

6. Learning Multi-scale Block Local Binary Patterns for Face Recognition;

完

【特征提取】MultiBlock-LBP特征的更多相关文章

  1. 图像特征提取之LBP特征

    LBP(Local Binary Pattern,局部二值模式)是一种用来描述图像局部纹理特征的算子:它具有旋转不变性和灰度不变性等显著的优点.它是首先由T. Ojala, M.Pietik?inen ...

  2. 图像特征提取三大法宝:HOG特征,LBP特征,Haar特征(转载)

    (一)HOG特征 1.HOG特征: 方向梯度直方图(Histogram of Oriented Gradient, HOG)特征是一种在计算机视觉和图像处理中用来进行物体检测的特征描述子.它通过计算和 ...

  3. 目标检测的图像特征提取之(二)LBP特征

    LBP(Local Binary Pattern,局部二值模式)是一种用来描述图像年提出,用于纹理特征提取.而且,提取的特征是图像的局部的纹理特征: 1.LBP特征的描述 原始的LBP算子定义为在3* ...

  4. 图像特征提取三大法宝:HOG特征,LBP特征,Haar特征

    (一)HOG特征 1.HOG特征: 方向梯度直方图(Histogram of Oriented Gradient, HOG)特征是一种在计算机视觉和图像处理中用来进行物体检测的特征描述子.它通过计算和 ...

  5. [CV笔记]图像特征提取三大法宝:HOG特征,LBP特征,Haar特征

    (一)HOG特征 1.HOG特征: 方向梯度直方图(Histogram of Oriented Gradient, HOG)特征是一种在计算机视觉和图像处理中用来进行物体检测的特征描述子.它通过计算和 ...

  6. LBP特征学习(附python实现)

    LBP的全称是Local Binary Pattern即局部二值模式,是局部信息提取中的一种方法,它具有旋转不变性和灰度不变性等显著的优点.在人脸识别领域有很多案例,此外,局部特征的算法还有 SIFT ...

  7. 行人检测4(LBP特征)

    参考原文: http://blog.csdn.net/zouxy09/article/details/7929531 http://www.cnblogs.com/dwdxdy/archive/201 ...

  8. 目标检测的图像特征提取之_LBP特征

    LBP(Local Binary Pattern,局部二值模式)是一种用来描述图像局部纹理特征的算子:它具有旋转不变性和灰度不变性等显著的优点.它是首先由T. Ojala, M.Pietikäinen ...

  9. LBP特征

    此篇摘取 <LBP特征原理及代码实现> <LBP特征 学习笔记> 另可参考实现: <LBP特征学习及实现> <LBP特征的实现及LBP+SVM分类> & ...

随机推荐

  1. 图解ActiveMQ virtual topic

    http://activemq.apache.org/virtual-destinations.html 普通的 topic 是发布/订阅模式:消息会被广播发送给所有的订阅者,订阅者拿到的是全部消息, ...

  2. secFox setting

    secFox setting   1● load file 2● install 3● use  

  3. Java小程序分析

    public class Helloworld { public static void main(String[] args) { System.out.println("hello wo ...

  4. Linux音频驱动学习之:(2)移植wm8976声卡驱动(linux-3.4.2)

    1.wm8976驱动程序: /* * wm8976.h -- WM8976 Soc Audio driver * * This program is free software; you can re ...

  5. tomcat 启动Spring boot 项目

    SpringBoot 项目如何在tomcat容器中运行 1.相关连接: https://blog.csdn.net/u010598360/article/details/78789197/ 2.修改打 ...

  6. 干货分享!DevExpress v17.1最新版帮助文档下载大全

    DevExpress v17.1.5帮助文档下载列表大全来啦!包含.NET.VCL.HTML/JS系列所有帮助文档,提供CHM和PDF两个版本.除已停止更新的Silverlight.Windows 8 ...

  7. easyui 日期控件限制起始相差30天

    $('#lendDateStart').datebox('calendar').calendar({ validator: function(date){ var endDateStr = $('#l ...

  8. 使用 DirectX 创建 3D 图形

    官方链接   https://msdn.microsoft.com/zh-cn/library/windows/desktop/hh465137.aspx 使用 Windows 运行时初始化 Dire ...

  9. oracle 正则表达式 匹配

    oracle 正则表达式 在实际应用中,想排除带有中文的字段值: select h.froomnumber from t_broker_house h where REGEXP_LIKE(froomn ...

  10. oracle插入数据问题

    这个是我的表结构:desc T_STUDENT;Name         Type         Nullable Default Comments ------------ ----------- ...