skimage local_binary_pattern输出异常:uniform模式下为何出现最大值9?
uniform模式LBP出现最大值9的原因
你对基础LBP的逻辑理解是正确的:对比中心像素(exam_pixel)与邻域像素(neigh_pixel),邻域像素更亮则记1,否则记0,普通LBP的最大值确实是8(对应8个邻域像素全亮于中心)。但method='uniform'模式的编码规则和基础LBP完全不同:
- uniform模式的核心依据是LBP二进制编码中的跳变次数(即0→1或1→0的转换次数)
- 针对你设置的8个邻域点(
n_points_lbp=8),skimage的uniform LBP会做如下映射:- 所有跳变次数≤2的二进制模式,会被映射为0~8的数值(比如全0对应0,全1对应8,仅1个邻域更亮的模式对应1,仅1个邻域更暗的模式对应7,这类模式的跳变次数都是0或2)
- 所有跳变次数>2的模式,会被统一归类到数值9
你看到的9,本质是该像素的LBP二进制编码属于“非uniform”模式(跳变次数超过2次),这是skimage对uniform LBP的标准实现,并非你误解了基础LBP原理,而是没掌握uniform模式的特殊编码规则。
内容的提问来源于stack exchange,提问作者T.A. Anderson
相关产品推荐
相关产品推荐

