無痛理解Local binary pattern(LBP)
Local binary pattern(LBP)特徵應該算是一種比較古老的特徵了,在90年代人臉識別等領域因為效果好速度快曾經風靡一時。在深度學習的時代 文獻中已經很少有人用了,因為沒啥可說了。不過最近看本領域一篇論文卻用了這個特徵加一些傳統的方法取得了比各種卷積神經網路還好的結果,真是一股清流,所以重溫一下這個特徵。
針對圖像中的某個像素,其周圍有8個連接的像素,如果像素值比這個像素高就算1,低就算0,這樣可以得到一個8位的二進位編碼,轉換成10進位就是0到255之間一個數。這樣運算一遍之後一幅圖像就可以得到一個相同大小(忽略邊緣的像素)的LBP圖像,這就是最基本原始的LBP特徵。如下圖所示
在這之後就是影響性能的各種trick了,網上有幾種開源的LBP實現,每個都有一些不同,這個怎麼選可能只能根據task來調了。
1)原始的LBP有256個pattern,這些pattern不具有旋轉不變性,有人發現某幾種有旋轉不變性這就是uniform pattern。unifrom pattern就是最多有2個 0-1 or 1-0 轉換的. 比如 00010000i (2 transitions) 是 uniform pattern, 01010100(6 transitions) 不是. 這樣的uniform pattern一共有56個,加上全0全1的兩種pattern,剩下其他都算為一類,就從256變成了59個pattern。
2)有的方法直接把一個256維的直方圖作為特徵向量,這樣最簡單。有的像HOG那樣把原圖像分為幾個cell,把每個cell的直方圖直接拼起來或者用bilinear interploation的方式量化。
3)8位的2進位編碼有的是從左上角的像素開始算,有的是從右上角,有的是順時針有的是逆時針,這對結果貌似沒用影響(?)。
推薦閱讀: