灰度共生矩陣(Gray-level Co-occurrence Matrix,GLCM),矩陣的特征量


又叫做灰度共現矩陣

Prerequisites

概念

計算方式

對於精度要求高且紋理細密的紋理分布,我們取像素間距為d=1d=1,以下是方向的說明:

我們來看,matlab內置工具箱中的灰度共生矩陣的生成函數graycomatrix(gray-level co-occurrence matrix)對方向的說明:

 


這里寫圖片描述 

 

如上圖所示,方向是在每一個像素點(pixel of interest)的鄰域(當然,邊界點除外)中獲得的,只不過這里的坐標系變為了:

 


這里寫圖片描述 

 

  • δ=(0,±1)δ=(0,±1)為水平方向掃描,也即θ=0orθ=180θ=0∘orθ=180∘;
  • δ=(±1,0)δ=(±1,0)為垂直掃描(θ=90orθ=90θ=90∘orθ=−90∘);
  • δ=(1,1),δ=(1,1)δ=(1,−1),δ=(−1,1)是45−45∘或135135∘掃描;
  • δ=(1,1),δ=(1,1)δ=(1,1),δ=(−1,−1)是4545∘掃描。

一旦像素間距離dd以及像素間空間位置關系δδ確定,即可生成灰度共生矩陣。

GLCM所表示的是紋理圖像的某些統計特性,所謂統計,通俗地講就是累計某種情況出現的次數,用這一次數除以總的情況數,即可得其統計意義上的概率。

我們來統計灰度級2與2在-45度和135度方向上(也即δ=(1,1)δ=(1,−1)或者δ=(1,1)δ=(−1,1))出現的次數,如圖所示,共出現九次,在兩個方向上即是18次。

 


這里寫圖片描述 

 

 


這里寫圖片描述 

 

matlab

matlab相關工具箱函數

使用灰度共生矩陣(GLCM)描述和提取圖像紋理特征,是一個強大且流行的工具,自然matlab工具箱會提供相應的函數——graycomatrix

給出一個圖像矩陣,設置一些參數,得到其灰度共生矩陣,這就是函數的基本用法:

[glcm, SI] = graycomatrix(I, ...)
  • 1

主要的參數有二個,分別是

  1. NumLevels(灰度級數)

最終glcm的size是NumLevels*NumLevels

  1. Offset(方向[0, 1; -1, 1; -1, 0; -1, -1]):

[0, 1]中的1表示的偏移數(offset),當然也可以取2或者更多,如上文所說,對於精度要求高且圖像紋理本身即很豐富的圖像來說,為了更精細地刻畫,我們取偏移量(offset)為1

我們將原始I轉換為SI,對SI計算GLCM,SI中元素的值介於[1, NumLevels]之間。

I = [ 1 1 5 6 8 8; 2 3 5 7 0 2; 0 2 3 5 6 7 ]; [glcm, SI] = graycomatrix(I, 'NumLevels', 9, 'G', []) % 'Offset'的default值為`[0, 1]`

 

 

glcm = 0 0 2 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 1 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 SI = 2 2 6 7 9 9 3 4 6 8 1 3 1 3 4 6 7 8

 

demo

這里先寫一個demo,稍微有點難懂的地方在於灰度共生矩陣的計算方式,然后是一些編程上的循環判斷。其他方向的情況還未考慮(在第三和第四層循環的地方可能會略有不同),以及將其封裝成一個函數的操作還是留待以后吧:

clear, clc
P = [ 0 1 2 0 1 2 1 2 0 1 2 0 2 0 1 2 0 1 0 1 2 0 1 2 1 2 0 1 2 0 2 0 1 2 0 1]; [r, c] = size(P); P_u = unique(P); % 去重,得到所有的灰度級 n = length(P_u); % 不同灰度級的個數 G = zeros(n, n); % 初始化灰度共生矩陣為全0矩陣, %% 四層循環,最外層的兩層循環用來為GLCM的各個位置賦值 % 內層的兩層循環時遍歷原始圖像矩陣,累計符合某一對應關系的的情況出現的次數 for p = 1:n, for q = 1:n, cnt = 0; % GLCM刻畫的是灰度圖像像素的統計特性,在matlab中通過次數的統計計算得到 for i = 1:r, for j = 1:c, if (j+1) <= c && ((P(i, j) == p && P(i, j+1) == q) || P(i, j) == q && P(i, j+1) == p), cnt = cnt + 1; end end end G(p, q) = cnt; end end G 

 

References

[1] <圖像特征提取——灰度共生矩陣(GLCM)>

版權聲明:本文為博主原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接和本聲明。

本文鏈接: https://blog.csdn.net/lanchunhui/article/details/49903791

矩陣的特征量:
從灰度共生矩陣上可以簡單的看出,如果對角附近的元素有較大的值,說明圖像的像素具有相似的像素值,如果偏離對角線的元素會有比較大的值,說明像素灰度在局部有較大變化。為了得到更多的紋理特征,我們還需要在進行計算:

對比度)(或反差)(contrast):

紋理溝紋越深,其對比度越大,視覺效果越清晰;反之,對比度小,則溝紋淺,效果模糊。灰度差即對比度大的象素對越多,這個值越大。灰度公生矩陣中遠離對角線的元素值越大,con越大。所以con越大圖像越清晰

 

 

 

相關度(inverse different moment):

度量空間灰度共生矩陣元素在行或列方向上的相似程度,因此,相關值大小反映了圖像中局部灰度相關性。當矩陣元素值均勻相等時,相關值就大;相反,如果矩陣像元值相差很大則相關值小。

 

 

 

能量:是灰度共生矩陣元素值的平方和,所以也稱之為能量,反映了圖像灰度分布均勻程度和紋理粗細度。ASM值大表明一種較均一和規則變化的紋理模式。

 

 

 

熵(entropy):熵在物理中的含義就是物體的規則度,越有序熵越小,越無序熵越大。此處熵同樣表示圖像的信息量,當共生矩陣中所有元素有最大的隨機性、空間共生矩陣中所有值幾乎相等時,共生矩陣中元素分散分布時,熵較大。它表示了圖像中紋理的非均勻程度或復雜程度。


自相關(correlation):反應了圖像紋理的一致性。如果圖像中有水平方向紋理,則水平方向矩陣的COR大於其余矩陣的COR值。

 

補充:
當灰度級較大時,是一個龐大的矩陣。對於一般的灰度圖,灰度級就有256,那么中就有個元素,如此龐大的矩陣會使后續的計算量增加,所以灰度共生矩陣一般要經過處理以減少灰度級數,比如通過分析紋理圖像直方圖,在不影響圖像紋理質量的前提下,經過適當的變換壓縮灰度級。

參考:

《數字圖像處理與計算機視覺:visual C++與Matlab實現》章掙
————————————————
版權聲明:本文為CSDN博主「light_lj」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/light_lj/article/details/26098815

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM