机器视觉----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)特征是一种在计算机视觉和图像处理中用来进行物体检测的特征描述子.它通过计算和 ...
随机推荐
- 【javascript】异步编年史,从“纯回调”到Promise
异步和分块——程序的分块执行 一开始学习javascript的时候, 我对异步的概念一脸懵逼, 因为当时百度了很多文章,但很多各种文章不负责任的把笼统的描述混杂在一起,让我对这个 JS中的重要概念 ...
- js 移动端识别手机号码
需求: 在移动端一个页面内多处有数字显示,其中希望能够自动识别我所要求的那个手机号码,点击可以拨打 探索: 首先想到的是头部的meta标签<meta name="format-dete ...
- Git学习总结(一)
.常用Git命令清单 一.新建代码库 #在当前目录创建一个Git代码库 $ git init #新建一个目录,将其初始化为Git代码库 $ git init [project name] #下载一个项 ...
- spring mvc:ueditor跨域多图片上传失败解决方案
公司在开发一个后台系统时需要使用百度的UEditor富文本编辑器,应用的场景如下: UEditor的所有图片.js等静态资源在一个专有的静态服务器上: 图片上传在另外一台服务器上: 因为公司内部会使用 ...
- node.js 89行爬虫爬取智联招聘信息
写在前面的话, .......写个P,直接上效果图.附上源码地址 github/lonhon ok,正文开始,先列出用到的和require的东西: node.js,这个是必须的 request,然发 ...
- 转载 远程用户连接mysql授权
授权法: 在安装mysql的机器上运行: 1.d:\mysql\bin\>mysql -h localhost -u root //这样应该可以进入MySQL服务器 2.mysql> ...
- java开发网易电话面试 一面总结
晚上八点多自己在看视频的时候突然接到杭州来的一个电话,当时觉得很奇怪,突兀,接通之后被告知是杭州网易打来的,没有简单的自我介绍,没有多余的废话,直接入主题,吓得我心里怪紧张的,完全没有准备,但是也没有 ...
- 百度AI开放平台- API实战调用
百度AI开放平台- API实战调用 一. 前言 首先说一下项目需求. 两个用户,分别上传了两段不同的文字,要计算两段文字相似度有多少,匹配数据库中的符合条件的数据,初步估计列出来会有60-1 ...
- yum仓库的定制
矮哥linux运维群: 93324526 笔者QQ:578843228 一.简介 软件包的分类.源码包脚本安装二进制包(rpm包.系统默认包) 源码包: C语言的源代码优点:开源,如果有能力,可以修改 ...
- SNS团队第一次站立会议(2017.04.22)
一.当天站立式会议照片 本次会议主要内容:进一步明确了团队中各个成员的定位,说明了下一步团队工作的方向 二.每个人的工作 成员 昨天已完成的工作 今天计划完成的工作 罗于婕 系统架构设计及项目数据库设 ...