本章我们学习LBP图像的原理和使用,因为接下来教程我们要使用LBP图像的直方图来进行脸部识别。

参考资料:

http://docs.opencv.org/modules/contrib/doc/facerec/facerec_tutorial.html

http://www.cnblogs.com/mikewolf2002/p/3438166.html

      LBP的基本思想是以图像中某个像素为中心,对相邻像素进行阈值比较。如果中心像素的亮度大于等于它的相邻像素,把相邻像素标记为1,否则标记为0。我们可以用二进制数字来表示LBP图中的每个像素的LBP编码,比如下图中的中心像素,它的LBP编码为:00010011,其十进制值为19。

OpenCV学习(39) OpenCV中的LBP图像

用公式表示就是:

OpenCV学习(39) OpenCV中的LBP图像

其中(xc,yc)是中心像素,ic是灰度值,in是相邻像素的灰度值,s是一个符号函数:

OpenCV学习(39) OpenCV中的LBP图像

在OpenCV的LBP算法中,使用圆形的LBP算子:

 

对于一个点OpenCV学习(39) OpenCV中的LBP图像, 它的近邻点 OpenCV学习(39) OpenCV中的LBP图像用以下公式计算:

OpenCV学习(39) OpenCV中的LBP图像

其中R是半径,p是样本点的个数。

如果就算的结果不在像素坐标上,我们则使用双线性插值进行近似处理。

OpenCV学习(39) OpenCV中的LBP图像

下面的代码中,我们分别实现了通常LBP图和圆形算子LBP图。

      elbp是圆形算子LBP函数,elbp1是通常LBP图,我们分别对lena的图像进行了处理,结果如下所示,从途中可以看出来,使用圆形算子的效果锐度更强。

while(1)
cv::waitKey(0);
}

OpenCV学习(39) OpenCV中的LBP图像OpenCV学习(39) OpenCV中的LBP图像OpenCV学习(39) OpenCV中的LBP图像

我们换另外一张图,该图包括不同光照下的四副照片,再来看看LBP图的效果:

OpenCV学习(39) OpenCV中的LBP图像

OpenCV学习(39) OpenCV中的LBP图像

OpenCV学习(39) OpenCV中的LBP图像

 

 

程序代码:

FirstOpenCV36

相关文章: