導航:首頁 > 源碼編譯 > 快速lbp演算法

快速lbp演算法

發布時間:2023-11-18 10:20:20

❶ 用java寫人臉識別演算法有哪些

Java中常見的人臉識別演算法有:

❷ 紋理特徵提取方法: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{egin{matrix}1 : x geq 0 0 : x leq 0 end{matrix} ight. $$

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, heta =0^o)=egin{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, heta =45^o)=egin{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, heta =0^o)=egin{vmatrix}
24 & 4 & 0 & 0
4 & 8 & 0 & 0
0 & 0 & 12 & 2
0 & 0 & 2 & 4
end{vmatrix}
$$

$$
P_{B}(d=1, heta =45^o)=egin{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, heta =45^o)=egin{vmatrix}
12 & 0 & 0 & 0
0 & 14 & 0 & 0
0 & 0 & 12 & 0
0 & 0 & 0 & 12
end{vmatrix}
$$

歸一化後,矩陣形式變為:
$$
P(d=1, heta =45^o)=egin{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: https://github.com/upcAutoLang/GLCM-OpenCV

❸ 人臉識別有什麼優化演算法還請各位大神賜教,簡單一點的。謝謝

人臉識別技術概述
廣義的人臉識別主要分為人臉檢測(face detection)、特徵提取(feature extraction)和人臉識別(face recognition)三個過程,如圖1所示。
人臉,人臉識別,人臉識別技術
圖1 典型的人臉識別過程
其中,第三步提到的人臉識別是狹義的人臉識別,即將待識別人臉所提取的特徵與資料庫中人臉的特徵進行對比,根據相似度判別分類。而人臉識別又可以分為兩個大類:一類是確認(verification),這是人臉圖像與資料庫中已存的該人圖像比對的過程,回答你是不是你的問題;另一類是辨認(identification),這是人臉圖像與資料庫中已存的所有圖像匹配的過程,回答你是誰的問題。顯然,人臉辨認要比人臉確認困難,因為辨認需要進行海量數據的匹配。在辨認過程中,海量數據的處理、特徵提取和分類演算法的選擇變得非常重要。識別率和識別速度是人臉識別技術中主要的衡量演算法性能的指標。本文後面提到的人臉識別,主要指的是人臉辨認。
人臉識別技術原理
人臉識別演算法發展到今天,大致上可以分為兩類:基於特徵的人臉識別演算法和基於外觀的人臉識別演算法。其中,多數基於特徵的人臉識別演算法屬於早期的人臉識別演算法,現在已經不再使用。不過近些年出現了一些新的基於特徵的演算法,並取得不錯的效果。而基於外觀的人臉識別演算法是由於實現簡單,受到廣泛關注。接下來將分別介紹兩類人臉識別演算法。
基於特徵的人臉識別演算法:早期的人臉識別演算法主要是基於特徵模板和幾何約束來實現的。這一類演算法首先對輸入圖像進行處理,提取出如眼睛、鼻子和嘴等面部特徵和外觀輪廓。然後計算這些面部特徵之間的幾何關系,如距離、面積和角度等。這樣將輸入圖像轉換為幾何特徵向量後,使用標準的統計模式識別技術進行匹配分類。由於演算法利用了一些直觀的特徵,計算量小。不過,由於其所需的特徵點不能精確選擇,限制了它的應用范圍。另外,當光照變化、人臉有外物遮擋、面部表情變化時,特徵變化較大。所以說,這類演算法只適合於人臉圖像的粗略識別,無法在實際中應用。
人臉,人臉識別,人臉識別技術
圖2 一些典型的面部幾何特徵示意圖
以上這些方法都是通過一些特徵模板和幾何約束來檢測特定的面部特徵,並計算特徵之間的關系。還有一些方法使用了圖像的局部表示來提取特徵。其中最受關注的方法是局部二值模式(LBP)演算法。LBP方法首先將圖像分成若干區域,在每個區域的像素3x3鄰域中用中心值作閾值化,將結果看成是二進制數。圖3顯示了一個LBP運算元。LBP運算元的特點是對單調灰度變化保持不變。每個區域通過這樣的運算得到一組直方圖,然後將所有的直方圖連起來組成一個大的直方圖並進行直方圖匹配計算進行分類。
人臉,人臉識別,人臉識別技術
圖3 LBP運算元
基於特徵的人臉識別演算法主要的優勢在於對姿態、尺度和光照等變化魯棒。由於多數特徵是基於手動選擇和先驗知識,受圖像本身的成像質量影響較少。另外,提取出的面部特徵往往維數較低,匹配速度快。這些方法的缺點是自動特徵提取的難度較大。如果特徵集的鑒別能力弱,再多的後續處理也無法補償本身的不足。
基於外觀的人臉識別演算法:基於外觀的人臉識別演算法也稱為整體方法。它們使用圖像的全局信息來辨識人臉。最簡單的整體方法是用二維數組來存放圖像的灰度值,然後直接對輸入圖像和資料庫中的所有圖像進行相關性比較。這種方法的缺點非常多,如易受環境影響、計算耗時等。其中一個重要的問題是這樣的分類是在一個非常高維的空間中進行的。為了克服維數問題,一些演算法使用統計降維方法來獲取和保留更有用的信息,最典型的演算法就是主成分分析(PCA)演算法和線性鑒別分析(LDA)演算法。
PCA演算法指出任何特定的人臉可以由一個低維的特徵子空間表示,並可以用這個特徵子空間近似地重建。將輸入人臉圖像投影到特徵子空間上得到的特徵與已知的資料庫進行比對來確定身份。PCA演算法選取的特徵最大化了人臉樣本間的差異,但也保留了一些由於光照和面部表情產生的不必要的變化。而同一個人由於光照產生的變化可能會大於不同人之間的變化,如圖4所示。LDA演算法在最大化不同個體之間的樣本差異的同時,最小化同一個體內部的樣本差異。這樣達到了人臉特徵子空間的劃分。圖5是PCA和LDA演算法的示例。其中,PCA的特徵臉是由組成PCA特徵子空間的特徵向量按二維圖像來排列得到的類似人臉的圖像。LDA的Fisher臉也是同樣道理。經過特徵臉和Fisher臉重構得到的人臉圖像在第四行。可以看到,PCA重構臉與輸入人臉差異較小,但LDA的Fisher臉很難辨認,但突出了該個體的顯著特徵。PCA和LDA方法都假設存在一個最優的投影子空間。這個子空間的每個區域對應唯一的一個人。然而,事實上在人臉空間中許多人經常會映射到相同的區域中,因此這種假設並不成立。

來源:海鑫科金
http://www.hisign.com.cn/news/instry/2699.html

閱讀全文

與快速lbp演算法相關的資料

熱點內容
調度系統軟體python 瀏覽:205
微信大轉盤抽獎源碼 瀏覽:497
壓縮機損壞的表現 瀏覽:862
同步數據伺服器怎麼用 瀏覽:634
163郵箱伺服器的ip地址 瀏覽:50
伺服器跟域是什麼 瀏覽:128
rails啟動命令 瀏覽:465
logistic命令怎麼用 瀏覽:738
c語言點滴pdf 瀏覽:747
linuxrtc編程 瀏覽:258
linux打包並壓縮命令 瀏覽:644
aes加密的證書格式 瀏覽:99
oracledbcalinux 瀏覽:844
酬勤任務app怎麼被特邀 瀏覽:199
android應用文件夾 瀏覽:1002
平面設計法則pdf 瀏覽:339
3d圓角命令怎麼用 瀏覽:569
程序員買意外險還是重疾險 瀏覽:621
遼寧的dns伺服器地址雲空間 瀏覽:448
我的世界伺服器斷開後怎麼連接 瀏覽:415