lbp

LBP特征提取原理及代码实现

北战南征 提交于 2020-03-06 15:37:25
老规矩,先上背景,算是表示对LBP算法提出者的一种尊敬(其实,是为了装...kkk,大家都懂ha)。 一、LBP背景:     LBP(Local Binary Pattern,局部二值模式)是一种用来描述图像 局部纹理特征 的算子;它具有旋转不变性和灰度不变性等显著的优点。它是首先由 T. Ojala, M.Pietikäinen, 和D. Harwood 在1994年提出,用于纹理特征提取。而且,提取的特征是图像的局部的纹理特征。至今,仍在图像识别和人脸识别部分,有很好的效果。 二、LBP特征的原理:      从94年T. Ojala, M.Pietikäinen, 和D. Harwood提出至今,LBP经历过多次的改进,以下根据时间顺序介绍: FirstBleed:    原始的LBP算子定义为在3*3的窗口内,以窗口内的中心点的像素值为标准,对比窗口内其余8个元素的像数值大小,大于中心点的位置用1表示,小于为0。如此,3*3领域内的8个点恰可产生8为二进制数字(通常转化为十进制表示成LBP值)即为中心点的LBP特征值。     上图: SecondBleed:    原始的LBP提出后,研究人员不断对其改进和优化,以下是改进点。   (一):圆形LBP算子:      原始LBP算子固定为某个区域,在图像尺寸和频率纹理发生改变时,会出现很大的偏差

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

喜欢而已 提交于 2020-02-07 04:46:25
图像特征提取三大法宝:HOG特征,LBP特征,Haar特征 (一)HOG特征 1、HOG特征: 方向梯度直方图(Histogram of Oriented Gradient, HOG)特征是一种在计算机视觉和图像处理中用来进行物体检测的特征描述子。它通过计算和统计图像局部区域的梯度方向直方图来构成特征。Hog特征结合SVM分类器已经被广泛应用于图像识别中,尤其在行人检测中获得了极大的成功。需要提醒的是,HOG+SVM进行行人检测的方法是法国研究人员Dalal在2005的CVPR上提出的,而如今虽然有很多行人检测算法不断提出,但基本都是以HOG+SVM的思路为主。 (1)主要思想: 在一副图像中,局部目标的表象和形状(appearance and shape)能够被梯度或边缘的方向密度分布很好地描述。(本质:梯度的统计信息,而梯度主要存在于边缘的地方)。 (2)具体的实现方法是: 首先将图像分成小的连通区域,我们把它叫细胞单元。然后采集细胞单元中各像素点的梯度的或边缘的方向直方图。最后把这些直方图组合起来就可以构成特征描述器。 (3)提高性能: 把这些局部直方图在图像的更大的范围内(我们把它叫区间或block)进行对比度归一化(contrast-normalized),所采用的方法是:先计算各直方图在这个区间(block)中的密度,然后根据这个密度对区间中的各个细胞单元做归一化

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

穿精又带淫゛_ 提交于 2020-02-07 04:45:06
LBP( Local Binary Pattern ,局部二值模式)是一种用来描述图像 局部纹理特征 的算子;它具有旋转不变性和灰度不变性等显著的优点。它是首先由 T. Ojala, M.Pietikäinen, 和 D. Harwood 在 1994 年提出,用于纹理特征提取。而且,提取的特征是图像的局部的纹理特征; 1 、 LBP 特征的描述 原始的 LBP 算子定义为在 3*3 的窗口内,以窗口中心像素为阈值,将相邻的 8 个像素的灰度值与其进行比较,若周围像素值大于中心像素值,则该像素点的位置被标记为 1 ,否则为 0 。这样, 3*3 邻域内的 8 个点经比较可产生 8 位二进制数(通常转换为十进制数即 LBP 码,共 256 种),即得到该窗口中心像素点的 LBP 值,并用这个值来反映该区域的纹理信息。如下图所示: LBP 的改进版本: 原始的 LBP 提出后,研究人员不断对其提出了各种改进和优化。 ( 1 )圆形 LBP 算子: 基本的 LBP 算子的最大缺陷在于它只覆盖了一个固定半径范围内的小区域,这显然不能满足不同尺寸和频率纹理的需要。为了适应不同尺度的纹理特征,并达到灰度和旋转不变性的要求, Ojala 等对 LBP 算子进行了改进,将 3 × 3 邻域扩展到任意邻域,并用圆形邻域代替了正方形邻域,改进后的 LBP 算子允许在半径为 R

【计算机视觉】如何使用opencv自带工具训练人脸检测分类器

大城市里の小女人 提交于 2019-12-26 03:31:23
前言 使用opencv自带的分类器效果并不是很好,由此想要训练自己的分类器,正好opencv有自带的工具进行训练。本文就对此进行展开。 步骤 1.查找工具文件; 2.准备样本数据; 3.训练分类器; 具体操作 注意,本文是在windows系统实现的,当然也可以在linux系统进行。 1.查找工具文件 ; opencv中的自带的分类器训练工具在开源库中以应用程序的类型呈现的,具体目录如下。 .\opencv2410\build\x64\vc12\bin 可以在该目录下查找到相关的工具文件,有opencv_createsamples、opencv_haartraining、opencv_performance、opencv_traincascade; 其中,opencv_haartraining和opencv_traincascade是opencv开源库用于训练级联分类器的两个程序。opencv_traincascade是一个较新的程序,使用OpenCV2.x API以c++编写,二者的主要区别是opencv_traincascade支持Haar和LBP两种特征,并易于增加其他特征。与Haar特征相比,LBP特征是整数特征,因此训练和检测过程都会比Haar特征快几倍。LBP和Haar特征用于检测的准确率是依赖训练过程中训练数据的质量和训练参数

LBP扩展与多尺度表达(二)

╄→гoц情女王★ 提交于 2019-12-05 03:05:13
LBP的统一模式和非统一模式: (降维度) 统一模式: 中心点的一周,两个相邻像素点间求导为1,即由0到1跳变,或者由1向0跳变。 则跳变的次数为U的值,U等于0或者2时即为统一模式,否则为非统一模式。 统一模式共有58种: 非统一模式: 灰度不变性的圆形LBP算法: 从上面的计算我们可以看出,基本的LBP算法的计算仅包含其相邻的八个像素点,半径小,覆盖范围很小,这种方式的表达能力相对较小. 所以,Ojala等人提出一种改进的方法,将原来的3 3的方形九个像素点的计算模式,改成了任一点即半径的圆形模式,这样表达方式就不受限制了, 而且原始的正方形领域的像素点空间被圆形领域所代替。这种圆形领域的算法的半径R可以任意的改变,且半径R的像素点个数也不固定。 * 改进后的LBP算法通常用符号LBP(p,b)表达,R为圆形半径,P代表在该圆形范畴内的P个不同像素点。 下图为****几种常见的不同半径和不同像素点的LBP算法的示意图: 为了对LBP算子进行表示,用函数E表示为中心像素和相邻像素点的联合分布函数: 其中,gr表示图像中某个中心像素点的灰度值,g0~gk-1表示与中心像素点相邻的周围的 像素点,其中K=0,1,2~k-1。 每个E函数其中心像素点和相邻像素点所围成的圆的半径可以不同,其相邻像素点的数量也可以不同。****一个中心像素点周围的其它像素点gk的坐标可以表示成如式1所示:

LBPH-matlab

匿名 (未验证) 提交于 2019-12-03 00:33:02
LBPH,Local Binary Patterns Histograms,即LBP特征的统计直方图,LBPH将LBP特征与图像的空间信息结合在一起。这种表示方法由Ahonen等人在论文[3]中提出,他们将LBP特征图像分成m个局部块,并提取每个局部块的直方图,然后将这些直方图依次连接在一起形成LBP特征的统计直方图,即LBPH。 一幅图像具体的计算LBPH的过程: 计算图像的LBP特征图像。 将LBP特征图像进行分块,Opencv中默认将LBP特征图像分成8行8列64块区域 计算每块区域特征图像的直方图cell_LBPH,将直方图进行归一化,直方图大小为1*numPatterns 将上面计算的每块区域特征图像的直方图按分块的空间顺序依次排列成一行,形成LBP特征向量,大小为1*(numPatterns*64) 用机器学习的方法对LBP特征向量进行训练,用来检测和识别目标 举例说明LBPH的维度: 采样点为8个,如果用的是原始的LBP或Extended LBP特征,其LBP特征值的模式为256种,则一幅图像的LBP特征向量维度为:64*256=16384维,而如果使用的UniformPatternLBP特征,其LBP值的模式为59种,其特征向量维度为:64*59=3776维,可以看出,使用等价模式特征,其特征向量的维度大大减少,这意味着使用机器学习方法进行学习的时间将大大减少

两种改进的LPB算法,CLBP和ELBP

匿名 (未验证) 提交于 2019-12-03 00:22:01
最近看了两篇关于CLBP和ELBP的文章。现在对文中提到的LBP相关知识做一个小小的总结 一、LBP简介 1.传统LBP 其中 是中心像素的灰度值, 是其邻域像素的灰度值。通过比较中心像素周围邻域像素与中心像素的大小,大于中心像素为1,小于中心 像素为了,最后按一定顺序进行二进制编码。对于没有完全落在像素中心的邻域点,可以通过线性插值的方法来估算其灰度值。最后通过遍历所有LBP像素值,建立直方图来表示该图的纹理特征。假设图片尺寸是i*j,则直方图表达为: 2.uniform LBP 由上文可知,传统LBP会生成一个非常冗长的直方图,由于巨大维数,H值的估计也十分棘手,并且LBP对噪声十分敏感,围绕中心像素轻微的上下波动,可能导致编码结果大相径庭。因此,Ojala等人提出了统一编码模式: U表示二进制编码0/1跳变的次数。一般情况下,U<=2,称之为统一模式,以p=8为例,共有8*7+3=59个编码值,其中58个为统一模式如下图所示。考虑旋转不变性,行将其分成p+2个值。 3. 由于LBP过分简化了局部结构丢失了纹理信息,Ojala等人通过对每个局部模式进行对比,提出了一个局部互补的描述子,称为 ,并使用2维直方图并联 和 ,这里记为LBP/VAR 二、CLBP 与传统LBP不同,CLBP具有3个描述子。分别是CLBP-C、CLBP-S、CLBP-M。 如图,规定 ,其中 上述公式中

LBP特征(2)旋转LBP特征

匿名 (未验证) 提交于 2019-12-02 23:36:01
参考: https://blog.csdn.net/quincuntial/article/details/50541815 旋转不变LBP特征 如图,通过对得到的LBP特征进行旋转,得到一系列的LBP特征值,最终将特征值最小的一个特征模式作为中心像素点的LBP特征。 //旋转不变圆形LBP特征计算 template <typename _tp> void getRotationInvariantLBPFeature(InputArray _src, OutputArray _dst, int radius, int neighbors) { Mat src = _src.getMat(); //LBP特征图像的行数和列数的计算要准确 _dst.create(src.rows - 2 * radius, src.cols - 2 * radius, CV_8UC1); Mat dst = _dst.getMat(); dst.setTo(0); for (int k = 0; k<neighbors; k++) { //计算采样点对于中心点坐标的偏移量rx,ry float rx = static_cast<float>(radius * cos(2.0 * CV_PI * k / neighbors)); float ry = -static_cast<float>(radius

增强旋转不变LBP算法及其在图像检索中的应用

扶醉桌前 提交于 2019-12-02 11:33:47
1、所谓的 灰度不变性 ,指的是 光照变化 是否会对描述产生影响,所以比如有一个强光照在某个像素上面,这9个值应该是都会增大,但是相对的大小关系仍然是会编码成右边这样的一个二值图。 2、旋转不变性:图像的旋转就会得到 不同 的 LBP值 3、LBP旋转不变模式,丢弃了部分纹理模式 ??? 4、中心对称LBP ??? LBP等价模式 考察LBP算子的定义可知,一个LBP算子可以产生多种二进制模式(p个采样点)如:3x3邻域有p=8个采样点,则可得到2^8=256 ,5x5邻域有p=24个采样点,则可得到2^24=16777216种二进制模式,以此类推…。显然,过多的二进制模式无论对于纹理的提取还是纹理的识别、分类及信息存取都是不利的,在实际应用中不仅要求采用的算子尽量简单,同时也要考虑到计算速度、存储量大小等问题。因此需要对原始的LBP模式进行降维。 Ojala提出一种“等价模式”(Uniform Pattern)来对LBP算子进行降维,Ojala等认为图像中,某个局部二进制模式所对应的循环二进制数从0—>1或从1—>0,最多有两次跳变,该局部二进制模式所对应的二进制就成为一个等价模式。如00000000,00111000,10001111,11111111等都是等价模式类。 判断 一个二进制模式是否为等价模式最简单的 办法 就是将LBP值与其循环移动一位后的值进行按位相与

论文阅读:Face Recognition: From Traditional to Deep Learning Methods 《人脸识别综述:从传统方法到深度学习》

让人想犯罪 __ 提交于 2019-11-26 19:17:50
论文阅读: Face Recognition: From Traditional to Deep Learning Methods 《人脸识别综述:从传统方法到深度学习》 一、引言 1.探索人脸关于姿势、年龄、遮挡、光照、表情的不变性,通过特征工程人工构造feature,结合PCA、LDA、支持向量机等机器学习算法。 2.流程 人脸检测,返回人脸的bounding box 人脸对齐,用2d或3d的参考点,去对标人脸 人脸表达,embed 人脸匹配,匹配分数 二、人脸识别发展综述 1.几何特征 最早:边缘提取算子和连通域算子提取特征器官 发展:梯度图像 普氏距离分析 基于几何理论的方法在3d识别中有一定应用 [20][21] 2.整体方法 PCA [22-24] PCA的概率版变体,利用贝叶斯分析 [25]。使用两组特征脸来描述相同人和不同人之间variation PAC其他变体 kernel PCA 独立成分分析 ICA 其他见文章 PCA方法总的来说是基于整体脸,而不是局部部件,来判断输入图像是否是人脸。 PCA方法的问题在于,其投影将训练集中所有图片的variance最大化了,也就是说,最大的特征向量并不利于人脸识别,这是因为,提取到的eigenvector很有可能同一个体的variation(光照,姿势,表情带来的) LDA,即Fisher discriminant