热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

LBP+DLBP+STLBP+VLBP

纹理是物体表面的固有特征之一,可认为是灰度(颜色)在空间以一定的形式变化而产生的图案(模式).LBP(LocalBina


纹理是物体表面的固有特征之一,可认为是灰度(颜色)在空间以一定的形式变化而产生的图案(模式).

LBP(Local Binary Pattern, 局部二值模式)是一种用来描述图像局部纹理特征的算子;它的作用是进行特征提取,提取图像的局部纹理特征.

原始的LBP算子定义为在3*3的窗口内,以窗口中心像素为阈值,将相邻的8个像素的灰度值与其进行比较,

若周围像素值大于中心像素值,则该像素点的位置被标记为1,否则为0.

3*3领域内的8个点可产生8bit的无符号数,即得到该窗口的LBP值,并用这个值来反映该区域的纹理信息.

如下图所示,r = 3,p = 8.

计算公式如下:

gc为中心像素点,gp为邻域像素点.

LBP纹理特征向量,一般以图像的分块LBP直方图表示,具体计算步骤如下:

1).将图像划分为N*N的图像子块,计算每个子块中每个像素的LBP值.

2).对每个子块进行直方图统计,得N*N图像子块的直方图.

3).利用N*N个子块的直方图,描述该图像的纹理特征.

参考文献 Background Subtraction Based on a Combination of Texture,Color and Intensity ICSP 2008

文献在LBP的基础上,提出了DLBP特征 Double Local Binary Pattern.

LBP的缺点:

1).It cannot differeniate between ascending and homogeneous.

无法区分邻域像素点与中心像素点相等,或者邻域像素点大于中心像素点两种情况,因此,这两种情况所得都是s(u) = 1.

2).It is sensitive to noise due its threshold schem.

DLBP主要是为了解决LBP的缺点而提出的,表式形式如下:

当LBP+ = 0 且 LBP- = 0,表示邻域像素点与中心像素点相同;

当LBP+ = 1 且 LBP- = 0时,表示邻域像素点大于中心像素点;

当LBP+ = 0 且 LBP- = 1时,表示邻域像素点小于中心像素点;

从而可以区分邻域像素点与中心像素点的三种情况.

引入参数n,来改善像素点值轻微变化对LBP的影响.文中取n = 4.

LBP和DLBP的比较示例图如下:

(b),(c),(d)利用DLBP更能表述图像的特征.(a)中DLBP和LBP的表描结果是一样的.

参考文献 Dynamic Background Modeling and Subtraction Using Spatio-Temporal Local Binary Patterns  ICIP 2008

STLBP spatio-temporal local binary patterns

文献中提出STLBP的目的是为了将空间上的纹理信息和时间上的运动信息结合,便于建立更准确的背景模型.

其思想是将当前帧中像素点的LBP和前一帧中对应像素点的LBP,按一定权值结合起来.

权值大小的来衡量,前一帧图像对后一帧图像的影响.

A small value is sufficient for scenes which have small changes,

whereas a larger value is required in the scenes which have strong changes.  

参考文献 Dynamic Texture Recognition Using Volume Local  Binary Patterns   Workshop on Dynamical Vision 2007

VLBP  volume local binary patterns

VLBP与STLBP相比,不同之处在于它同时考虑前p帧图像和后p帧图像的LBP特征.

因而,提取VLBP特征是需要事先获取当前图像序列的前后图像序列.

文献中,还进一步说明了,如何将VLBP特征转换为Rotation Invariant VLBP.

若具体应用需要Rotation Invariant VLBP,其转换过程请参考原文. 


推荐阅读
  • 深入解析Android自定义View面试题
    本文探讨了Android Launcher开发中自定义View的重要性,并通过一道经典的面试题,帮助开发者更好地理解自定义View的实现细节。文章不仅涵盖了基础知识,还提供了实际操作建议。 ... [详细]
  • 本文将介绍如何编写一些有趣的VBScript脚本,这些脚本可以在朋友之间进行无害的恶作剧。通过简单的代码示例,帮助您了解VBScript的基本语法和功能。 ... [详细]
  • Explore how Matterverse is redefining the metaverse experience, creating immersive and meaningful virtual environments that foster genuine connections and economic opportunities. ... [详细]
  • Docker的安全基准
    nsitionalENhttp:www.w3.orgTRxhtml1DTDxhtml1-transitional.dtd ... [详细]
  • 优化ListView性能
    本文深入探讨了如何通过多种技术手段优化ListView的性能,包括视图复用、ViewHolder模式、分批加载数据、图片优化及内存管理等。这些方法能够显著提升应用的响应速度和用户体验。 ... [详细]
  • 技术分享:从动态网站提取站点密钥的解决方案
    本文探讨了如何从动态网站中提取站点密钥,特别是针对验证码(reCAPTCHA)的处理方法。通过结合Selenium和requests库,提供了详细的代码示例和优化建议。 ... [详细]
  • 本文基于刘洪波老师的《英文词根词缀精讲》,深入探讨了多个重要词根词缀的起源及其相关词汇,帮助读者更好地理解和记忆英语单词。 ... [详细]
  • 本文介绍了如何使用JQuery实现省市二级联动和表单验证。首先,通过change事件监听用户选择的省份,并动态加载对应的城市列表。其次,详细讲解了使用Validation插件进行表单验证的方法,包括内置规则、自定义规则及实时验证功能。 ... [详细]
  • 前言--页数多了以后需要指定到某一页(只做了功能,样式没有细调)html ... [详细]
  • 本文详细介绍了Akka中的BackoffSupervisor机制,探讨其在处理持久化失败和Actor重启时的应用。通过具体示例,展示了如何配置和使用BackoffSupervisor以实现更细粒度的异常处理。 ... [详细]
  • 本文介绍如何使用Objective-C结合dispatch库进行并发编程,以提高素数计数任务的效率。通过对比纯C代码与引入并发机制后的代码,展示dispatch库的强大功能。 ... [详细]
  • 本文详细介绍了如何使用 Yii2 的 GridView 组件在列表页面实现数据的直接编辑功能。通过具体的代码示例和步骤,帮助开发者快速掌握这一实用技巧。 ... [详细]
  • 本文详细介绍了Java中org.eclipse.ui.forms.widgets.ExpandableComposite类的addExpansionListener()方法,并提供了多个实际代码示例,帮助开发者更好地理解和使用该方法。这些示例来源于多个知名开源项目,具有很高的参考价值。 ... [详细]
  • 使用 Azure Service Principal 和 Microsoft Graph API 获取 AAD 用户列表
    本文介绍了一段通用代码示例,该代码不仅能够操作 Azure Active Directory (AAD),还可以通过 Azure Service Principal 的授权访问和管理 Azure 订阅资源。Azure 的架构可以分为两个层级:AAD 和 Subscription。 ... [详细]
  • 在前两篇文章中,我们探讨了 ControllerDescriptor 和 ActionDescriptor 这两个描述对象,分别对应控制器和操作方法。本文将基于 MVC3 源码进一步分析 ParameterDescriptor,即用于描述 Action 方法参数的对象,并详细介绍其工作原理。 ... [详细]
author-avatar
六零后女人_731
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有