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

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:这个特征提取的过程稍微有点慢。。。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/491593.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

pycharm运行程序时看不到任何结果显示

原因是用程序选择了console来运行,取消console方法如下: Run->Edit Configurations 取消run with python console的勾

iOS 的 XMPPFramework 简介

XMPPFramework是一个OS X/iOS平台的开源项目,使用Objective-C实现了XMPP协议(RFC-3920),同时还提供了用于读写XML的工具,大大简化了基于XMPP的通信应用的开发。 1. 登录和好友上下线 1.1XMPP中常用对象们 XMPPStream&a…

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

OpenCV与图像处理学习十六——模板匹配一、模板匹配介绍二、代码应用一、模板匹配介绍 模板匹配是一种最原始、最基本的模式识别方法,研究某一特定目标的图像位于图像的什么地方,进而对图像进行定位。 在待检测的图像上,从左到右&#xff0…

李剑锋:意识科学就在身边

来源: 科技日报-中国科技网近些年,生命科学家开始关注神奇的大脑,因此各国纷纷提出各自的脑计划;当前有一个更基础的、但极富争议性的领域却被大家忽视了,就是意识科学。事实脑计划的终点应该就是意识科学,但由于目前大…

OpenCV与图像处理学习十七——OpenCV人脸检测(含代码)

OpenCV与图像处理学习十七——OpenCV人脸检测(含代码)一、人脸识别概要1.1 人脸检测1.2 人脸对齐(Face Alignment)1.3 人脸特征提取(Face Feature Extraction)1.4 人脸识别(Face Recognition&am…

清华大学:人工智能之知识图谱(附PPT)

来源:笑看国际风云【导读】知识图谱(Knowledge Graph)是人工智能重要分支知识工程在大数据环境中的成功应用,知识图谱与大数据和深度学习一起,成为推动互联网和人工智能发展的核心驱动力之一。基于此背景,《人工智能之…

有关EUV光刻机,你需要知道这些

来源:technews晶圆制造产业进入7 纳米制程之后,目前全世界仅剩台积电与三星,再加上号称自家10 纳米制程优于竞争对手7 纳米制程的英特尔等,有继续开发能力之外,其他竞争者因须耗费大量金钱与人力物力的情况下&#xff…

多家巨头实测鸿蒙系统:比安卓快60%

来源:腾讯新闻,数码科技大爆炸众所周知,近期,华为被打压和打击的事件一直没有停止,但华为并没有坐以待毙,很快就启动了“备胎计划”给予积极的回击和反击,像保险柜里的海思“备胎芯片”、华为自…

混淆矩阵及分类性能评估方法

混淆矩阵: 公式:其中TPR又叫召回率Recall

《细胞》:打破百年生物学法则,记忆可以遗传给下一代,甚至可能跨越多代...

来源:转载自iNature许多人推测大脑活动可能以某种方式产生可遗传的变化,这将影响下一代的命运。然而,这一想法虽然具有吸引力,却挑战了生物学的基本法则之一,也被称为“生物学的第二定律”, “Weismann障碍…

欢迎参加城市大脑与智慧城市前沿趋势 主题论坛 |未来科技大讲堂 第12期

近年来,智慧城市建设出现新的动向,包括城市大脑、城市云脑、城市超级大脑、城市超脑、城市神经网络等“泛城市大脑”概念也大量涌现。杭州、上海、北京、广州等城市各自提出和开展了不同城市大脑建设方案,其中上海市开展了以建设城市神经元系…

JavaSE——Java介绍与环境变量简述

第1节 Java介绍 1、Java的起源与演变 略 2、Java体系与特点 Java体系 : Java SE:标准版:各应用平台的基础,桌面开发和低端商务应用的解决方案。 Java EE:企业版,以企业为环境而开发应用程序的解决方案…

深度:中国智能制造分析报告

来源:精智工厂亚洲正受到自动化、智能化大潮冲击。国际劳工组织调研发现,越南、柬埔寨、菲律宾和印度尼西亚的工人的失业风险最高,据估计这几个区域约50%的工人工作可能在未来20年被自动化取代。亚洲尤其是中国作为制造业的重要区域&#xff…

JavaSE——Java基础语法(二进制、变量、方法(函数)、运算符、转义字符)

第2节 基础语法 一、二进制 1.1 二进制介绍 计算机中的数据都以二进制数字保存。 二进制 :逢二进一,即只有0、1两个值。如十进制的10在计算机内保存为二进制的1010。 计算机中信息的存储单位: 位(Bit)&#xff1a…

我们离爱因斯坦想了解的“上帝的思想”,还有多远?

来源:原理1925年,爱因斯坦在与一位名为Esther Salaman的年轻学生一同散步的途中,分享了他的一个核心指导思想:“我想知道上帝是如何创造这个世界的。我对这个或那个现象,这个或那个元素的能谱不感兴趣。我要知道的是他…

城市大脑与智慧城市前沿趋势 主题论坛 |未来科技大讲堂 第12期

近年来,智慧城市建设出现新的动向,包括城市大脑、城市云脑、城市超级大脑、城市超脑、城市神经网络等“泛城市大脑”概念也大量涌现。杭州、上海、北京、广州等城市各自提出和开展了不同城市大脑建设方案,其中上海市开展了以建设城市神经元系…

JavaSE——数组基础(创建格式、下标、获取长度、常见问题、多维数组)

第4节 数组 一、概述 数组是相同数据类型的多个数据的容器。这些元素按线性顺序排列。所谓线性顺序是指除第一个元素外,每一个元素都有唯一的前驱元素;除最后一个元素外,每一个元素都有唯一的后继元素。(“简单理解就是&#xff…

MATLAB将颜色反转

如下图: 若需要将其转换为灰度图,则用colormap(gray): 但若想将上面那幅灰度图颜色反转,即白色部分变黑,黑色部分变白,则用colormap(flipud(gray)):

AR/VR逐渐回暖 联合安防步入未来

来源:VR每日必看2019年,AR/VR市场在走过萌芽、兴起、狂热与泡沫破灭之后,开始逐渐复苏,相关芯片、屏幕、传感器等关键零部件也取得了不少进展,行业有望再次迎来高速增长。相较于C端市场,在B端,A…

JavaSE——面向对象基础(思想、类与对象、构造方法、重载、匿名对象)

第1节 面向对象基础 一、面向对象思想 1.1 概述 面向对象(Object Oriented)是软件开发方法。面向对象的概念和应用已超越了程序设计和软件开发,是一种对现实世界理解和抽象的方法,是计算机编程技术发展到一定阶段的产物。面向对…