OpenCV 人脸跟踪

简介

​ OpenCV是一个基于BSD许可开源发行的跨平台计算机视觉库。拥有C++,Python和Java接口,并且支持Windows, Linux, Mac OS, iOS 和 Android系统。实现了图像处理和计算机视觉方面的很多通用算法。

模块

功能

Core 核心基础模块,定义了被所有其他模块和基本数据结构(包括重要的多维数组Mat)使用的基本函数、底层数据结构和算法函数

Imgproc 图像处理模块,包括:滤波、高斯模糊、形态学处理、几何变换、颜色空间转换 及直方图计算等

Highgui 高层用户交互模块,包括:GUI、图像与视频IO等

Video 视频分析,,运动分析及目标跟踪。

Calib3d 3D模块,包括:摄像机标定、立体匹配、3D重建等

Features2d 二维特征检测与描述模块,包括:图像特征检测、描述、匹配等

Objdetect 目标检测模块,如:人脸检测等

MI 机器学习模块,包括:支持向量机、神经网络等

Flann 最近邻开源库。包含一系列查找算法,自动选取最快算法的机制。

Imgcodecs 图像编解码模块,图像文件的读写操作

Photo 图像计算(处理)模块,图像修复及去噪。

Shape 形状匹配算法模块。描述形状、比较形状

Stitching 图像拼接

Superres 超分辨率模块

Videoio 视频读写模块,视频文件包括摄像头的输入。

Videostab 解决拍摄的视频稳定

Dnn 深度神经网络

contrib 可以引入额外模块

LBP
在这里插入图片描述LBP的核心思想就是:以中心像素的灰度值作为阈值,与他的领域相比较得到相对应的二进制码来表示局部纹理特征。OpenCV 人脸跟踪_第1张图片
基本LBP

原始的LBP算子定义为在3*3的窗口内,处理83这个像素点的lbp值:

​ 将83与包围83的8个位置进行比较。如果大于83则取值为1,否则为0,然后将这些数据顺时针组合在一起,这样的到一个01111100,即:0x7C(124)。这就是83位置的lbp值。顺序并无硬性要求,只要在同一处理中保持相同的顺序即可。提取的LBP算子在每个像素点都可以得到一个LBP值,对一幅图像提取其原始的LBP算子之后,得到的原始LBP特征依然是“一幅图片”(记录的是每个像素点的LBP值)这种图片称之为lbp图谱。

OpenCV 人脸跟踪_第2张图片
从lBP定义可以看出LBP是灰度不变的,简单来说就是对图像的灰度值根据一个系数X进行修改,得出的LBP值不变。

圆形LBP

​ 基本的 LBP算子的最大缺陷在于它只覆盖了一个固定3x3范围内的小区域,为了满足不同尺寸的需要,并达到灰度和旋转不变性的要求,对 LBP 算子进行了改进,将 3×3邻域扩展到任意邻域,并用圆形邻域代替了正方形邻域。以某个像素点为中心,以一个任意大小半径R画一个圆,将落在圆内的P个像素与中心点像素比较得到LBP算子。OpenCV 人脸跟踪_第3张图片
旋转不变LBP

​ LBP 算子是灰度不变的,但却不是旋转不变的,图像的旋转就会得到不同的 LBP值。OpenCV 人脸跟踪_第4张图片
为了解决这个问题,将 LBP算子进行了扩展具有旋转不变性。LBP的旋转不变模式,即不断旋转圆形邻域得到一系列初始定义的 LBP值,取其最小值作为该邻域的 LBP 值。OpenCV 人脸跟踪_第5张图片
首先获得LBP值为: 11100001 (255),进过旋转分别得到8中不同的LBP值,最终得到的具有旋转不变性的 LBP值为 15。

等价LBP

​ 对于半径为R的圆形区域内含有P个采样点的LBP算子将会产生2^P(0和1的排列组合)种模式。随着邻域集内采样点数的增加,二进制模式的种类是以指数形式增加的。这么多的二进制模式导致在人脸检测时候LBP模式统计直方图过于稀疏(见下面检测原理部分)。因此需要对原始的LBP模式进行降维,也就是减少数据量。

​ 等价模式(均匀模式)就是解决这个问题的。在实际图像中,绝大多数LBP模式最多只包含两次从1到0或从0到1的跳变。因此,等价模式定义为:当某个LBP所对应的循环二进制数从0到1或从1到0最多有两次跳变时,该LBP所对应的二进制就称为一个等价模式类,除等价模式类以外的模式都归为另一类,称为混合模式类。

​ 00000000(0次跳变),00000111(1次从0到1的跳变),10001111(1到0,0到1,两次跳变)是等价模式类。

​ 10010111(共四次跳变)是混合模式类。

​ 通过这样的改进,二进制模式数量由原来的2^P种减少为 P* ( P-1)+2种。OpenCV 人脸跟踪_第6张图片
检测原理

​ 将一幅图片划分为若干的子区域,对每个子区域内的每个像素点都提取LBP特征,然后,在每个子区域内建立LBPH(LBP特征的统计直方图)。 每个子区域就可以用一个统计直方图来进行描述;整个图片就由若干个统计直方图组成 之后,将图片和人脸的直方图进行相似性比较。OpenCV 人脸跟踪_第7张图片OpenCV 人脸跟踪_第8张图片
附【Android进阶资料】OpenCV 人脸跟踪_第9张图片
加群:861531554 即可获得

你可能感兴趣的:(OpenCV 人脸跟踪)