LBP特征(1)原始LBP特征

参考:https://blog.csdn.net/quincuntial/article/details/50541815

一、LBP特征的背景介绍

LBP指局部二值模式,英文全称:Local Binary Pattern,是一种用来描述图像局部特征的算子,LBP特征具有灰度不变性和旋转不变性等显著优点。它是由T. Ojala, M.Pietikäinen, 和 D. Harwood [1][2]在1994年提出,由于LBP特征计算简单、效果较好,因此LBP特征在计算机视觉的许多领域都得到了广泛的应用,LBP特征比较出名的应用是用在人脸识别和目标检测中,在计算机视觉开源库Opencv中有使用LBP特征进行人脸识别的接口,也有用LBP特征训练目标检测分类器的方法,Opencv实现了LBP特征的计算,但没有提供一个单独的计算LBP特征的接口。

二、原始LBP特征描述及计算方法

原始的LBP算子定义在像素3*3的邻域内,以邻域中心像素为阈值,相邻的8个像素的灰度值与邻域中心的像素值进行比较,若周围像素大于中心像素值,则该像素点的位置被标记为1,否则为0。这样,3*3邻域内的8个点经过比较可产生8位二进制数,将这8位二进制数依次排列形成一个二进制数字,这个二进制数字就是中心像素的LBP值,LBP值共有2828种可能,因此LBP值有256种。中心像素的LBP值反映了该像素周围区域的纹理信息。 
备注:计算LBP特征的图像必须是灰度图,如果是彩色图,需要先转换成灰度图。 
上述过程用图像表示为: 
这里写图片描述

这里写图片描述

将上述过程用公式表示为: 

这里写图片描述

(xc,yc)(xc,yc)为中心像素的坐标,p为邻域的第p个像素,ip为邻域像素的灰度值,ic为中心像素的灰度值,s(x)s(x)为符号函数

原始LBP特征计算代码(Opencv3.4.6下):

template <typename _tp>
void getOriginLBPFeature(cv::Mat src, cv::Mat &dst)
{
	dst = cv::Mat::zeros(src.rows - 2, src.cols - 2, CV_8UC1);

	for (int i = 1; i<src.rows - 1; i++)
	{
		for (int j = 1; j<src.cols - 1; j++)
		{
			_tp center = src.at<_tp>(i, j);
			unsigned char lbpCode = 0;
			lbpCode |= (src.at<_tp>(i - 1, j - 1) > center) << 7;
			lbpCode |= (src.at<_tp>(i - 1, j) > center) << 6;
			lbpCode |= (src.at<_tp>(i - 1, j + 1) > center) << 5;
			lbpCode |= (src.at<_tp>(i, j + 1) > center) << 4;
			lbpCode |= (src.at<_tp>(i + 1, j + 1) > center) << 3;
			lbpCode |= (src.at<_tp>(i + 1, j) > center) << 2;
			lbpCode |= (src.at<_tp>(i + 1, j - 1) > center) << 1;
			lbpCode |= (src.at<_tp>(i, j - 1) > center) << 0;
			dst.at<uchar>(i - 1, j - 1) = lbpCode;
		}
	}
}

int main()
{
	cv::Mat src = imread("..\\..\\image\\keliamoniz1.jpg", 0);
	cv::Mat dst;

	getOriginLBPFeature<uchar>(src, dst);

	return 0;
}

  

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

JoannaJuanCV

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值