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

又叫作灰度共現矩陣編程

Prerequisites

概念

計算方式

對於精度要求高且紋理細密的紋理分佈,咱們取像素間距爲d=1d=1,如下是方向的說明:markdown

咱們來看,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以及像素間空間位置關係δδ肯定,便可生成灰度共生矩陣。ui

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

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

 


這裏寫圖片描述 

 

 


這裏寫圖片描述 

 

matlab

matlab相關工具箱函數

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

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

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

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

  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

相關文章
相關標籤/搜索