lbp提特徵python(lbp的優點)

本文目錄一覽:

lbp是什麼意思?

lbp是Local Binary Patterns的縮寫,中文名字叫做「線性反投影演算法」,指局部二值模式,最初功能為輔助圖像局部對比度,並不是一個完整的特徵描述子。

lbp線性反投影演算法又稱累加法,是最早使用的一種簡單成像演算法。它將通過某點的所有投影射線進行累加,再反向估算出該點的密度值,從成像觀點分析,它是不完全的雷登逆變換。

lbp演算法計算步驟:

1、基於均質靈敏度信息,利用線性反投影演算法獲得初始圖像。

2、利用已獲得的介電常數分布,求解正問題,得到一組模擬電容值,將該值與測量電容值進行比較,若誤差已達到滿意值,演算法結束,否則進行下步。

3、修正靈敏度信息。

4、根據上步已經修正後的靈敏度信息,利用測量電壓重新進行線性反投影;返回第二步,並進行循環迭代,直到獲得滿意的結果為止,迭代結束。

怎樣把lbp直方圖連接成特徵向量

對LBP特徵向量進行提取的步驟

(1)首先將檢測窗口劃分為16×16的小區域(cell);

(2)對於每個cell中的一個像素,將相鄰的8個像素的灰度值與其進行比較,若周圍像素值大於中心像素值,則該像素點的位置被標記為1,否則為0。這樣,3*3鄰域內的8個點經比較可產生8位二進位數,即得到該窗口中心像素點的LBP值;

(3)然後計算每個cell的直方圖,即每個數字(假定是十進位數LBP值)出現的頻率;然後對該直方圖進行歸一化處理。

(4)最後將得到的每個cell的統計直方圖進行連接成為一個特徵向量,也就是整幅圖的LBP紋理特徵向量;

然後便可利用SVM或者其他機器學習演算法進行分類了。

圖像的特徵提取都有哪些演算法

圖像的經典特徵提取方法:

1 HOG(histogram of Oriented Gradient,方向梯度直方圖)

2 SIFT(Scale-invariant features transform,尺度不變特徵變換)

3 SURF(Speeded Up Robust Features,加速穩健特徵,對sift的改進)

4 DOG(Difference of Gaussian,高斯函數差分)

5 LBP(Local Binary Pattern,局部二值模式)

6 HAAR(haar-like ,haar類特徵,注意haar是個人名,haar這個人提出了一個用作濾波器的小波,為這個濾波器命名為haar濾波器,後來有人把這個濾波器用到了圖像上,就是圖像的haar特徵)

圖像的一般提取特徵方法:

1 灰度直方圖,顏色直方圖

2 均值,方差

3 信號處理類的方法:灰度共生矩陣,Tamura紋理特徵,自回歸紋理特徵,小波變換。

4 傅里葉形狀描述符,小波描述符等,

紋理特徵提取方法:LBP, 灰度共生矩陣

搬運自本人 CSDN 博客: 《紋理特徵提取方法:LBP, 灰度共生矩陣》

註:本文中大量行內 Latex 公式在中不支持,如果想要仔細參閱,請移步上面的 CSDN 博客鏈接。

在前面的博文 《圖像紋理特徵總體簡述》 中,筆者總結了圖像紋理特徵及其分類。在這裡筆者對其中兩種演算法介紹並總結。

參考網址:

《紋理特徵提取》

《【紋理特徵】LBP 》

《灰度共生矩陣(GLCM)理解》

《灰度共生矩陣的理解》

《圖像的紋理特徵之灰度共生矩陣 》

參考論文:

《基於灰度共生矩陣提取紋理特徵圖像的研究》——馮建輝

《灰度共生矩陣紋理特徵提取的Matlab實現》——焦蓬蓬

LBP方法(Local binary patterns, 局部二值模式)是一種用來描述圖像局部紋理特徵的運算元;它的作用是進行特徵提取,提取圖像的局部紋理特徵。

LBP是一個計算機視覺中用於圖像特徵分類的一個方法,用於紋理特徵提取。後來LBP方法與HOG特徵分類器與其他機器學習演算法聯合使用。

LBP演算法的核心思想,是以某個像素點為中心,與其鄰域像素點共同計算。關於鄰域像素點的選擇方法,其實並不唯一:

這裡選擇環形鄰域的方法進行說明:

窗口中心的像素點作為中心,該像素點的像素值作為閾值。然後將周圍8個像素點的灰度值與該閾值進行比較,若周圍某像素值大於中心像素值,則該像素點位置被標記為1;反之,該像素點標記為0。

如此這樣,該窗口的8個點可以產生8位的無符號數,這樣就得到了該窗口的LBP值,該值反應了該窗口的紋理信息。如下圖所示:

圖中,中心像素點的像素值作為閾值,其值v = 3;周圍鄰域8個像素值中,有3個比閾值小的像素點置0,5個比閾值大的像素點置1。

LBP演算法的計算公式如下:

$$ LBP_{P, R}(x_{c},y_{c}) = \sum_{p=0}^{P-1}s(g_{p} – g_{c})2^p, s(x)=\left{\begin{matrix}1 : x \geq 0 \ 0 : x \leq 0 \end{matrix}\right. $$

LBP紋理特徵向量,一般以圖像分塊LBP直方圖表示。具體步驟如下:

得到了整幅圖像的LBP紋理特徵後,便可以利用SVM或者其他機器學習演算法進行分類了。

這兩天筆者將會對源碼進行測試封裝,以後會上傳到我的GitHub網站上。

灰度共生矩陣法(GLCM, Gray-level co-occurrence matrix),就是通過計算灰度圖像得到它的共生矩陣,然後透過計算該共生矩陣得到矩陣的部分特徵值,來分別代表圖像的某些紋理特徵(紋理的定義仍是難點)。灰度共生矩陣能反映圖像灰度關於font color = red 方向、相鄰間隔、變化幅度等 /font綜合信息,它是分析圖像的局部模式和它們排列規則的基礎。

對於灰度共生矩陣的理解,需要明確幾個概念:方向,偏移量和灰度共生矩陣的階數。

計算紋理特徵第一步,就是將多通道的圖像(一般指RGB圖像)轉換為灰度圖像,分別提取出多個通道的灰度圖像。

紋理特徵是一種結構特徵,使用不同通道圖像得到的紋理特徵都是一樣的,所以可以任意選擇其一。

一般在一幅圖像中的灰度級有256級,從0–255。但在計算灰度共生矩陣時我們並不需要256個灰度級,且計算量實在太大,所以一般分為8個灰度級或16個灰度級。

而且當分成8個灰度級時,如果直接將像素點的灰度值除以32取整,會引起影像清晰度降低,所以進行灰度級壓縮時,首先我們會將圖片進行直方圖均衡化處理,增加灰度值的動態範圍,這樣就增加了影像的整體對比效果。

註:筆者後文中的例子中,為了簡要說明,所以灰度等級簡單設置為4。

計算特徵值前,先選擇計算過程中的一些參數:

下面分部且適當的使用一些例子說明計算過程:

為了達到簡單說明計算紋理特徵值的目的,筆者此處做簡要的假設:灰度被分為4階,灰度階從0–3;窗口大小為6 × 6;

窗口A的灰度矩陣A如下:

窗口B的灰度矩陣B如下:

此處以左上角元素為坐標原點,原點記為(1, 1);以此為基礎舉例,第四行第二列的點記為(4, 2);

情景1:d = 1,求0°方向矩陣A的共生矩陣:

則按照0°方向(即水平方向 從左向右,從右向左兩個方向 ),統計矩陣值(1, 2),則如下圖所示:

$$

P_{A}(d=1, \theta =0^o)=\begin{vmatrix}

0 8 0 7 \

8 0 8 0 \

0 8 0 7 \

7 0 7 0

\end{vmatrix}

$$

情景2:d = 1,求45°方向矩陣A的共生矩陣:

按照情景1,同理可得此時的統計矩陣結果如下:

$$

P_{A}(d=1, \theta =45^o)=\begin{vmatrix}

12 0 0 0 \

0 14 0 0 \

0 0 12 0 \

0 0 0 12

\end{vmatrix}

$$

情景3:d = 1,求0°與45°方向矩陣B的共生矩陣:

與前面同理,可以得到矩陣B的統計及矩陣結果如下:

$$

P_{B}(d=1, \theta =0^o)=\begin{vmatrix}

24 4 0 0 \

4 8 0 0 \

0 0 12 2 \

0 0 2 4

\end{vmatrix}

$$

$$

P_{B}(d=1, \theta =45^o)=\begin{vmatrix}

18 3 3 0 \

3 6 1 1 \

3 1 6 1 \

0 1 1 2

\end{vmatrix}

$$

矩陣A, B的其餘90°、135°矩陣與上面同理,所以筆者偷懶略去。

這樣,我們就已經計算得到了單個窗口的灰度共生矩陣的各個方向的矩陣,下面就要用剛才算出的矩陣計算灰度共生矩陣特徵值。

用P表示灰度共生矩陣的歸一化頻率矩陣,其中i, j表示按照某方向同時出現於兩個像素的某兩個級別的灰度值,所以P(i, j)表示滿足這種情況的兩個像素出現的概率。

以上述情景2中的矩陣為例:

原矩陣為:

$$

P(d=1, \theta =45^o)=\begin{vmatrix}

12 0 0 0 \

0 14 0 0 \

0 0 12 0 \

0 0 0 12

\end{vmatrix}

$$

歸一化後,矩陣形式變為:

$$

P(d=1, \theta =45^o)=\begin{vmatrix}

12/50 0 0 0 \

0 14/50 0 0 \

0 0 12/50 0 \

0 0 0 12/50

\end{vmatrix}

$$

灰度共生矩陣理論的前輩Haralick等人用灰度共生矩陣提出了14中特徵值,但由於灰度共生矩陣的計算量很大,所以為了簡便,我們一般採用四個最常用的特徵來提取圖像的紋理特徵:font color=red 能量、對比度、相關度、熵 /font。

$ ASM = \sum_{i} \sum_{j}P(i, j)^2 $

能量是灰度共生矩陣各元素的平方和,又被稱角二階距。它是圖像紋理灰度變化均一的度量,反映了圖像灰度分布均勻程度和紋理粗細程度。

$ CON = \sum_{i} \sum_{j} (i-j)^2 P(i,j) $

對比度是灰度共生矩陣主對角線附近的慣性矩,它體現矩陣的值如何分布,反映了圖像的清晰度和紋理溝紋的深淺。

$ CORRLN = [\sum_{i} \sum_{j}((ij)P(i,j)) – \mu_{x} \mu_{y}]/ \sigma_{x} \sigma_{y} $

相關度體現了空間灰度共生矩陣元素在行或列方向上的相似程度,反映了圖像局部灰度相關性。

$ ENT = – \sum_{i} \sum_{j} P(i,j) \log P(i,j) $

熵體現了圖像紋理的隨機性。若共生矩陣中所有值都相等,取得最大值;若共生矩陣中的值不均勻,則其值會變得很小。

求出該灰度共生矩陣各個方向的特徵值後,再對這些特徵值進行均值和方差的計算,這樣處理就消除了方向分量對紋理特徵的影響。

一個滑動窗口計算結束後,該窗口就可以移動一個像素點,形成另一個小窗口圖像,重複進行上一步的計算,生成新窗口圖像的共生矩陣和紋理特徵值;

以此類推,滑動窗口遍歷完所有的圖像像素點後,整個圖像就形成了一個由紋理特徵值構成的一個紋理特徵值矩陣。

之後,就可以將這個紋理特徵值矩陣轉換成紋理特徵圖像。

筆者已經對源碼進行測試了封裝,並上傳到了筆者的GitHub網站上。

GitHub:

python opencv怎麼創建一個cascadeobjectdetector對象

OpenCV中有兩個程序可以訓練級聯分類器: opencv_haartraining 和opencv_traincascade。opencv_traincascade 是一個新程序,使用OpenCV 2.x API 以C++ 編寫。這二者主要的區別是 opencv_traincascade 支持 Haar、Hog和 LBP(Local Binary Patterns) 三種特徵,並易於增加其他的特徵。與Haar特徵相比,LBP特徵是整數特徵,因此訓練和檢測過程都會比Haar特徵快幾倍。LBP和Haar特徵用於檢測的準確率,是依賴訓練過程中的訓練數據的質量和訓練參數。訓練一個與基於Haar特徵同樣準確度的LBP的分類器是可能的。

opencv_traincascade and opencv_haartraining 所輸出的分類器文件格式並不相同。注意,新的級聯檢測介面(參考 objdetect 模塊中的 CascadeClassifier 類)支持這兩種格式。 opencv_traincascade 可以舊格式導出訓練好的級聯分類器。但是在訓練過程被中斷後再重啟訓練過程, opencv_traincascade and opencv_haartraining 不能裝載與中斷前不同的文件格式。

opencv_traincascade 程序使用TBB來處理多線程。如果希望使用多核並行運算加速,請使用TBB來編譯OpenCV。還有一些與訓練相關的輔助程序。

怎麼根據直方圖得到特徵向量

對LBP特徵向量進行提取的步驟(1)首先將檢測窗口劃分為16×16的小區域(cell);(2)對於每個cell中的一個像素,將相鄰的8個像素的灰度值與其進行比較,若周圍像素值大於中心像素值,則該像素點的位置被標記為1,否則為0。這樣,3*3鄰域內的8個點經比較可產生8位二進位數,即得到該窗口中心像素點的LBP值;(3)然後計算每個cell的直方圖,即每個數字(假定是十進位數LBP值)出現的頻率;然後對該直方圖進行歸一化處理。(4)最後將得到的每個cell的統計直方圖進行連接成為一個特徵向量,也就是整幅圖的LBP紋理特徵向量;然後便可利用SVM或者其他機器學習演算法進行分類了。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/235812.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-12 11:56
下一篇 2024-12-12 11:56

相關推薦

  • Python列表中負數的個數

    Python列表是一個有序的集合,可以存儲多個不同類型的元素。而負數是指小於0的整數。在Python列表中,我們想要找到負數的個數,可以通過以下幾個方面進行實現。 一、使用循環遍歷…

    編程 2025-04-29
  • Python計算陽曆日期對應周幾

    本文介紹如何通過Python計算任意陽曆日期對應周幾。 一、獲取日期 獲取日期可以通過Python內置的模塊datetime實現,示例代碼如下: from datetime imp…

    編程 2025-04-29
  • 如何查看Anaconda中Python路徑

    對Anaconda中Python路徑即conda環境的查看進行詳細的闡述。 一、使用命令行查看 1、在Windows系統中,可以使用命令提示符(cmd)或者Anaconda Pro…

    編程 2025-04-29
  • Python周杰倫代碼用法介紹

    本文將從多個方面對Python周杰倫代碼進行詳細的闡述。 一、代碼介紹 from urllib.request import urlopen from bs4 import Bea…

    編程 2025-04-29
  • Python中引入上一級目錄中函數

    Python中經常需要調用其他文件夾中的模塊或函數,其中一個常見的操作是引入上一級目錄中的函數。在此,我們將從多個角度詳細解釋如何在Python中引入上一級目錄的函數。 一、加入環…

    編程 2025-04-29
  • Python字典去重複工具

    使用Python語言編寫字典去重複工具,可幫助用戶快速去重複。 一、字典去重複工具的需求 在使用Python編寫程序時,我們經常需要處理數據文件,其中包含了大量的重複數據。為了方便…

    編程 2025-04-29
  • python強行終止程序快捷鍵

    本文將從多個方面對python強行終止程序快捷鍵進行詳細闡述,並提供相應代碼示例。 一、Ctrl+C快捷鍵 Ctrl+C快捷鍵是在終端中經常用來強行終止運行的程序。當你在終端中運行…

    編程 2025-04-29
  • 蝴蝶優化演算法Python版

    蝴蝶優化演算法是一種基於仿生學的優化演算法,模仿自然界中的蝴蝶進行搜索。它可以應用於多個領域的優化問題,包括數學優化、工程問題、機器學習等。本文將從多個方面對蝴蝶優化演算法Python版…

    編程 2025-04-29
  • Python程序需要編譯才能執行

    Python 被廣泛應用於數據分析、人工智慧、科學計算等領域,它的靈活性和簡單易學的性質使得越來越多的人喜歡使用 Python 進行編程。然而,在 Python 中程序執行的方式不…

    編程 2025-04-29
  • Python清華鏡像下載

    Python清華鏡像是一個高質量的Python開發資源鏡像站,提供了Python及其相關的開發工具、框架和文檔的下載服務。本文將從以下幾個方面對Python清華鏡像下載進行詳細的闡…

    編程 2025-04-29

發表回復

登錄後才能評論