标签:次数 原来 维基 get 因此 情况 这一 二进制 应用
LPB算子的定义参见维基百科:https://en.wikipedia.org/wiki/Local_binary_patterns,考察LBP算子的定义可知,一个LBP算子可以产生多种二进制模式(p个采样点)如:3x3邻域有p=8个采样点,则可得到2^8=256种二进制模式;5x5邻域有p=24个采样点,则可得到2^24=16777216种二进制模式,以此类推。显然,过多的二进制模式无论对于纹理的提取还是纹理的识别、分类及信息存取都是不利的,在实际应用中不仅要求采用的算子尽量简单,同时也要考虑到计算速度、存储量大小等问题。因此需要对原始的LBP模式进行降维。
Ojala提出一种“等价模式”(Uniform Pattern)来对LBP算子进行降维,Ojala等认为图像中,某个局部二进制模式所对应的循环二进制数从0→1或从1→0,最多有两次跳变,该局部二进制模式所对应的二进制就成为一个等价模式。如00000000,00111000,10001111,11111111等都是等价模式类。判断一个二进制模式是否为等价模式最简单的办法就是将LBP值与其循环右移一位后的值进行按位异或,计算得到的二进制数中1的个数,若个数小于或等于2,则是等价模式;否则,不是。除了等价模式以外的模式都归为一类,称为混合模式类,例如10010111(共四次跳变)。跳变的计算方法:如10010111,首先第一二位10,由1→0跳变一次;第二、三位00,没有跳变;第三、四位01,由0→1跳变一次,第四、五位10,由1→0跳变一次;第五六位01,由0→1跳变一次;第六七位11,没有跳变;第七八位11,没有跳变;故总共跳变4次。
使用等价模式,模式种类由原来的2^p减少为2+p*(p-1)种。下面考虑其计算方法。首先明确一个事实,对于p个采样点,假设某个二进制模式的值为x(二进制数),那么x的跳变次数与(2^p-1-x)的跳变次数是一样的。以p=8为例,10010111的跳变次数与(11111111-10010111)=01101000的跳变次数是一样的。那我们可以只考虑连续的0,出现0次跳变:1个(p=8时,只有00000000这一个,对应连续的1的情况为11111111);出现1次跳变:C(p-1,1)(左起第1个二进制位位到左起第p-1个二进制位中,选择某一位为0,左起第1个二进制位到选择的位置处为连续的0,如01111111,00111111,注意不是C(p-1,1)*2,因01111111对应的连续的1的情况(11111111-01111111)=10000000就是从右起的);出现2次跳变:C(p-2,1)+C(p-2,2)(从左起第2个二进制位到左起第p-1个二进制位中,选择某1位为0,或者选择某两位为0,这两位之间为连续的0)。总共的情况数为:(1+C(p-1,1)+C(p-2,1)+C(p-2,2))*2=(1+(p-1)+(p-2)+(p-2)*(p-3)/2)*2=2+p*(p-1)种(*2对应连续的1的情况)。
标签:次数 原来 维基 get 因此 情况 这一 二进制 应用
原文地址:https://www.cnblogs.com/study-share-struggle/p/10281926.html