最近沒時間寫新文章,只好把舊的存檔哪出來充數,有些文章之前寫了一點,就被丟到倉庫了,現在正好可以清倉拍賣:P
這是前陣子做實驗的時候寫的一個計算LBP histogram的的小程式,這個LBP特徵又被稱為Uniform LBP,因為它沒有Weight的概念,又或者可以說它的Weight都是1。以下簡單說明Uniform LBP的算法:
LBP是一種用來描述區域紋理變化的特徵計算方式。其計算速度非常的快,相當適合使用在真實的即時系統之中。而缺點則是在平滑影像上的效果差強人意(例如:天空或飾海洋),因為平滑影像的灰階值太過相近。最近幾年,LBP演算法在人臉辨識的領域也相當受到關注
以下用3X3大小的區塊說明LBP histogram的計算方式。
第一步我們要先將周圍的灰階與中心點相減之後做二值化(Threholding)。像這樣:
55-43=+12>0 則二值化後,其值=1
35-43=-08<0 則二值化後,其值=0
28-43=-15<0 則二值化後,其值=0
52-43=+09>0 則二值化後,其值=1
所以我們可以得這樣的結果。
接下來,我們要依照2的次方排列相關位置的權重。由左到右,由上到下分別是 2的0次方=1、2的1次方=2、2的2次方=4、2的3次方=8,以此類推。因此會形成下面的權重方塊。
將權重方塊和我們在第一步得到的結果相乘以後再相加,像這樣:
1X1+0X2+1X4+1X8+0X16+0X32+1X64+1X128=205
就是這3X3區塊的LBP值。
對整張圖片做迭代(iterative)就可以統計出這張圖片的LBP histogram。 也就是一張圖有三個區塊,算出的LBP值分別是205 20 205,那LBP histogram就是一個256大小的陣列lbpArray。 其中205的位置lbpArray[20]=1、lbpArray[205]=2,其他部分都是0的稀疏矩陣。
以上方法是計算整張圖片的LBP直方圖(Uniform LBP )。
我用BCB寫了一個小程式,用來計算所選資料夾下所有圖片的LBP histogram並將這些存到記事本中,大家可以參考看看,裡面的一些程式是擷取自芬蘭奧魯大學的教授所開發的C++ Library中
公告
2009/12/30 跨年快到了,大家去哪裡玩呢?小弟於昨天收到報到通知(簡稱兵單?!),預定於1/18前往嘉義報到。雖然這陣子都沒更新,但是還是希望大家多多支持我和這個部落格。目前計畫先抽空吧jQuery外掛的主題先完善,請大家多多支持:D
2009/10/06 本部落格最近的寫作主題將致力於介紹好用的jQuery plugin,並簡單的說明如何使用這些外掛。敬請期待喔!:)
2008/10/09 RSS網址更改成 http://feedproxy.google.com/finalevil,原本使用 http://feeds.feedburner.com/FinalevilsBlog的朋友們幫忙換一下喔,謝謝大家的訂閱:)
2008/10/09 RSS網址更改成 http://feedproxy.google.com/finalevil,原本使用 http://feeds.feedburner.com/FinalevilsBlog的朋友們幫忙換一下喔,謝謝大家的訂閱:)
2008年12月11日星期四
[研究]特徵值計算01-Local binary pattern(LBP) histogram
標籤:
09:OPENCV與人臉辨識
|
||
訂閱:
張貼意見 (Atom)



部落格首頁
我的履歷表
旅遊全記錄
程式創作地
彩色照相本
寫於:
標籤:







張貼意見
這方法還有一個rotation invariance版本
稱LBP riu2上標 p,r下標
這紋理特徵我也有運用在我的碩論中...
提供您這訊息 希望對您有幫助
Alan
謝謝你的訊息:)
請問一下,一定要安裝cbc才能跑這個程式嗎?
我把他下載了然後載入VC.NET
但卻run出這樣的錯誤信息
error C2001: 常數中包含新行字元
fatal error C1083: 無法開啟包含檔案: 'vcl.h': No such file or directory
請大大幫我解惑,謝謝!
@儒泓
由於這個程式是用BCB寫的,所以在VC是沒辦法編譯的喔!
建議用文字編輯器打開程式直接參考。