机器视觉----LBP
最近一直在做多视图的聚类与分裂,想要图片有更多的视图,就得对图片的特征进行抽取,那我们来聊聊图片的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的更多相关文章
- 机器视觉 Local Binary Pattern (LBP)
Local binary pattern (LBP),在机器视觉领域,是非常重要的一种特征.LBP可以有效地处理光照变化,在纹理分析,纹理识别方面被广泛应用. LBP 的算法非常简单,简单来说,就是对 ...
- 机器视觉: LBP-TOP
之前介绍过机器视觉中常用到的一种特征:LBP http://blog.csdn.net/matrix_space/article/details/50481641 LBP可以有效地处理光照变化,在纹理 ...
- 特征描述之LBP
LBP 在数字图像处理和模式识别领域,LBP指局部二值模式,英文全称:Local Binary Patterns.最初功能为辅助图像局部对比度,并不是一个完整的特征描述子. 后来提升为一种有效的纹理描 ...
- C#机器视觉入门系列1-转化为灰度图&&3*3模糊
这是我入门机器视觉的系列学习经验之开篇,本来想着依靠opencv快速实现一些功能,但是想了一下既然是学数学的,还是应该自己多算算,写一些自己理解的东西才好. 入门篇很简单,就只是实现了转化成灰度图以及 ...
- 常用机器视觉工具----图像分析工具(blob分析)
http://blog.sina.com.cn/s/blog_67cc4eb70100ivnt.html Blob分析:Blob分析目的在于对图像中的2-D形状进行检测和分析,得到诸如目标位置.形状. ...
- 图像特征提取之LBP特征
LBP(Local Binary Pattern,局部二值模式)是一种用来描述图像局部纹理特征的算子:它具有旋转不变性和灰度不变性等显著的优点.它是首先由T. Ojala, M.Pietik?inen ...
- 人脸识别经典算法二:LBP方法
与第一篇博文特征脸方法不同,LBP(Local Binary Patterns,局部二值模式)是提取局部特征作为判别依据的.LBP方法显著的优点是对光照不敏感,但是依然没有解决姿态和表情的问题.不过相 ...
- halcon学习笔记——机器视觉工程应用的开发思路【转】
转自:http://www.cnblogs.com/hanzhaoxin/archive/2013/02/15/2912879.html 机器视觉工程应用主要可划分为硬件和软件两大部分. 硬件:工程应 ...
- 图像特征提取三大法宝:HOG特征,LBP特征,Haar特征(转载)
(一)HOG特征 1.HOG特征: 方向梯度直方图(Histogram of Oriented Gradient, HOG)特征是一种在计算机视觉和图像处理中用来进行物体检测的特征描述子.它通过计算和 ...
随机推荐
- 斜率DP hdu 3507
Problem Description Zero has an old printer that doesn't work well sometimes. As it is antique, he s ...
- 深入理解JVM(七)——性能监控工具
前言 工欲善其事必先利其器,性能优化和故障排查在我们大都数人眼里是件比较棘手的事情,一是需要具备一定的原理知识作为基础,二是需要掌握排查问题和解决问题的流程.方法.本文就将介绍利用性能监控工具,帮助开 ...
- 通过VM虚拟机安装Ubuntu server部署flask项目
1. VM安装Ubuntu server 14.04,系统安装完成后,首先安装pip工具方便之后的包安装,此处需先使用 apt-get install update,apt-get install u ...
- Linux 查看进程
1.ps 显示进程信息,参数可省略 -aux 以BSD风格显示进程常用 -efH 以SystemV风格显示进程 -e , -A 显示所有进程 a 显示终端上所有用户的进程 x 显示无终端进程 u显示详 ...
- PropertiesUtil demo
package com.spl.save.wmos.base.util; import java.io.File; import java.io.FileInputStream; import jav ...
- 运行mvn install时跳过Test
1.1 方法一 <project> [...] <build> <plugins> <plugin> <groupId>org.apache ...
- eclipse没有联想功能的解决办法
1.我window->Preferences->Java->Editor->content assist 把 Enable auto activation 选项打上勾 :(如下 ...
- .Net Mvc实现各种表格随意切换插件
一套Js代码,.只要改参数 在3种表格之间任意切换-(使用Js面向对象封装,可重写方法) 任意表格皮肤随便切换 flextgrid/bootstrapt/jqgrid 1 001 @{ 002 ...
- ios初体验< 运用属性传值,登录>
注意:ViewController.m文件 // 在第一个页面中,创建一个简单的登录页面,并且添加两个属性 1 #import "ViewController.h" #import ...
- < 软件工程 第一次作业 >
自我介绍: 老师好! 我叫李智强,专业是计算机科学与技术,我自己也喜欢这个专业,然后这是我第一次用博客写自我介绍,可能会写的有点不好,还请包涵. 课程期望和目标: 第一次上课,听着老师说我们可能会做很 ...