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

来源:互联网 发布:淘宝开店需要的csv 编辑:程序博客网 时间:2024/06/09 23:44

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

%局部二进制模式LBPclose allclear allimg=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;    endendfiguresubplot(1,2,1),subimage(img);title('原图');subplot(1,2,2),subimage(I);title('LBP图像');

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

原创粉丝点击