1. 程式人生 > >基於LBP紋理特徵計算GLCM的紋理特徵統計量+SVM/RF識別紋理圖片

基於LBP紋理特徵計算GLCM的紋理特徵統計量+SVM/RF識別紋理圖片

說在前頭:

區域性特徵檢測方法

斑點Blob檢測,LoG檢測 , DoG,DoH檢測,SIFT演算法,SUFT演算法 **邊緣檢測:**梯度邊緣檢測運算元,拉普拉斯運算元,LoG檢測 ,Canny邊緣檢測運算元,Roberts,Sobel,Prewitt, **角點檢測:**Kitchen-Rosenfeld,Harris角點,多尺度Harris角點,KLT,SUSAN檢測運算元,Shi-Tomasi 將基於主分量分析和Fisher線性鑑別分析所獲得的特徵抽取方法,統稱為線性投影分析。

這些方法與本文無太大關係,主要用於Logo檢測,即圖形影象固定,形狀大體不變的問題。 ##-------------------------------------------------------------------------------------------------------------------- 分析: 由於資料集太小,所以神經網路模型並不適合此類的影象處理.就需要尋找方法提取影象的紋理資訊.本文采用LBP的方法提取影象的紋理資訊,然後轉化成直方圖作為影象的特徵,然後使用多分類的方法進行分類.

前言

基於內容的影象檢索技術(CBIR)一般包括影象獲取,特徵提取,影象分類,影象檢索四個階段。CBIR 有兩個核心問題:如何能夠實現快速有效的影象分類與檢索,其關鍵在於選用哪一種演算法提取何種特徵;如何建立有效的影象分類識別系統,其關鍵在於分類演算法的選取。

紋理特徵作為顯著的視覺特徵,不僅不依賴於顏色或亮度,並且包含事物表面結構的排列與組織次序,表現出上下文內容的聯絡,反映影象中同質現象重複出現的視覺特徵,因此紋理是基於內容的影象檢索方法中非常重要的一種用於影象描述和分類的特徵。目前其在許多重要工作重要領域都有其研究成果,如天氣預報,其衛星雲圖與紅外線圖提取的紋理特徵有很大差異,所以紋理特徵可以應用在模式識別領域,作為模式識別的一個重要特徵。在地球衛星上拍攝到的地球表面遙感影象大部分紋理特徵非常明顯,其表面的山川、陸地、沙漠、海洋以及大的城市建築群都有不同的紋理特點,因此我們可以通過影象的紋理特徵對國家的不同區域識別、土地整治、土地沙漠化、城市建築群分佈等巨集觀進行研究。CBIR有著非常廣闊的應用領域,主要應用於智慧財產權的保護、犯罪與圖片過濾、網上影象檢索和數字圖書館以及新式視訊服務和影象編輯等領域。

在70年代早期,Haralick等人提出紋理特徵的灰度共生矩陣表示法(eo一oeeurrenee matrix representation),這個方法提取的是紋理的灰度級空間相關性(gray level Spatial dependenee),它首先基於象素之間的距離和方向建立灰度共生矩陣,再由這個矩陣提取有意義的統計量作為紋理特徵向量。基於一項人眼對紋理的視覺感知的心理研究,Tamuar等人提出可以模擬紋理視覺模型的6個紋理屬性,分別是粒度,對比度,方向性,線型,均勻性和粗糙度,將影象畫素的灰度值轉化為紋理資訊,對紋理進行了較為系統的分析和理解。這也是早期出現的基於統計的紋理特徵提取方法。20世紀80年代以來,馬爾可夫隨機場理論為紋理特徵提取找到了一個新方向,也是基於模型的紋理特徵提取方法的開端,而後相繼出現了高斯馬爾可夫隨機場模型(GMRF

)、Gibbs模型、高斯馬爾可夫隨機場模型、同步自迴歸模型(SAR)、隱馬爾可夫隨機場模型(HMRF)、廣義馬爾可夫隨機場模型等。

1989年,Mallat首先將小波分析引入紋理分析中,為時頻尺度分析紋理提供了一種更為精確而統一的框架。隨後,小波理論發展了許多分支,如多進位制小波、小波包以及小波框架等等,它們均在影象紋理分析中發揮了積極的作用。近年來,較引人矚目的是Ojala等人於2002年提出的區域性二值模式(LBP),其特點在於計算複雜度小,具有多尺度特性和旋轉不變形,在紋理檢索領域得到應用。

另一方面,研究人員致力於對現有紋理提取方法進行融合並對特徵指數進行有效篩選,如GLCM與MRF的融合,小波方法與MRF的融合等等;除此之外,研究人員也在不斷嘗試研究並開拓新的紋理特徵提取方法,主要是紋理多尺度特徵和旋轉不變特徵的提取;但是紋理的微觀異構性,複雜性以及其應用的廣泛性和概念的不明確性給紋理研究帶來很大挑戰。

迄今為止,已經有一些比較成功的檢索系統問世,在一定範圍之內,這些系統可以得到一個比較令人滿意的效果。現簡單介紹幾種紋理特徵提取方式僅供參考: (1)Visual SEEK/WebSEEK:是由哥倫比亞大學所開發,在影象特徵方面,採用基於小波變換方法提取紋理特徵。 (2)QBIC:IBM公司的QBIC系統的結構包括:影象入庫、特徵向量提取和查詢。採用Tamura進行紋理特徵的描述,特徵向量是由其中的粗糙度、對比度和方向性的結合所構成。 (3)NETRA:有加利福利亞大學亞歷山大數字圖書館開發。採用基於Gabor濾波器的紋理分析方法對影象進行處理,從而得到紋理特徵向量。

常用的特徵提取與匹配-紋理特徵描述方法分類

(1)統計法 :統計法的典型的分析方法是共生矩陣法,Tammra方法等。利用灰度共生矩陣可得到描述紋理特徵的統計量,常用的有對比度、能量、熵等七個特徵。Tammra提出了與人的視覺感受相關的六個紋理特徵,分別是粗糙度、對比度、方向性、線性相似性、規則性和粗略度。 (2)幾何法 :所謂幾何法,是建立在紋理基元(基本的紋理元素)理論基礎上的一種紋理特徵分析方法。紋理基元理論認為,複雜的紋理可以由若干簡單的紋理基元以一定的有規律的形式重複排列構成。在幾何法中,比較有影響的演算法有兩種:Voronio棋盤格特徵法和結構法。 (3)模型法 :模型法以影象的構造模型為基礎,採用模型的引數作為紋理特徵。典型的方法是隨機場模型法,如馬爾可夫(Markov)隨機場(MRF)模型法和Gibbs隨機場模型法 (4)訊號處理法 : 紋理特徵的提取與匹配主要有:灰度共生矩陣、Tamura紋理特徵、自迴歸紋理模型、小波變換等。

灰度共生矩陣特徵提取與匹配主要依賴於能量、慣量、熵和相關性四個引數。Tamura紋理特徵基於人類對紋理的視覺感知心理學研究,提出6種屬性,即:粗糙度、對比度、方向度、線像度、規整度和粗略度。自迴歸紋理模型(simultaneousauto-regressive,SAR)是馬爾可夫隨機場(MRF)模型的一種應用例項。

在對影象紋理特徵的提取演算法中,高斯馬爾可夫隨機場(GMRF)、區域性二值模式(LBP)、灰度共生矩陣(GLCM)這3種應用最為廣泛,分別對應3種不同的紋理空間,即3種紋理分類的途徑。

業務解決方案—採用基於統計法的紋理特徵描述

本人從事電商行業,現有業務對服裝紋理進行識別。單幅服裝影象通常對應一片較大的區域,有很多區域是無用的背景等,需要按照某種性質將不同性質的區域分割開來,以有利於下一步的影象分析以及目標檢測和識別。研究發現,不同底質區域的商品影象具有不同的統計和紋理特徵。

基於灰度共生矩陣( grey level co-occurrence matrix) GLCM 提取紋理特徵的方法是一種典型的統計分析方法,本文即採用 GLCM 進行服裝影象的表示和分析。GLCM 紋理提取方法具有較強的適應能力和穩健性,近年來已越來越多地用於影象的檢測和分類。如: 在這裡插入圖片描述

**特徵選擇:**
1)選取灰度直方圖的均值、標準差、峰度等統計特性和灰度共生矩陣的能量、相關性、對比度、熵值等紋理特性用以描述商品影象的不同區域。
2)將選取的特徵作為 SVM 的訓練特徵,進而得到 SVM 分類器,用於商品影象分類。
實驗結果表明,SVM 演算法可以較好地對服裝商品影象進行區域分類,資料少的情況優於RF。

優點:

紋理特徵也是一種全域性特徵,它也描述了影象或影象區域所對應景物的表面性質。但由於紋理只是一種物體表面的特性,並不能完全反映出物體的本質屬性,所以僅僅利用紋理特徵是無法獲得高層次影象內容的。與顏色特徵不同,紋理特徵不是基於畫素點的特徵,它需要在包含多個畫素點的區域中進行統計計算。在模式匹配中,這種區域性的特徵具有較大的優越性,不會由於區域性的偏差而無法匹配成功。作為一種統計特徵,紋理特徵常具有旋轉不變性,並且對於噪聲有較強的抵抗能力。

缺點:

紋理特徵一個很明顯的缺點是當影象的解析度變化的時候,所計算出來的紋理可能會有較大偏差。另外,由於有可能受到光照、反射情況的影響,從2-D影象中反映出來的紋理不一定是3-D物體表面真實的紋理。 例如,水中的倒影,光滑的金屬面互相反射造成的影響等都會導致紋理的變化。由於這些不是物體本身的特性,因而將紋理資訊應用於檢索時,有時這些虛假的紋理會對檢索造成“誤導”。

: 在檢索具有粗細、疏密等方面較大差別的紋理影象時,利用紋理特徵是一種有效的方法。但當紋理之間的粗細、疏密等易於分辨的資訊之間相差不大的時候,通常的紋理特徵很難準確地反映出人的視覺感覺不同的紋理之間的差別。

灰度共生矩陣(GLCM)

1. 演算法簡介

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

對於灰度共生矩陣的理解,需要明確幾個概念:方向,偏移量和灰度共生矩陣的階數。 • 方向:一般計算過程會分別選在幾個不同的方向來進行,常規的是水平方向0°,垂直90°,以及45°和135°; • 步距d:中心像元(在下面的例程中進行說明); • 灰度共生矩陣的階數:與灰度影象灰度值的階數相同,即當灰度影象灰度值階數為N時,灰度共生矩陣為N × N的矩陣;

GLCM拍攝影象(作為矩陣),角度(“0”,“45”,“90”,“135”)和整數距離d。GLCM的軸由影象中存在的灰度級定義。掃描影象的每個畫素並將其儲存為“參考畫素”。然後將參考畫素與距離d的畫素進行比較,該距離為角度θ(其中“0”度是右邊的畫素,“90”是上面的畫素)遠離參考畫素,稱為相鄰畫素。每次找到參考值和鄰居值對時,GLCM的相應行和列遞增1。 一個直觀的例子顯示了這個過程影象中的畫素被著色並用灰色值標記。設定GLCM使得每個畫素值在每個軸上表示。 在這裡插入圖片描述

我們計算每對灰度級出現的次數,例如,如果angle =“0”且d = 1,對於灰度級為1,則有一對1:1對: 在這裡插入圖片描述 雖然有兩個1:3對: 在這裡插入圖片描述 對於每個灰度級,我們以這種方式繼續,最終得到一個充滿計數的GLCM。 按照慣例,我們將GLCM和GLCMs轉置相加以獲得對稱矩陣: 在這裡插入圖片描述 通常,在計算特徵之前對GLCM進行標準化,一般的glcm()函式會是預設。 此外,還有

灰度級執行長度矩陣

GLRLM,它試圖量化執行具有相同灰度質量的影象。GLRLM的設定與GLCM略有不同;GLRLM不是沿著表的橫座標具有灰度級,而是具有執行長度。 與GLCM一樣,需要一個角度(“0”,“45”,“90”或“135”之一)。下面是使用“0”的示例,請注意影象矩陣與GLCM示例不同: 在這裡插入圖片描述 對於給定長度的每次執行,我們計算每個灰度級長度發生的次數。這裡,對於黃色畫素,1個畫素的遊程長度發生3次,對於藍色畫素,遊程長度3發生一次。 在這裡插入圖片描述 我們為影象中的所有畫素完成此操作以獲得最終的GLRLM: 在這裡插入圖片描述

灰度級區域矩陣

(GLSZM,目標是量化影象中連續畫素的區域)。GLSZM的設定方式與GLRLM相同,但橫座標是尺寸區域而不是執行長度。尺寸區域被定義為相同灰度級的9連線畫素的集合(即,在它們的邊緣和角上連線)。 對於GLSZM,我們將使用與GLCM相同的影象。不是標記灰度級別,而是將連續大小的區域標記為其大小: 在這裡插入圖片描述 對於每種顏色,我們計算給定尺寸的區域數量,例如,在其他尺寸區域中,有兩個尺寸為1的紅色區域,一個尺寸為2的藍色區域和一個尺寸為3的淺藍色區域: 在這裡插入圖片描述 從紋理矩陣中可以計算出許多不同的特徵。這些總結在下表中: 在這裡插入圖片描述 在這裡插入圖片描述 有關這些數量的更多資訊和數學定義:here. **radiomics的R包**提供了用於計算影象紋理的工具,也用於計算一階影象特徵,例如峰度,偏度和平均偏差。挺方便的,但可惜的是我們需要使用Python(當然也有PyRadiomics,但只用於計算2D\3D醫學影像圖)。

演算法實現步驟

(1) 提取灰度影象 計算紋理特徵第一步,就是將多通道的影象(一般指RGB影象)轉換為灰度影象,分別提取出多個通道的灰度影象。 紋理特徵是一種結構特徵,使用不同通道影象得到的紋理特徵都是一樣的,所以可以任意選擇其一。 (2) 灰度級量化 一般在一幅影象中的灰度級有256級,從0–255。但在計算灰度共生矩陣時我們並不需要256個灰度級,且計算量實在太大,所以一般分為8個灰度級或16個灰度級。 而且當分成8個灰度級時,如果直接將畫素點的灰度值除以32取整,會引起影像清晰度降低,所以進行灰度級壓縮時,首先我們會將圖片進行直方圖均衡化處理,增加灰度值的動態範圍,這樣就增加了影像的整體對比效果。 (3) 計算特徵值的引數選擇 計算特徵值前,先選擇計算過程中的一些引數: • 滑動視窗尺寸:一般選擇5×5或7×7的滑動視窗進行計算特徵值; ◦ 注:後文筆者選擇了6×6的視窗矩陣,只是隨意進行舉例說明,一般還是選維度為5或7的滑動視窗矩陣; • 步距d:一般選擇d = 1,即中心畫素直接與其相鄰畫素點做比較運算; • 方向選擇:計算灰度共生矩陣的方向一般為0°,45°,90°,135°四個方向;求出四個方向矩陣的特徵值後,可以通過計算四個特徵值的平均值作為最終特徵值共生矩陣; ◦ 注:如果選擇其他方向,則在每個方向上都會得到相當繁多的紋理特徵,不利於使用的效率。 (4) 紋理特徵值的計算 由於灰度共生矩陣的維度較大,一般不直接作為區分紋理的特徵,而是基於它構建的一些統計量作為紋理分類特徵。例如HaralickHaralick曾提出了14種基於灰度共生矩陣計算出來的統計量:能量、熵、對比度、均勻性、相關性、方差、和平均、和方差、和熵、差方差、差平均、差熵、相關資訊測度以及最大相關係數。

紋理特徵值

1) 角二階矩 / 能量( ASM)

灰度共生矩陣( grey level co-occurrence matrix,GLCM)用來描述影象灰度分佈的均勻程度和紋理的粗細程度。 如果 GLCM 的所有值都非常接近,則 ASM 值較小; 如果矩陣元素取值差別較大,則 ASM 值較大。當 ASM 值較大時,紋理粗,能量大; 反之,當 ASM 值小時,紋理細,能量小。 ASM=∑i∑jP(i,j)2

2) 相關性(Correlation)

自相關反應了影象紋理的一致性。如果影象中有水平方向紋理,則水平方向共生矩陣Correlation值大於其餘方向共生矩陣Correlation的值。它度量空間灰度共生矩陣元素在行或列方向上的相似程度,因此,相關值大小反映了影象中區域性灰度相關性。當矩陣元素值均勻相等時,相關值就大;相反,如果矩陣像元值相差很大則相關值小。 在這裡插入圖片描述

3)熵(Entropy)

測量影象紋理的隨機性(強度分佈)。熵是影象包含資訊量的隨機性度量,表現了影象的複雜程度。當共生矩陣中所有值均相等或者畫素值表現出最大的隨機性時,熵最大;因此熵值表明了影象灰度分佈的複雜程度,熵值越大,影象越複雜。 表示矩陣中元素的分散程度,也表示影象紋理的複雜程度。 在這裡插入圖片描述

4)對比度(Contrast)

對比度反應了影象的清晰度和紋理的溝紋深淺。度量矩陣的值是如何分佈和影象中區域性變化的多少,反應了影象的清晰度和紋理的溝紋深淺。紋理的溝紋越深,反差越大,效果清晰;反之,對比值小,則溝紋淺,效果模糊。對公式(6),典型的有κ=2,λ=1。 反應某畫素值及其領域畫素值亮度的對比情況,影象亮度值變化快,換句話說紋理較深,它的對比度就越大,也就是它的紋理越清晰。 在這裡插入圖片描述

5)反差分矩陣(Inverse Differential Moment, IDM)

反差分矩陣又稱逆方差、倒數差分矩,反映了紋理的同質性(清晰程度和規則程度),度量影象紋理區域性變化的多少,紋理清晰、規律性較強、易於描述的,值較大。其值大則說明影象紋理的不同區域間缺少變化,區域性非常均勻。 矩陣的對角元素值越大,逆差矩越大,反映了圖片紋理的區域性變化,區域性變化越小,影象越均勻,逆差矩越大。 在這裡插入圖片描述

6)能量(Energy)

是灰度共生矩陣各元素值的平方和,是對影象紋理的灰度變化穩定程度的度量,反應了影象灰度分佈均勻程度和紋理粗細度。能量值大表明當前紋理是一種規則變化較為穩定的紋理。更高的值==紋理均勻性。 在這裡插入圖片描述

7)相異性(Dissimilarity)

計算對比度時,權重隨矩陣元素與對角線的距離以指數方式增長,如果改為線性增長,則得到相異性。

8)同質性/逆差距(Homogeneity)

測量影象的區域性均勻性,非均勻影象的值較低,均勻影象的值較高。與對比度或相異性相反,同質性的權重隨著元素值與對角線的距離而減小,其減小方式是指數形式的。

9)叢集陰影(ClusterShade)

陰影大小(shade),可能和圖片質量有關,更直觀的是與服裝的褶皺程度相關(褶皺處與光線形成反射陰影),越平整,shade值越小。測量矩陣的偏度並衡量均勻性的概念; 當值很高時,影象是不對稱的。

10)叢集突出物(ClusterProminence)

物體在圖中的突兀情況,紋路和紋案反差越大,prom值就越大。(可看我另一篇紋理相關分析的文章)

11)最大概率(Maximum probability)

表示影象中出現次數最多的紋理特徵。

12)叢集趨勢(clusterTendency)

群集趨勢是具有相似灰度值的體素分組的度量。(該值在我這個專案中沒有做)

13)差熵(Difference Entropy)

差熵是鄰域強度值差異的隨機性/變異性的度量。

14)峰度(Kurtosis)

15)均值(Mean)

16)標準差(Std)

注:後3個不屬於紋理特徵,為常規統計量,不受glcm的步長和方向影響。

影象特徵值_峰度與偏度

**Kurtosis(峰度):**表徵概率密度分佈曲線在平均值處峰值高低的特徵數,是對Sample構成的分佈的峰值是否突兀或是平坦的描述。直觀看來,峰度反映了峰部的尖度。樣本的峰度是和正態分佈相比較而言的統計量,計算時間序列x的峰度,峰度用於度量x偏離某分佈的情況,正態分佈的峰度為3。如果峰度大於3,峰的形狀比較尖,比正態分佈峰要陡峭。反之亦然; 在統計學中,峰度衡量實數隨機變數概率分佈的峰態,峰度高就意味著方差增大是由低頻度的大於或小於平均值的極端差值引起的。 Skewness(偏度): 是對Sample構成的分佈的對稱性狀況的描述。計算時間序列x的偏度,偏度用於衡量x的對稱性。若偏度為負,則x均值左側的離散度比右側強;若偏度為正,則x均值左側的離散度比右側弱。對於正態分佈(或嚴格對稱分佈)偏度等於O。 YY:(這兩個值比較熟悉,以前有個圖計算的專案用Spark做,SparkSQL裡就有該函式)

Python的2種參考(計算資料均值、標準差、偏度、峰度):

import numpy as np
R = np.array([1, 2, 3, 4, 5, 6]) #初始化一組資料
R_mean = np.mean(R) #計算均值
R_var = np.var(R)  #計算方差
R_sc = np.mean((R - R_mean) ** 3)  #計算偏斜度
R_ku = np.mean((R - R_mean) ** 4) / pow(R_var, 2) #計算峰度
print([R_mean, R_var, R_sc, R_ku])


import numpy as np
from scipy import stats
x = np.random.randn(10000)
mu = np.mean(x, axis=0)
sigma = np.std(x, axis=0)
skew = stats.skew(x)
kurtosis = stats.kurtosis(x)

使用GLCM特徵值+SVM對紋理圖片分類

通過提取灰度直方圖的均值、標準差、峰度等統計特性和灰度共生矩陣的能量、相關性、對比度、熵值等如上所屬紋理特性,作為 SVM 訓練特徵,得到 SVM 分類器,即可用於紋理影象的處理。 8個類別,圖片質量稍低,但也得到了0.8左右的準確率,說明了統計特徵的有效性。 在這裡插入圖片描述

GLCM特徵的重要性分析

下圖是我測試的各個特徵對分類準確度的重要性分析結果: 在這裡插入圖片描述 據圖理解: (1)反差性特徵: 與反差相關的特徵使用的是和GLCM對角線距離相關的權重,也就是說,權重是距離的函式。 為了強調視窗內的區域性反差,權重應該使反差大的影像的運算結果得到較大的數值。對角線元素沒有反差,離對角線越遠反差越大。因此,權重應該隨距離而增加。

反差的特徵: 1.對比度(Contrast) 2.相異性(Dissimilarity) 計算對比度時,權重隨矩陣元素與對角線的距離以指數方式增長,如果改為線性增長,則得到相異性。 3.同質性(Homogeneity) 與對比度或相異性相反,同質性的權重隨著元素值與對角線的距離而減小,其減小方式是指數形式的。

(這部分論證內容可看我另一篇文章:影響紋理分類準確度的GLCM特徵研究分析)…好像沒寫完

(2)有序性特徵 有序性(Orderliness)是指視窗內像元值的規律程度或有序程度。比如以下兩個視窗A, B,其水平方向有相同的對比度(都為1),因為每個像元都比左側像元大1。但是A, B的有序性卻很不相同,A很明顯比B更有規律。 在這裡插入圖片描述 在GLCM中,元素的值是各種組合的概率,用GLCM元素本身來構造權重就可以得到度量有序性的紋理特徵。

有序的特徵: 1.角度二階矩(Angular Second Moment, ASM)和能量(Energy) 這兩個特徵直接以Pi,j作為權重,W=P,有序性越高,ASM和能量越大。能量有時也被稱為均勻性(Uniformity)。 2.熵(Entropy) 以Pi,j的自然對數的相反數作為權重。有序性越低,熵越大。

度量有序性的三個特徵都有一定的物理意義。角度二階矩是旋轉加速度的一種度量,能量則是一個常見的物理量,而熵在熱動力學中代表的是永久損失掉無法再利用的熱量。熵可以不嚴格的理解為混沌或無序,可以認為和能量是相反的一對概念。

:------------------------------(分界線)----------------------------------------- 這部分是實驗,沒上面的方法好,僅作為一個簡單的記錄。

影象特徵提取(二)-LBP特徵

**LBP(Local Binary Pattern,區域性二值模式)**是一種用來描述影象區域性紋理特徵的運算元,具有多解析度、灰度尺度不變、旋轉不變等特性。主要用於特徵提取中的紋理提取。   紋理是個什麼概念呢?具體定義為:泛指物體面上的花紋或線條,是物體上呈現的線形紋路。在影象處理中一般理解也就是灰度變化引起的某些特徵反應。   在這裡插入圖片描述 LBP具有的特性:

  1. 灰度不變性

  2. 支援多解析度

  3. 等價模式

LBP紋理特徵向量,一般以影象分塊LBP直方圖表示。LBP特徵向量提取的步驟:

  1. 計算影象中每個畫素點的LBP模式(等價模式,或者旋轉不變+等價模式)。 影象劃分若干為N × N的影象子塊(如16 × 16),計算每個子塊中每個畫素的LBP值;
  2. 然後計算每個子塊的LBP特徵值直方圖,得到N × N影象子塊的直方圖,然後對該直方圖進行歸一化處理;
  3. 最後將得到的每個子塊的歸一化直方圖連線成一個特徵向量,也就是整幅圖的LBP紋理特徵向量;

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

基於LBP紋理特徵-計算GLCM紋理統計量-進行紋理圖片識別

注意: 使用from skimage.feature import local_binary_pattern 的lbp演算法得到的是歸一化後的float陣列形式影象,而GLCM要求輸入的影象為int陣列形式的(cv2讀進來的格式)。所以我們使用自己實現的lbp函式。

  def LBP(self, image):
       W, H = image.shape  # 獲得影象長寬
       xx = [-1, 0, 1, 1, 1, 0, -1, -1]
       yy = [-1, -1, -1, 0, 1, 1, 1, 0]  # xx, yy 主要作用對應順時針旋轉時,相對中點的相對值.
       res = np.zeros((W - 2, H - 2), dtype="uint8")  # 建立0陣列,顯而易見維度原始影象的長寬分別減去2,並且型別一定的是uint8,無符號8位,opencv圖片的儲存格式.
       for i in range(1, W - 2):
           for j in range(1, H - 2):
               temp = ""
               for m in range(8):
                   Xtemp = xx[m] + i
                   Ytemp = yy[m] + j  # 分別獲得對應座標點
                   if image[Xtemp, Ytemp] > image[i, j]:  # 畫素比較
                       temp = temp + '1'
                   else:
                       temp = temp + '0'
               # print int(temp, 2)
               res[i - 1][j - 1] = int(temp, 2)  # 寫入結果中
       return res

計算結果如圖: 在這裡插入圖片描述

總結: LBP是一種基於灰度描述影象紋理特徵的不相關運算元,它通過對影象任意一點與其周圍點的灰度值大小關係來表徵影象的區域性紋理特徵。 採用融合LBP和GLCM的紋理特徵提取方法,運用旋轉不變的LBP運算元對紋理影象進行計算,得到LBP影象後,提取LBP影象的紋理資訊(對比度、相關性、熵、能量、逆差矩等), 外加(均值、標準差、峰度)3個非GLCM特徵,最後使用分類演算法對紋理進行分類。

最終的識別準確率(使用與上面單GLCM特徵方法相同資料集): 在這裡插入圖片描述 實驗得知,此方法有助於提高模型準確度。

PS: 為了減少GLCM計算量,可對原始影象灰度級壓縮,將Gray量化成16級。

擴充套件方法:

(這應該是我最認真的一篇部落格了)。。。