兩種改進的LPB演算法,CLBP和ELBP
最近看了兩篇關於CLBP和ELBP的文章。現在對文中提到的LBP相關知識做一個小小的總結
一、LBP簡介
1.傳統LBP
其中是中心畫素的灰度值,是其鄰域畫素的灰度值。通過比較中心畫素周圍鄰域畫素與中心畫素的大小,大於中心畫素為1,小於中心 畫素為0,最後按一定順序進行二進位制編碼。對於沒有完全落在畫素中心的鄰域點,可以通過線性插值的方法來估算其灰度值。最後通過遍歷所有LBP畫素值,建立直方圖來表示該圖的紋理特徵。假設圖片尺寸是i*j,則直方圖表達為:
2.uniform LBP
由上文可知,傳統LBP會有種編碼模式,這會生成一個非常冗長的直方圖,由於巨大維數,H值的估計也十分棘手,並且LBP對噪聲十分敏感,圍繞中心畫素輕微的上下波動,可能導致編碼結果大相徑庭。因此,Ojala等人提出了統一編碼模式:
U表示二進位制編碼0/1跳變的次數。一般情況下,U<=2,稱之為統一模式,以p=8為例,編碼數量從原先的=256個變為8*7+3=59個,其中58個為統一模式,如下圖所示。這樣既降低了維度,又減少了高頻噪聲的影響。考慮旋轉不變性,開始7行每一行為一種,再加上全1、全0和其他,共p+2種。
3.
由於LBP過分簡化了區域性結構丟失了紋理資訊,Ojala等人通過對每個區域性模式進行對比,提出了一個區域性互補的描述子,稱為,並使用2維直方圖並聯和,這裡記為LBP/VAR
二、CLBP
與傳統LBP不同,CLBP具有3個描述子。分別是CLBP-C、CLBP-S、CLBP-M。
如圖,規定
,其中
上述公式中並不能直接作為描述子,因為其對於光照,旋轉,噪聲等都很敏感。作者把鄰域畫素和中心畫素的差值分成符號分量和梯度分量,且由二者相乘得到,分別記做CLBP_S和CLBP_M。如圖,(a)為3x3的取樣塊,其差值可由(b)表示,並且可以分解成(c)*(d),(c)為符號分量,(d)為梯度分量。本文中的符號分量CLBP_S實際上就是傳統LBP,兩者編碼方式也是相同的(這裡的-1相當於傳統LBP中的0)。作者分析並驗證了,符號分量所包含的紋理特徵遠高於梯度分量。
由上圖可發現CLBP_M是連續的值,為了與CLBP_S統一編碼,需要將其也轉換成二進位制編碼。受CLBP_S啟發,作者提出以下編碼方式對其進行編碼,其中c是自適應閾值,這裡c的值取整幅圖相中的均值。但文中作者並未給出的計算過程。個人推測是鄰域畫素與中心畫素梯度差的絕對值累加(或者求平均,最後比較的結果都一樣)。
中心畫素代表區域性灰度級,也包含了區域性灰度判別資訊,為了讓其有效和LBP_M和LBP_S結合,我們進行如下編碼:
這裡表示中心畫素灰度值,表示整幅影象灰度的平均值。即通過比較中心畫素與全圖平均畫素值的大小來進行二進位制編碼。
CLBP演算法流程如圖所示。至此三個描述子CLBP_SCLBP_M,CLBP_C全部產生,可通過串聯、並聯或串並聯其直方圖的形式將其進行融合。
最後,運用到紋理識別分類中,用卡方距離來測量兩個直方圖的不相似度:
X是直方圖bin的總數,和別分表示樣本和模板在第x個bin上的值。
三、ELBP
本文中作者針對區域性區域塊提出了兩種互補的特徵型別,畫素強度和畫素差異。畫素強度又分為鄰域畫素強度和中心畫素強度,畫素差異分為徑向差異和角度差異。下面將逐一介紹:
,其中
(應該是1/p,原文中作者寫錯了)可以發現NI-LBP其實就是鄰域畫素與其均值的比較並進行二進位制編碼,說白了和傳統LBP的差異就在於閾值u的選擇不同。
和LBP_C一樣,是整幅圖的均值。
其中,表示的是徑向距離相差的和兩點的畫素灰度值的差。
與RD-LBP類似,其中,表示的是半徑為r且角度相差的兩個畫素灰度值的差。作者通過實驗發現,在統一LBP模式下,AD-LBP所提供的紋理資訊較少,為了降低維度提高運算速率,後面的實驗中,AD-LBP不作為重點。最後,使用串並聯的方式將直方圖融合。下圖是ELBP演算法的示意圖
通過改變(p,r)的值實現多解析度,下圖清晰的表達了實現過程。
參考文獻: