局部二进制模式(Local Binary Patterns,LBP)——MATLAB实现

基本LBP:
逐行扫描图像,以图像中的每个像素点得灰度值为阈值,对其周围3*3的8邻域进行二值化,并从左上点开始按照顺时针方向(或逆时针,统一即可)将二值化结果组成一个二进制数,转换为十进制作为中心点的响应。这样可以得到一个LBP图像。
例如:
这里写图片描述
这个响应图像的直方图称为LBP统计直方图或LBP直方图。
生成LBP图像MATLAB代码:

%局部二进制模式LBP
close all
clear all

img=imread('sophie.bmp');
[m n]=size(img);
I=zeros(m,n);

for i=1:m
    for j=1:n        
        b0=0;
        b1=0;
        b2=0;
        b3=0;
        b4=0;
        b5=0;
        b6=0;
        b7=0;

        if(i-1>0 && j-1>0 && i+1<=m && j+1<=n)
            if(img(i-1,j-1)>img(i,j))
                b0=1;
            end

            if(img(i-1,j)>img(i,j))
                b1=1;
            end            

            if(img(i-1,j+1)>img(i,j))
                b2=1;
            end           

            if(img(i,j+1)>img(i,j))
                b3=1;
            end            

            if(img(i+1,j+1)>img(i,j))
                b4=1;
            end            

            if(img(i+1,j)>img(i,j))
                b5=1;
            end 

            if(img(i+1,j-1)>img(i,j))
                b6=1;
            end      

            if(img(i,j-1)>img(i,j))
                b7=1;
            end        

            if(img(i+1,j-1)>img(i,j))
                b5=1;
            end              
        b=b0+b1*2^1+b2*2^2+b3*2^3+b4*2^4+b5*2^5+b6*2^6+b7*2^7;
        I(i,j)=b;
    end
end
figure
subplot(1,2,1),subimage(img);
title('原图');
subplot(1,2,2),subimage(I);
title('LBP图像');

运行结果如下:
这里写图片描述

  • 3
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值