当前位置: 首页 > news >正文

【特征提取】MultiBlock-LBP特征

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 + 1;
    for( int x = 0; x < winSize.width; x++ )
        for( int y = 0; y < winSize.height; y++ )
            for( int w = 1; w <= winSize.width / 3; w++ )
                for( int h = 1; h <= winSize.height / 3; h++ )
                    if ( (x+3*w <= winSize.width) && (y+3*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[0], p[1], p[4], p[5], tr, offset )
    tr.x += 2*rect.width;
    CV_SUM_OFFSETS( p[2], p[3], p[6], p[7], tr, offset )
    tr.y +=2*rect.height;
    CV_SUM_OFFSETS( p[10], p[11], p[14], p[15], tr, offset )
    tr.x -= 2*rect.width;
    CV_SUM_OFFSETS( p[8], p[9], p[12], p[13], tr, offset )
}
View Code

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[5]] - psum[p[6]] - psum[p[9]] + psum[p[10]];

    return (uchar)((psum[p[0]] - psum[p[1]] - psum[p[4]] + psum[p[5]] >= cval ? 128 : 0) |   // 0
        (psum[p[1]] - psum[p[2]] - psum[p[5]] + psum[p[6]] >= cval ? 64 : 0) |    // 1
        (psum[p[2]] - psum[p[3]] - psum[p[6]] + psum[p[7]] >= cval ? 32 : 0) |    // 2
        (psum[p[6]] - psum[p[7]] - psum[p[10]] + psum[p[11]] >= cval ? 16 : 0) |  // 5
        (psum[p[10]] - psum[p[11]] - psum[p[14]] + psum[p[15]] >= cval ? 8 : 0) | // 8
        (psum[p[9]] - psum[p[10]] - psum[p[13]] + psum[p[14]] >= cval ? 4 : 0) |  // 7
        (psum[p[8]] - psum[p[9]] - psum[p[12]] + psum[p[13]] >= cval ? 2 : 0) |   // 6
        (psum[p[4]] - psum[p[5]] - psum[p[8]] + psum[p[9]] >= cval ? 1 : 0));     // 3
}
View Code

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;

 

转载于:https://www.cnblogs.com/happyamyhope/p/10332856.html

相关文章:

  • STM32L431驱动带UC1698芯片调试记录
  • 函数模板
  • Java发布webservice应用并发送SOAP请求调用
  • .NET Core 项目指定SDK版本
  • Dockerfile 中的 CMD 与 ENTRYPOINT
  • 将golang中变量重置为零的reflect方法
  • Java虚拟机之内存模型
  • [CTSC2014]企鹅QQ
  • 单词接龙---牛客网
  • Bzoj2164 采矿(线段树+树链剖分)
  • 个位数统计
  • CF528D Fuzzy Search (生成函数+FFT)
  • c++随机数引擎
  • 《学习之道》第六章番茄工作法
  • 加密_滴答~滴
  • android 一些 utils
  • angular学习第一篇-----环境搭建
  • HTML中设置input等文本框为不可操作
  • JS题目及答案整理
  • Laravel 中的一个后期静态绑定
  • PHP的类修饰符与访问修饰符
  • STAR法则
  • Travix是如何部署应用程序到Kubernetes上的
  • UMLCHINA 首席专家潘加宇鼎力推荐
  • vue自定义指令实现v-tap插件
  • WordPress 获取当前文章下的所有附件/获取指定ID文章的附件(图片、文件、视频)...
  • Zepto.js源码学习之二
  • 排序算法学习笔记
  • 微信开放平台全网发布【失败】的几点排查方法
  • 移动端解决方案学习记录
  • 正则表达式-基础知识Review
  • (2)MFC+openGL单文档框架glFrame
  • (27)4.8 习题课
  • (html转换)StringEscapeUtils类的转义与反转义方法
  • (Redis使用系列) Springboot 使用redis实现接口幂等性拦截 十一
  • (顶刊)一个基于分类代理模型的超多目标优化算法
  • (二)linux使用docker容器运行mysql
  • (附源码)spring boot车辆管理系统 毕业设计 031034
  • (附源码)spring boot智能服药提醒app 毕业设计 102151
  • (解决办法)ASP.NET导出Excel,打开时提示“您尝试打开文件'XXX.xls'的格式与文件扩展名指定文件不一致
  • (每日持续更新)jdk api之StringBufferInputStream基础、应用、实战
  • (免费分享)基于springboot,vue疗养中心管理系统
  • (牛客腾讯思维编程题)编码编码分组打印下标题目分析
  • (使用vite搭建vue3项目(vite + vue3 + vue router + pinia + element plus))
  • (续)使用Django搭建一个完整的项目(Centos7+Nginx)
  • (转)使用VMware vSphere标准交换机设置网络连接
  • .gitignore
  • .Net 8.0 新的变化
  • .NET Framework .NET Core与 .NET 的区别
  • .net Signalr 使用笔记
  • .NET 使用 JustAssembly 比较两个不同版本程序集的 API 变化
  • .NET 中 GetProcess 相关方法的性能
  • .NET(C#) Internals: as a developer, .net framework in my eyes
  • .Net中的集合
  • //解决validator验证插件多个name相同只验证第一的问题