最近一直在做多视图的聚类与分裂,想要图片有更多的视图,就得对图片的特征进行抽取,那我们来聊聊图片的LBP特征。

Local binary patterns (局部二值模式),是机器视觉中重要的一种特征,它属于一个纹理问题。其核心是将各个元素与其他附近的像素进行比较,然后把结果保存为二进制数。LBP最重要的属性是对诸如光照变化等造成的灰度变化的鲁棒性。它的另外一个重要特性是它的计算简单,这使得它可以对图像进行实时分析。、

LBP算子的计算流程:

首先如下图1:每个点的像素值表示出来,如果比中心的点大或者等于则为1,小则为0.得到图2为:其中以这个3x3的矩阵最上面最左边第一个为1,然后顺时针依次变成2,4,8,16,32,64,125

图1                        图2                    图3

此处的LBP=1+16+32+64+128=251

以上就是传统LBP的计算过程。当然还有周围16个的,还有用圆去标注的。如下图:本质上的计算方法都一样,这里就不做赘述了。

Matlab实现:

function [ LBPHistogram ] = LBP( OrgIm,DoUniform)% if DoUniform = true -> return hisogram of 10 bin, if DoUniform = false -> return hisogram of 256 bin

Row=size(OrgIm,1);

Col=size(OrgIm,2);

for i=2:Row-1

for j=2:Col-1

Uniform = true;

MidPixelValue=OrgIm(i,j);

EncodedVec(1)=OrgIm(i-1,j-1)>MidPixelValue;

EncodedVec(2)=OrgIm(i-1,j)>MidPixelValue;

EncodedVec(3)=OrgIm(i-1,j+1)>MidPixelValue;

EncodedVec(4)=OrgIm(i,j+1)>MidPixelValue;

EncodedVec(5)=OrgIm(i+1,j+1)>MidPixelValue;

EncodedVec(6)=OrgIm(i+1,j)>MidPixelValue;

EncodedVec(7)=OrgIm(i+1,j-1)>MidPixelValue;

EncodedVec(8)=OrgIm(i,j-1)>MidPixelValue;

EncodedVecShift = circshift(EncodedVec,[0,1]);

if DoUniform

if sum(xor(EncodedVec,EncodedVecShift)) > 2 % more than 2 transition of 0 -> 1

Uniform = false;

LBPImage(i,j)=9;

end

end

if or(Uniform == true , DoUniform == false) % if LBP not uniform mode , or the texture is uniform -> 8 bits assign

MinLbp = EncodedVec(1)*2^7+EncodedVec(2)*2^6+EncodedVec(3)*2^5+EncodedVec(4)*2^4+EncodedVec(5)*2^3+EncodedVec(6)*2^2+EncodedVec(7)*2^1+EncodedVec(8)*2^0;

MinVector = EncodedVec;

for k = 1 : 7

EncodedVec = circshift(EncodedVec,[0,1]);

CurrLbpValue =EncodedVec(1)*2^7+EncodedVec(2)*2^6+EncodedVec(3)*2^5+EncodedVec(4)*2^4+EncodedVec(5)*2^3+EncodedVec(6)*2^2+EncodedVec(7)*2^1+EncodedVec(8)*2^0;

if CurrLbpValue < MinLbp

MinLbp = CurrLbpValue;

MinVector = EncodedVec;

end

end

LBPImage(i,j)=MinVector(1)*2^7+MinVector(2)*2^6+MinVector(3)*2^5+MinVector(4)*2^4+MinVector(5)*2^3+MinVector(6)*2^2+MinVector(7)*2^1+MinVector(8)*2^0;

end

end

end

if DoUniform

LBPImage(LBPImage ~=9) = log2(LBPImage(LBPImage ~=9)+1);

LBPHistogram=zeros(1,10);

for i =1:size(LBPImage,1)

for k = 1:size(LBPImage,2)

LBPHistogram(1,LBPImage(i,k)+1)=LBPHistogram(1,LBPImage(i,k)+1)+1;

end

end

else

LBPHistogram=zeros(1,256);

for i =1:size(LBPImage,1)

for k = 1:size(LBPImage,2)

LBPHistogram(1,LBPImage(i,k)+1)=LBPHistogram(1,LBPImage(i,k)+1)+1;

end

end

end

end

机器视觉----LBP的更多相关文章

  1. 机器视觉 Local Binary Pattern (LBP)

    Local binary pattern (LBP),在机器视觉领域,是非常重要的一种特征.LBP可以有效地处理光照变化,在纹理分析,纹理识别方面被广泛应用. LBP 的算法非常简单,简单来说,就是对 ...

  2. 机器视觉: LBP-TOP

    之前介绍过机器视觉中常用到的一种特征:LBP http://blog.csdn.net/matrix_space/article/details/50481641 LBP可以有效地处理光照变化,在纹理 ...

  3. 特征描述之LBP

    LBP 在数字图像处理和模式识别领域,LBP指局部二值模式,英文全称:Local Binary Patterns.最初功能为辅助图像局部对比度,并不是一个完整的特征描述子. 后来提升为一种有效的纹理描 ...

  4. C#机器视觉入门系列1-转化为灰度图&&3*3模糊

    这是我入门机器视觉的系列学习经验之开篇,本来想着依靠opencv快速实现一些功能,但是想了一下既然是学数学的,还是应该自己多算算,写一些自己理解的东西才好. 入门篇很简单,就只是实现了转化成灰度图以及 ...

  5. 常用机器视觉工具----图像分析工具(blob分析)

    http://blog.sina.com.cn/s/blog_67cc4eb70100ivnt.html Blob分析:Blob分析目的在于对图像中的2-D形状进行检测和分析,得到诸如目标位置.形状. ...

  6. 图像特征提取之LBP特征

    LBP(Local Binary Pattern,局部二值模式)是一种用来描述图像局部纹理特征的算子:它具有旋转不变性和灰度不变性等显著的优点.它是首先由T. Ojala, M.Pietik?inen ...

  7. 人脸识别经典算法二:LBP方法

    与第一篇博文特征脸方法不同,LBP(Local Binary Patterns,局部二值模式)是提取局部特征作为判别依据的.LBP方法显著的优点是对光照不敏感,但是依然没有解决姿态和表情的问题.不过相 ...

  8. halcon学习笔记——机器视觉工程应用的开发思路【转】

    转自:http://www.cnblogs.com/hanzhaoxin/archive/2013/02/15/2912879.html 机器视觉工程应用主要可划分为硬件和软件两大部分. 硬件:工程应 ...

  9. 图像特征提取三大法宝:HOG特征,LBP特征,Haar特征(转载)

    (一)HOG特征 1.HOG特征: 方向梯度直方图(Histogram of Oriented Gradient, HOG)特征是一种在计算机视觉和图像处理中用来进行物体检测的特征描述子.它通过计算和 ...

随机推荐

  1. Linux+.NetCore+Nginx搭建集群

    本篇和大家分享的是Linux+NetCore+Nginx搭建负载集群,对于netcore2.0发布后,我一直在看官网的文档并学习,关注有哪些新增的东西,我,一个从1.0到2.0的跟随者这里只总结一句话 ...

  2. 我理解的Java中重载与重写

    程序中我们用方法来实现对对象的操作,但是对象可能有不同的数据类型,这时候对不同的数据类型,进行相同的操作,我们就可以用到方法的重载,即方法名相同,但是具有不同的参数列表. 方法的重载可以根据传递参数的 ...

  3. 【Linux部署 · GIT】在linux系统安装git和配置实现SSH

    领导给了一个不开放ftp的测试库,让我部署项目.拿到一个全新的环境,真是个练手的好机会. 该操作系统为:CentOs release 6.5(Final) 由于不开放ftp,所以上传下载代码是非常麻烦 ...

  4. java HashSet改用

    写的一个Student类如下: 上面是直接使用的HashSet集合,系统会把new Student()  当做地址不用来出来,所以结果如下: 然后我在Student类中重写了hashCode()和eq ...

  5. JSP入门必读

    JSP基础知识:转自老师上课梳理的笔记,希望对大家有所帮助.有什么不妥当的地方还望大家批评指正. 特别适用于JSP入门的人员使用.1.JSP [1] 简介1.1 HTML    HTML擅长显示一个静 ...

  6. MySQL(十)之视图

    前言 前面给大家介绍了查询语句,感觉写的还不错的,喜欢的可以去查看.今天给大家分享的是MySQL中的视图. 视图(View):视图是由查询结果形成一张虚拟的表.非临时表,只要不删除的话就会一直存放在磁 ...

  7. outlook 无法搜索邮件的解决方法

    我的outlook版本是2007 SP3,英文版.一直有搜索不到邮件的问题,例如在搜索框输入发件人的名字,或者邮件中的词语,就是搜索不到邮件,即使那封邮件确实存在. 在网上搜索,Microsoft 的 ...

  8. [UWP]使用Writeable​Bitmap创建HSV色轮

    1. HSV 1.1 HSV的定义 HSV都是一种将RGB色彩模型中的点在圆柱坐标系中的表示法,这种表示法试图做到比RGB基于笛卡尔坐标系的几何结构更加直观.HSV即色相.饱和度.明度(英语:Hue, ...

  9. [转载]浏览器事件window.onload、onfocus、onblur、ons

    原文地址:浏览器事件window.onload.onfocus.onblur.onscroll和resize作者:lilyxiao <html> <head> <titl ...

  10. Scrapy 爬虫入门 +实战

    爬虫,其实很早就有涉及到这个点,但是一直没有深入,今天来搞爬虫.选择了,scrapy这个框架 http://scrapy-chs.readthedocs.io/zh_CN/0.24/intro/tut ...