基本原理:
lbp的基本思想是以影象中某個畫素為中心,對相鄰畫素進行閾值比較。如果中心畫素的亮度大於等於它的相鄰畫素,把相鄰畫素標記為1,否則標記為0。我們可以用二進位制數字來表示lbp圖中的每個畫素的lbp編碼,比如下圖中的中心畫素,它的lbp編碼為:00010011,其十進位制值為19。
用公式表示即是:
其中(xc,yc)是中心畫素,ic是灰度值,in是相鄰畫素的灰度值,s是乙個符號函式:
在opencv的lbp演算法中,使用圓形的lbp運算元:
對於乙個點, 它的近鄰點 用以下公式計算:
其中r是半徑,p是樣本點的個數。
如果就算的結果不在畫素座標上,我們則使用雙線性插值進行近似處理。
雙線性插值:
假設乙個影象的大小是485x647,放大分別放大1.3倍和1.7倍,即485x1.3=630.5,647x1.7=1099.9,根據四捨五入的原則確定放大後的影象為631x1100,接下來就是計算放大後影象各個位置的畫素值,例如計算放大後影象位於(136,345)位置的畫素值,則136/1.3=104.615,345/1.7=202.941,這裡由於示例的原因取小數點後三位,則原影象中相鄰的四個位置分別是(104,202),(104,203),(105,202),(105,203)這四個點,
如圖我畫出了這個點對應的周圍的四個點,203.941-203=0.941
所以f(r1)=(1-0.941)xf(104,203)+0.941xf(104,204),
f(r2)=(1-0.941)xf(105,203)+0.941xf(105,204),
104.615-104=0.615
所以f(p)=(1-0.615)xf(r1)+0.615xf(r2),
其中f表示的那一點的畫素值,這樣就計算出了f(p),實際上就是放大後影象(136,345)處對應的畫素值。
LBP特徵提取實現
捯飭了一兩天才搞好!在lbp.m下輸入下面 執行結果如圖 i imread rice.png using uniform patterns subplot 2,1,1 stem h1 h2 lbp i subplot 2,1,2 stem h2 sp 1 1 1 0 1 1 0 1 0 1 1 1 ...
LBP特徵提取冗餘處理
lbp特徵提取冗餘處理.cpp 定義控制台應用程式的入口點。include stdafx.h include include include include include include include include include using namespace cv using namesp...
LBP特徵提取演算法的提取與實現
lbp的基本思想是對影象的畫素和它周圍8個畫素進行比較,然後求和。如果中心畫素的亮度大於等於他的相鄰畫素,把他標記為1,否則標記為0。最終可以獲取2 8個可能的組合,稱為區域性二值模式或lbp碼。這樣做的原理 因為對於一張,相鄰畫素之 間的的值是有關係的。因此中心點和相鄰畫素比較後就能得到乙個二進位...