OpenCV与图像处理学习十五——LBP纹理特征(含代码)

  • 一、LBP介绍
  • 二、LBP原理
  • 三、代码应用

一、LBP介绍

LBP(Local Binary Pattern, 局部二值模式) , 是一种用来描述图像局部纹理特征的算子; 它具有旋转不变性和灰度不变性等显著的优点;

作者: T. Ojala, M.Pietikäinen, 和 D. Harwood ;

提出时间: 1994年

二、LBP原理

LBP算子定义在一个 3 × 3 的窗口内, 以窗口中心像素为阈值, 与相邻的8个像素的灰度值比较, 若周围的像素值大于中心像素值, 则该位置被标记为1; 否则标记为0。如此可以得到一个8位二进制数(通常还要转换为10进制, 即LBP码, 共256种) , 将这个值作为窗口中心像素点的LBP值, 以此来反应这个3× 3区域的纹理信息。


用数学公式表示:

其中, p表示 3 × 3 窗口中除中心像素点外的第p个像素点;I( c )表示中心像素点的灰度值, I( p )表示领域内第p个像素点的灰度值;s(x)公式如下:

  1. LBP记录的是中心像素点与领域像素点之间的差值;
  2. 当光照变化引起像素灰度值同增同减时, LBP变化并不明显;
  3. LBP对与光照变化不敏感, LBP检测的仅仅是图像的纹理信息

三、代码应用

import cv2
import numpy as npdef LBP(src):''':param src:灰度图像:return:'''height = src.shape[0]width = src.shape[1]dst = src.copy()lbp_value = np.zeros((1, 8), dtype=np.uint8)# print(lbp_value)neighbours = np.zeros((1, 8), dtype=np.uint8)# print(neighbours)for x in range(1, width - 1):for y in range(1, height - 1):neighbours[0, 0] = src[y - 1, x - 1]neighbours[0, 1] = src[y - 1, x]neighbours[0, 2] = src[y - 1, x + 1]neighbours[0, 3] = src[y, x - 1]neighbours[0, 4] = src[y, x + 1]neighbours[0, 5] = src[y + 1, x - 1]neighbours[0, 6] = src[y + 1, x]neighbours[0, 7] = src[y + 1, x + 1]center = src[y, x]for i in range(8):if neighbours[0, i] > center:lbp_value[0, i] = 1else:lbp_value[0, i] = 0lbp = lbp_value[0, 0] * 1 + lbp_value[0, 1] * 2 + lbp_value[0, 2] * 4 + lbp_value[0, 3] * 8 \+ lbp_value[0, 4] * 16 + lbp_value[0, 5] * 32 + lbp_value[0, 6] * 64 + lbp_value[0, 7] * 128# print(lbp)dst[y, x] = lbpreturn dstimg = cv2.imread('image/people.jpg', 0)
print(img.shape)
cv2.imshow('src', img)
cv2.waitKey(0)
cv2.destroyAllWindows()
new_img = LBP(img)cv2.imshow('dst', new_img)
cv2.waitKey(0)
cv2.destroyAllWindows()

输入的图像(灰度变化后的):

LBP特征变化后的结果:

ps:这个特征提取的过程稍微有点慢。。。

OpenCV与图像处理学习十五——LBP纹理特征(含代码)相关推荐

  1. OpenCV与图像处理学习十二——图像形状特征之HOG特征

    OpenCV与图像处理学习十二--图像形状特征之HOG特征 一.图像特征理解 1.1 颜色特征 1.2 纹理特征 1.3 形状特征 1.4 空间关系特征 二.形状特征描述 2.1 HOG特征 2.1. ...

  2. OpenCV与图像处理学习十六——模板匹配

    OpenCV与图像处理学习十六--模板匹配 一.模板匹配介绍 二.代码应用 一.模板匹配介绍 模板匹配是一种最原始.最基本的模式识别方法,研究某一特定目标的图像位于图像的什么地方,进而对图像进行定位. ...

  3. OpenCV与图像处理学习十四——SIFT特征(含代码)

    OpenCV与图像处理学习十四--SIFT特征(含代码) 一.SIFT算法 二.SIFT实现过程 三.代码实现 一.SIFT算法 SIFT, 即尺度不变特征变换算法(Scale-invariant f ...

  4. OpenCV与图像处理学习十——区域生长算法(含代码)

    OpenCV与图像处理学习十--区域生长算法(含代码) 一.区域生长算法概要 二.区域生长算法原理 三.代码应用 一.区域生长算法概要 区域生长是一种串行区域分割的图像分割方法.区域生长是指从某个像素 ...

  5. OpenCV与图像处理学习八——图像边缘提取(Canny检测代码)

    OpenCV与图像处理学习八--图像边缘提取(Canny检测代码) 一.图像梯度 1.1 梯度 1.2 图像梯度 二.梯度图与梯度算子 2.1模板卷积 2.2 梯度图 2.3 梯度算子 2.3.1 R ...

  6. python+OpenCV笔记(三十五):特征匹配——基于FLANN的匹配、基于FLANN进行单应性匹配

    目录 一.基于FLANN的匹配 FLANN匹配流程: 代码编写 二.基于FLANN进行单应性匹配 什么是单应性? FLANN进行单应性匹配流程 代码编写 FLANN库全称是Fast Library f ...

  7. OpenCV与图像处理学习五——图像滤波与增强:线性、非线性滤波、直方图均衡化与Gamma变换

    OpenCV与图像处理学习五--图像滤波与增强:线性.非线性滤波.直方图均衡化与Gamma变换 三.图像滤波与增强 3.1 线性滤波 3.1.1 方框滤波 3.1.2 均值滤波 3.1.3 高斯滤波 ...

  8. OpenCV与图像处理学习六——图像形态学操作:腐蚀、膨胀、开、闭运算、形态学梯度、顶帽和黑帽

    OpenCV与图像处理学习六--图像形态学操作:腐蚀.膨胀.开.闭运算.形态学梯度.顶帽和黑帽 四.图像形态学操作 4.1 腐蚀和膨胀 4.1.1 图像腐蚀 4.1.2 图像膨胀 4.2 开运算与闭运 ...

  9. OpenCV与图像处理学习七——传统图像分割之阈值法(固定阈值、自适应阈值、大津阈值)

    OpenCV与图像处理学习七--传统图像分割之阈值法(固定阈值.自适应阈值.大津阈值) 一.固定阈值图像分割 1.1 直方图双峰法 1.2 OpenCV中的固定阈值分割 二.自动阈值图像分割 2.1 ...

最新文章

  1. 【复盘】小朋友的奇思妙想
  2. linux应用程序安装PPT免费序,linux下应用程序安装的总结
  3. linux系统管理学习笔记之八---进程与作业的管理
  4. MssqlOnLinux 主从集群【2】
  5. visio2013剪除_Visio 2003 图形剪切合并 高级技巧
  6. discuz门户文章增加代码高亮
  7. JavaScript替换字符串中括号里的内容
  8. Codeforces Round #469(Div.1 D) (Div. 2 F)Curfew(贪心)
  9. js月份的计算公式_JS获取指定月份的天数几种方法
  10. 梯有N阶,上楼可以一步上一阶,也可以一次上二阶(Java实现)
  11. Windos10使用手册
  12. php 微博获取粉丝,新浪API,提取微博账号的信息,粉丝数、微博数等
  13. 最吸引人的引流话术_抖音流广告引流【日引312人小白】
  14. 深入理解C与C++ (0.1)
  15. Java内存模型:线程并发下的对象逸出
  16. 通过tftp32在3110E上调试程序
  17. 赛博朋克 “故障风”按钮
  18. C#条形码扫描器读取数据信息
  19. Day1.3 夜曲编程T63输出名字相同,相同字计数
  20. android 360生日管家

热门文章

  1. 目前流行的装修风格_现在最流行的八大装修风格
  2. sql server排序慢_SQL 查询调优之 where 条件排序字段以及 limit 使用索引的奥秘
  3. 深度解析LSTM神经网络的设计原理
  4. 深度学习在美团的应用
  5. Java多线程系列(六):深入详解Synchronized同步锁的底层实现
  6. 报名 | 全国知识图谱与语义计算大会(CCKS 2019)评测任务发布
  7. 论文浅尝 | 知识图谱问答中的层次类型约束主题实体识别
  8. 论文浅尝 | 基于神经网络的推理(DeepMind Relational Reasoning)
  9. 金融时报:人工智能在银行中的应用—对全球30家大型银行的调查
  10. 简单讲述一下Intent的传值过程