天天看點

旋轉不變LBP的36種模式

近日接觸到旋轉不變LBP,剛開始以為有256種模式,但是慢慢發現并沒有這麼多種模式,比如10000000(128)和00000010(2)他們的旋轉不變LBP模式都是一樣的,最後都為00000001(1),是以我在這裡讨論一下旋轉不變LBP一共有多少種模式。

用Python實作一下旋轉不變LBP的種類,代碼思路如下

1、把0-255這256個數字依次移位計算最小值

2、建立一個數組用來存放數字,如果這個數字不在數組中,就加入數組,如果在數組中,就pass掉。同時建立一個計數器,用來計算一共有多少種模式。

程式如下:

import numpy as np

def circular_shift_left (a):
    bit = '{:08b}'.format(a)
    c = []
    for i in range(8):
        bin_value = bit[i:] + bit[:i]
        int_value = int(bin_value,2)
        c.append(int_value)
    return np.min(c)

if __name__=='__main__':
    count = 0 #計數
    mode= [] # 模式
    for i in range(256):
        a = circular_shift_left(i)
        if a in mode:
            pass
        else:
            mode.append(a)
            count+=1 #
print(mode,count)
           

運作結果為: 

[0, 1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31, 37, 39, 43, 45, 47, 51, 53, 55, 59, 61, 63, 85, 87, 91, 95, 111, 119, 127, 255] 36

可以發現,結果并不是256維的,而是36維的,也就是說旋轉不變LBP一共有36種模式。 

繼續閱讀