【特征提取】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 + ;
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特征;
5. Face Detection Based on Multi-Block LBP Representation;
6. Learning Multi-scale Block Local Binary Patterns for Face Recognition;
完
【特征提取】MultiBlock-LBP特征的更多相关文章
- 图像特征提取之LBP特征
LBP(Local Binary Pattern,局部二值模式)是一种用来描述图像局部纹理特征的算子:它具有旋转不变性和灰度不变性等显著的优点.它是首先由T. Ojala, M.Pietik?inen ...
- 图像特征提取三大法宝:HOG特征,LBP特征,Haar特征(转载)
(一)HOG特征 1.HOG特征: 方向梯度直方图(Histogram of Oriented Gradient, HOG)特征是一种在计算机视觉和图像处理中用来进行物体检测的特征描述子.它通过计算和 ...
- 目标检测的图像特征提取之(二)LBP特征
LBP(Local Binary Pattern,局部二值模式)是一种用来描述图像年提出,用于纹理特征提取.而且,提取的特征是图像的局部的纹理特征: 1.LBP特征的描述 原始的LBP算子定义为在3* ...
- 图像特征提取三大法宝:HOG特征,LBP特征,Haar特征
(一)HOG特征 1.HOG特征: 方向梯度直方图(Histogram of Oriented Gradient, HOG)特征是一种在计算机视觉和图像处理中用来进行物体检测的特征描述子.它通过计算和 ...
- [CV笔记]图像特征提取三大法宝:HOG特征,LBP特征,Haar特征
(一)HOG特征 1.HOG特征: 方向梯度直方图(Histogram of Oriented Gradient, HOG)特征是一种在计算机视觉和图像处理中用来进行物体检测的特征描述子.它通过计算和 ...
- LBP特征学习(附python实现)
LBP的全称是Local Binary Pattern即局部二值模式,是局部信息提取中的一种方法,它具有旋转不变性和灰度不变性等显著的优点.在人脸识别领域有很多案例,此外,局部特征的算法还有 SIFT ...
- 行人检测4(LBP特征)
参考原文: http://blog.csdn.net/zouxy09/article/details/7929531 http://www.cnblogs.com/dwdxdy/archive/201 ...
- 目标检测的图像特征提取之_LBP特征
LBP(Local Binary Pattern,局部二值模式)是一种用来描述图像局部纹理特征的算子:它具有旋转不变性和灰度不变性等显著的优点.它是首先由T. Ojala, M.Pietikäinen ...
- LBP特征
此篇摘取 <LBP特征原理及代码实现> <LBP特征 学习笔记> 另可参考实现: <LBP特征学习及实现> <LBP特征的实现及LBP+SVM分类> & ...
随机推荐
- Shelld5的使用
Shelld的连接7步 · · huhu_k: 想和你相遇.
- URL加载jar
// !/test.xml 是表示jar中的test.xml文件 final URL jarUrl = new URL("jar:file:/C:/proj/parser/jar/parse ...
- Java Code Examples for org.codehaus.jackson.map.DeserializationConfig 配置
The following code examples are extracted from open source projects. You can click to vote up the e ...
- mysql查看和修改密码策略
8.X版本: #查看密码策略 show variables like '%validate_password.policy%'; show variables like '%validate_pass ...
- Linux下使用systemctl命令
systemctl命令是系统服务管理器指令,它实际上将 service 和 chkconfig 这两个命令组合到一起. 任务 旧指令 新指令 使某服务自动启动 chkconfig --level 3 ...
- axios ajax fetch 区别
请求方式千千万,axios是一种对ajax的封装,fetch是一种浏览器原生实现的请求方式,跟ajax对等
- 【SQL】group by 及 having
Group By 分组汇总 HAVING:给分组设置条件 1.概述 “Group By”从字面意义上理解就是根据“By”指定的规则对数据进行分组,所谓的分组就是将一个“数据集”划分成若干个“小区域”, ...
- ldap+flask+python2实现统一认证里面的那些编码神坑
首先想吐槽下,直接接手别人的项目,而且是经过四五个人手的项目,是怎么个痛苦.两三套代码django.flask.tornado应有尽有,代码里,掰开手指头就可数的全英文注释,几台服务器没交接清楚,所有 ...
- day27-python阶段性复习-基础
一.基础资料,安装python Python 跨平台的,(Linux,Windows,mac) 网站www.python.org 解释器交互方式 Ipython Python shell https: ...
- JavaScript -基础- 函数与对象(二)String
一.判断数据类型typeof与判断对象类型instanceof 1.typeof typeof只能判断基础数据类型,无法判断引用数据类型 <script> var s="hell ...