人脸识别之LBPH
来源:互联网 发布:工商银行网络银行 编辑:程序博客网 时间:2024/05/01 01:04
LBPH(Local Binary PatternsHistograms)局部二进制编码直方图,建立在LBPH基础之上的人脸识别法基本思想如下:首先以每个像素为中心,判断与周围像素灰度值大小关系,对其进行二进制编码,从而获得整幅图像的LBP编码图像;再将LBP图像分为个区域,获取每个区域的LBP编码直方图,继而得到整幅图像的LBP编码直方图,通过比较不同人脸图像LBP编码直方图达到人脸识别的目的,其优点是不会受到光照、缩放、旋转和平移的影响。Opencv自带的LBPH人脸识别算法原理如下:
1. 加载数据
用vector<Mat>imgs和vector<int> labels分别存储各图像数据和图像对应的标签;
注:如果图像对应标签相同证明是同一个人;
2. 训练模型
2.1 初始化参数
(1) 初始化采样半径(radius=1),邻域大小(neighbors=8),宽度方向和高度方向格子数(gridx=8, gridy=8,),直方图距离阈值(threshold = DBL_MAX)。
(2) 利用 labels初始化模型标签数组 _labels。
2.2 LBP编码
计算各图像LBP编码图像LBPi ,大小为 ,各像素值计算方法如下:
(1) 依次计算所有像素坐标第n邻域对应像素偏移坐标
(2) 双线性差值计算所有像素坐标(x,y)第n邻域的灰度值以及编码值:
(3) 计算所有像素的LBP编码值
2.3 计算直方图
各LBPi图像对应直方图矩阵HISTi宽度为,高度为
(1) 计算每个格子的宽度和高度:
(2) 按照行序统计每个格子内直方图各值的高度,并依次将结果存储在HISTi的每一行;并对直方图高度归一化,即所有直方图高度除以w_grad*h_grad。以行为主序将HISTi转换为为1行列的向量矩阵。
(3) 将所有人脸训练图像直方图矩阵HISTi插入到成员变量_histograms,其中_histograms的行数为,列数为N。
3. 更新模型
首先设置更新模型图像数据和图像对应标签数据;更新模型算法和训练模型算法一致,唯一的区别是在训练模型之前不需要将_labels和_histograms清零。
4. 预测
按照3中方法计算待识别人脸图片直方图矩阵HISTq,计算HISTq和训练模型中各图像_histogramsi直方图之间的距离,记录距离最dis_min 的直方图图像对应标签label_min,如果dis_min<threshold,则该人脸图片对应标签为label_min,否则返回-1。计算两直方图之间距离方法(opencv函数compareHist)如下:
其中,分别为训练模型第i个直方图值为j的直方图高度和待匹配图像值为j的直方图高度;len为直方图最大值。
- 人脸识别之LBPH
- LBPH+Adaboost人脸检测、识别
- 【计算机视觉】OpenCV人脸识别facerec源码分析2——LBPH概述
- OpenCV人脸识别facerec源码分析2――LBPH概述
- 【计算机视觉】OpenCV人脸识别facerec源码分析2——LBPH概述
- OpenCV人脸识别facerec源码分析2——LBPH概述
- 【计算机视觉】OpenCV人脸识别facerec源码分析2——LBPH概述
- 【计算机视觉】OpenCV人脸识别facerec源码分析2——LBPH概述
- Linux系统下利用OpenCV实现人脸检测和基于LBPH算法的人脸识别
- 人脸检测--LBPH-局部二进制编码直方图
- 图片识别之人脸识别API
- 人脸识别之颜色识别
- 人脸识别之特征向量
- 人脸识别之PCA
- 人脸识别之FaceNet
- 人脸识别之light_cnn
- 人脸识别之DeepFace
- 人脸识别之Face++
- c++ double类型的误差
- [iOS Crash文件分析]-如何使用symbolicatecrash工具
- 烤鸭的gerrit使用总结
- 单元测试之覆盖率浅谈
- 怎么查询局域网内全部电脑IP和mac地址等信息?
- 人脸识别之LBPH
- CCS3.1调试总结
- 动态规划学习系列——数位DP(练手一)
- 容器介绍之Vector
- iOS 开发实战-锁屏界面(手势解锁)
- iOS开发UI篇—iPad和iPhone开发的比较
- iOS 热敏打印机打印位图
- SAP EP实现文件下载功能
- IOS中获取各种文件的目录路径的方法