LBP特征Matlab和C实现

LBP特征成为局部二值模式,具有旋转不变性,不受光照影响
主要分为一下几个步骤:
1.中心点邻域内8个像素,以中心点像素值为阈值,邻域内八个像素值大于中心点像素值即为1,小于中心点像素值即为0
2.周围八个像素点形成一个八位的二进制串比如11111111,即为255,00000000即为0,所以二进制串再(0,255)范围内
3.进行旋转,从左上角开始,然后按顺序进行旋转,形成八个二进制串,然后找出这个八个中的最小值代替中心点像素值,因此具有旋转不变性

Matlab代码如下:

function [LBPImage]=GetLBPImage(image)
	B=rgb2gray(image);
	[m,n]=size(B);
	X=[-1,0,1,1,1,0,-1,-1];%定义8个方向
	Y=[-1,-1,-1,0,1,1,1,0];
	prop=[];%属性,是否大于中心点像素值
	value=0;
	for i=2:m-1
	    for j=2:n-1
	        for k=1:8
	            y=i+Y(k);//新坐标
	            x=j+X(k);
	            if B(i,j)>B(y,x)
	                prop(k)=0;%小于中心点即为0
	            else
	                prop(k)=1;%大于中心点即为1
	            end
	        end
	        for m=1:8
	            value=value+(2^(8-m))*prop(m);%计算新的像素值
	        end
	        LBPImage(i,j)=value;
	        value=0;
	    end
	end
 

C语言代码:

在C语言中图像是数组形式,参数为:输入图像,LBP特征图

void CalculateLBPImage(X_UInt8 image[IMAGE_HEIGHT][IMAGE_WIDTH],X_UInt8 LBPImage[IMAGE_HEIGHT][IMAGE_WIDTH])
{
    int i,j,k;
    int x,y;
    int BinaryValue[8];
    int value;
    vector<int>LBPvalue;
    //定义八个方向
    int direction[8][2]={{-1,-1},{0,-1},{1,-1},{1,0},{1,1},{0,1},{-1,1},{-1,0}};
    for(i=1;i<IMAGE_HEIGHT-1;i++)
    {
        for(j =1;j<IMAGE_WIDTH-1;j++)
        {
        	for(int k=0;k<8;k++)
        	{
                    x=j+direction[k][0];//周围的坐标
                    y=i+direction[k][1];

                    if(image[y][x]>image[i][j])
                    {
                        BinaryValue[k]=1;
                    }
                    else
                    {
                        BinaryValue[k]=0;
                    }
         	}
            for(int m=0;m<8;m++)
            {
                  value+=BinaryValue[m]*(2^(7-m));//计算每一次旋转之后的像素值
            }
            LBPImage[i][j]=value;
        }
    }
}

原图:
在这里插入图片描述
LBP图像:
在这里插入图片描述

  • 4
    点赞
  • 66
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值