先看看复杂天下博文中摘录的英文 Uniform LBP in
MATLAB
Local Binary Pattern is a
feature extraction used for classification in computer vision. It
is texture operator which labels the pixels of an image by
thresholding the neighborhood of each pixel and considers the
result as a binary number. LBP is called Uniform LBP if there are
at most two bitwise transitions from either 0 to 1 or vice-versa or
when its uniformity measure is at most 2. For example, the patterns
00000000 (0 transitions), 01110000 (2 transitions) and 11001111 (2
transitions) are uniform whereas the patterns 11001001 (4
transitions) and 01010011 (6 transitions) are
not.
The number of different uniform labels for P
bits is P *(P-1) + 3.All non-uniform patterns are given a label 0
while there is a separate label for each uniform pattern. For
example, a 8 bit pattern would have 59 different
labels.
再看看来自ITHao123网站对59种模式的解释:
考察LBP算子的定义可以发现,一个LBP算子可以产生不同的二进制模式,对于LBP(R,P)将会产生2P种模式。显然,随着领域集内采样点数的增加,二进制模式的种类是急剧增加的。如3×3领域内8个采样点,则得到28种二进制模式;5×5领域内20个采样点,有220=1,048,576种二进制模式;7×7的领域内有36个采样点,则二进制模式的种类达到236,约为687×1010。显然,如此多的二值模式无论对于纹理的提取还是纹理的识别、分类及信息的存取都是不利的。在实际应用中,不仅要求所采用的算子尽量简单,同时也要求计算速度足够快、数据存储量尽量小。而随着模式种类的增加,计算量和数据量也会急剧增加,同时,过多的模式种类对于纹理的表达也是不利的。
为了解决二进制模式过多的问题,提高统计性,Ojala提出了采用一种“等价模式”(Uniform
Pattern)来对LBP算子的模式种类进行降维。Ojala等认为,在实际图像中,绝大多数LBP模式最多只包含两次从1到0或从0到1的跳变。因此,Ojala将“等价模式”定义为:当某个局部二进制模式所对应的循环二进制数从0到1或从1到0最多有两次跳变时,该局部二进制模式所对应的二进制就成为一个等价模式类。如0000
0000,1111 1111,1000
0111都是等价模式类。
以LBP(1,8)为例,即在半径为1的环形区域上8个采样点的领域进行LBP编码,有资料显示,原始的二进制模式为28=256种,等价模式为P*(P-1)+2=58种,那为什么就是58种二进制模式?
首先,要注意Ojala对等价模式的定义,即当某个局部二进制模式所对应的循环二进制数从0到1或从1到0最多有两次跳变时,该局部二进制模式所对应的二进制就成为一个等价模式类;
其次,对于式子P*(P-1)+2中的2,很容易理解,其模式即为0000 0000和1111
1111,这是0到1或1到0跳变次数为0的情况;
最后,式子中的P*(P-1)怎么理解?稍微列举一些等价模式就能发现规律,如1011
1111,1001 1111,1000 1111,0001
1111等,可以发现,这些等价模式中0到1或1到0的跳变次数为2(注意:等价模式中不存在跳变次数为1的情况),而且其中0的出现必须是连续的(观察以0的出现规律为例,1的出现规律类似),0连续出现的意思是中间不出现1。
本人数学不好,利用一种直观的较笨的方法进行统计如下:
当8个二进制位中只出现1个0时,0的位置存在8种情况,列举如下:0111 1111,1011
1111,1101 1111,1110 1111,1111 0111,1111 1011,1111 1101,1111
1110。
当8个二进制位中连续出现两个0时,00的位置也存在8种情况,0011 1111,1001
1111,1100 1111,1110 0111,1111 0011,1111 1001,1111 1100,0111
1110。
同理,当8个二进制位中连续出现7个0时,0000
000的位置也存在8种情况,这样,规律就出现了,总共有8*(8-1)=56种情况。
综上:如果对像素进行LBP(R,P)编码时,采用等价模式,产生的二进制模式种类为P*(P-1)+2种,此在MATLAB实现中将产生58维的向量。
以上文字部分参考:重庆大学,黄非非的硕士学位论文《基于LBP的人脸识别研究》。另外其他类型的模式共计为一种模式,所以等价模式产生的二进制模式种类为P*(P-1)+3种
。
上述两篇文章在计算Uniform LBP时,都认为此8位的二进制是环形的,0次跳变是2,
1次跳变是0, 2次跳变是65,其他跳变归为1种。所以是 2+0+56 +1=59。
还有人计算时,认为此8bit不是环形的,并且还做了枚举计算,可参见清风捷影的博客Uniform
LBP Pattern:跳变0次的数目:2 ,跳变1次的数目:14 ,跳变2次的数目:42
,其他合并成1种。所以2+14+42+1 = 59.
不认为是环形,则环形断开,产生了1次跳变的情况,如果认为是环形,则1次跳变就归类到的2次跳变中。uniform
LBP模式就是一个二进制序列从0到1或是从1到0的变过不超过2次。这两种认为方法,最后得出的结论一致(都是59种)。但是如果从旋转不变性的角度看,还是环形好(这个二进制序列首尾相连)。
加载中,请稍候......