惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

GbyAI
GbyAI
Microsoft Azure Blog
Microsoft Azure Blog
Jina AI
Jina AI
Hugging Face - Blog
Hugging Face - Blog
A
About on SuperTechFans
Y
Y Combinator Blog
D
DataBreaches.Net
I
InfoQ
Recent Announcements
Recent Announcements
Last Week in AI
Last Week in AI
G
Google Developers Blog
博客园_首页
博客园 - 司徒正美
V
V2EX
Stack Overflow Blog
Stack Overflow Blog
博客园 - 叶小钗
Engineering at Meta
Engineering at Meta
Apple Machine Learning Research
Apple Machine Learning Research
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
B
Blog
MongoDB | Blog
MongoDB | Blog
博客园 - 【当耐特】
D
Docker
量子位

又见苍岚

COLMAP PatchMatch Stereo 算法详解 事件驱动的状态机框架:从理论到工程实践 Git 在国内网络环境下无法 Push 的排查与修复 —— 配置 Clash 代理 分段五次多项式插值原理详解 路径插值方法深度对比研究 Claude Code 使用指南 OpenClaw 记忆管理与技能创建指南 CBS(Conflict-Based Search)算法详解 A* 算法及其变种详解 OpenClaw 配置多 Agents Windows Powershell 无法加载文件,因为在此系统上禁止运行脚本问题的解决方案 MaxClaw 安装流程 大模型 AI 名词介绍 AList 网盘聚合工具简介 Protobuf 简介与测试 Claude Code 简介以及 GLM 4.7 模型接入 Github 歌词下载工具 163MusicLyrics Python __getattr__ 懒加载 Python TypedDict 机器人仿真平台 Gazebo 安装记录 机器人仿真平台 Gazebo 简介 多机器人路径规划问题(Multi-Agent Path Finding, MAPF)简介 Python exifread 读取修改过的 jpeg 信息错误问题修复 3D 坐标系变换的理解 3D 旋转矩阵基本概念 MongoDB Compass 介绍 Python 环境管理工具 uv Flutter 开发指南 Snipaste 安装下载与黑屏问题解决方案 全局路径规划算法记录
LBP 特征
Yiwei Zhang · 2023-01-10 · via 又见苍岚

LBP(Local Binary Pattern) 局部二值特征是一种纹理描述子,它度量和提取图像的局部纹理信息,对旋转和光照具有不变性。

简介

  • LBP(Local Binary Pattern) 局部二值特征是一种纹理描述子,它度量和提取图像的局部纹理信息,对旋转和光照具有不变性。单纯的LBP记录像素点与像素点的对比信息。

LBP

定义

  • LBP算子定义为在 $3\times3$ 窗口内,以窗口中心像素为阈值,将相邻的八个像素与其进行比较,若周围像素值大于中心像素值,则该点的标记为1,否则为0。

  • 这样, $3\times3$ 邻域内的 8 个点经比较可产生8位二进制数(通常转换为十进制数,即LBP码,共256种),即得到该窗口中心像素点的LBP值,并以此反映该区域的纹理信息。

  • 二进制数的顺序并无硬性要求,只要在同一处理中保持相同顺序即可。

  • LBP算子可以取多个周围像素点和采样半径。

示例

  • 由一个像素与其八邻域像素的关系获取 LBP 值的流程

旋转不变

  • 原始的 LBP 特征对光照具有一定鲁棒性,因为亮度整体变化不至于影响大部分的相对关系
  • 但原始 LBP 特征在旋转时难以保持不变,因为特征也会跟着图像变化,相当于二进制数据循环移位,势必特征会发生变化
  • 那么为了消除旋转这一变量,我们将 LBP 值循环移位,选择一个固定大小排序位置的数值作为特征则会抵抗旋转的影响,为了方便我们选择最小的 LBP 特征:

  • 以上图为例,该像素的旋转不变 LBP 特征值为 15

  • 如果不做旋转不变形的筛选, LBP 可选特征有 256 种模式

  • 做了旋转不变的特征筛选后,模式变为总共 36 种

    其中:

    LBP值含有1的个数 总模式数
    0 1
    1 1
    2 4
    3 7
    4 10
    5 7
    6 4
    7 1
    8 1
    总数 36
  • 统计代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
min_fea = set()

def make_str(value):
res_str = ''
for i in range(8):
r = value % 2
value = value >> 1
res_str = str(r) + res_str
return res_str

def get_num1(min_fea, num):
res_list = list()
for str_1 in min_fea:
if str_1.count('1') == num:
res_list.append(str_1)
return res_list

for number in range(256):
data_list = list()
temp = number
for i in range(8):
data_list.append(temp)
l = temp % 2
temp = (temp >> 1) + 128 * l
min_value = min(data_list)
res_str = make_str(min_value)
min_fea.add(res_str)

total_num = 0
for index in range(9):
sub_num = len(get_num1(min_fea, index))
print('1 count', index, 'num', sub_num)
total_num += sub_num
print('total feature num ', total_num)
pass

  • 输出结果:
1
2
3
4
5
6
7
8
9
10
1 count 0 num 1
1 count 1 num 1
1 count 2 num 4
1 count 3 num 7
1 count 4 num 10
1 count 5 num 7
1 count 6 num 4
1 count 7 num 1
1 count 8 num 1
total feature num 36

参考资料

文章链接:
https://www.zywvvd.com/notes/study/image-processing/feature-extraction/image-lbp/image-lbp/