LBP(Local Binary Pattern),局部二值模式
一种描述图像局部纹理特征的算子
主要思想:: 通过比较图像区域中每个像素点与其邻域内像素点的灰度值,利用二进制模式表示的比较结果来描述图像的纹理特征。
keywords:邻域,灰度值,比较,直方图。
LBP性质
1.灰度不变性:光照难以改变各个像素块之间的大小关系。
2.旋转不变性
LBP特征向量提取步骤
1.检测窗口划分为16*16的区域cell。
2.对每一个cell进行如上比较,查收内哼8位二进制数,得到窗口中心像素点的LBP值。
3.计算每一个cell的直方图,并归一化。
4.将每个cell的直方图连接成一个特征向量。
5.用机器学习算法分类
人脸检测代码实现
参考: https://blog.csdn.net/hzy459176895/article/details/106984684?utm_medium=distribute.pc_relevant.none-task-blog-utm_term-6&spm=1001.2101.3001.4242
说明:opencv有训练好的人脸检测算法:https://github.com/opencv/opencv/blob/master/data/lbpcascades/lbpcascade_frontalface_improved.xml
#coding:utf-8
"""
LBP特征用于人脸检测...
"""
import cv2 as cv
# 读取原始图像
img = cv.imread('D:\DigitalGaphicsProcessing\hezhao1.jfif')
# 训练好的LBP,人脸检测模型
face_detect = cv.CascadeClassifier("lbpcascade_frontalface_improved.xml")
# 灰度处理
gray = cv.cvtColor(img, code=cv.COLOR_BGR2GRAY)
# 检查人脸: scaleFactor表示每次图像尺寸减小的比例, minNeighbors表示每一个目标至少要被检测到3次才算是真的目标
face_zone = face_detect.detectMultiScale(gray, scaleFactor=2, minNeighbors=3