天天看點

OpenCV學習(39) OpenCV中的LBP圖像

本章我們學習LBP圖像的原理和使用,因為接下來教程我們要使用LBP圖像的直方圖來進行臉部識别。

參考資料:

<a href="http://docs.opencv.org/modules/contrib/doc/facerec/facerec_tutorial.html">http://docs.opencv.org/modules/contrib/doc/facerec/facerec_tutorial.html</a>

<a href="http://www.cnblogs.com/mikewolf2002/p/3438166.html">http://www.cnblogs.com/mikewolf2002/p/3438166.html</a>

      LBP的基本思想是以圖像中某個像素為中心,對相鄰像素進行門檻值比較。如果中心像素的亮度大于等于它的相鄰像素,把相鄰像素标記為1,否則标記為0。我們可以用二進制數字來表示LBP圖中的每個像素的LBP編碼,比如下圖中的中心像素,它的LBP編碼為:00010011,其十進制值為19。

OpenCV學習(39) OpenCV中的LBP圖像

用公式表示就是:

OpenCV學習(39) OpenCV中的LBP圖像

其中(xc,yc)是中心像素,ic是灰階值,in是相鄰像素的灰階值,s是一個符号函數:

OpenCV學習(39) OpenCV中的LBP圖像

在OpenCV的LBP算法中,使用圓形的LBP算子:

OpenCV學習(39) OpenCV中的LBP圖像
OpenCV學習(39) OpenCV中的LBP圖像

其中R是半徑,p是樣本點的個數。

如果就算的結果不在像素坐标上,我們則使用雙線性插值進行近似處理。

OpenCV學習(39) OpenCV中的LBP圖像

下面的代碼中,我們分别實作了通常LBP圖和圓形算子LBP圖。

      elbp是圓形算子LBP函數,elbp1是通常LBP圖,我們分别對lena的圖像進行了處理,結果如下所示,從途中可以看出來,使用圓形算子的效果銳度更強。

OpenCV學習(39) OpenCV中的LBP圖像

我們換另外一張圖,該圖包括不同光照下的四副照片,再來看看LBP圖的效果:

OpenCV學習(39) OpenCV中的LBP圖像
OpenCV學習(39) OpenCV中的LBP圖像
OpenCV學習(39) OpenCV中的LBP圖像

程式代碼:

FirstOpenCV36

繼續閱讀