圖像的灰度共生矩陣

http://blog.csdn.net/weiyuweizhi/article/details/5724050

Gray-level co-occurrence matrix from an image

圖像的灰度共生矩陣

灰度共生矩陣是像素距離和角度的矩陣函數,它通過計算圖像中一定距離和一定方向的兩點灰度之間的相關性,來反映圖像在方向、間隔、變化幅度及快慢上的綜合信息。

使用方法:
glcm = graycomatrix(I)
glcms = graycomatrix(I,param1,val1,param2,val2,...)
[glcms,SI] = graycomatrix(...)

描述:
glcms = graycomatrix(I) 產生圖像I的灰度共生矩陣GLCM。它是通過計算兩灰度值在圖像I中水平相鄰的次數而得到的 (也不必是水平相鄰的次數,這一參數是可調的,可能通過Offsets來進行調整,比如[0 D]代表是水平方向,[-D D]代表是右上角45度方向,[-D 0]代表是豎直方向,即90度方向,而[-D -D]則代表是左上角,即135度方向),GLCM中的每一個元素(i,j)代表灰度i與灰度j在圖像中水平相鄰的次數。

因爲動態地求取圖像的GLCM區間代價過高,我們便首先將灰度值轉換到I的灰度區間裏。如果I是一個二值圖像,那麼灰度共生矩陣就將圖像轉換到兩級。如果I是一個灰度圖像, 那將轉換到8級。灰度的級數決定了GLCM的大小尺寸。你可以通過設定參數“NumLevels”來指定灰度的級數,還可以通過設置“GrayLimits"參數來設置灰度共生矩陣的轉換方式。

下圖顯示瞭如何求解灰度共生矩陣,以(1,1)點爲例,GLCM(1,1)值爲1說明只有一對灰度爲1的像素水平相鄰。GLCM(1,2)值爲2,是因爲有兩對灰度爲1和2的像素水平相鄰。

 

 

glcms = graycomatrix(I,param1,val1,param2,val2,...) 返回一個或多個灰度灰度共生矩陣,根據指定的參數。參數可以很簡短,並且對大小寫不敏感。

參數

'GrayLimits'  是兩個元素的向量,表示圖像中的灰度映射的範圍,如果其設爲[],灰度共生矩陣將使用圖像I的最小及最大灰度值作爲GrayLimits

'NumLevels'    一個整數,代表是將圖像中的灰度歸一範圍。舉例來說,如果NumLevels爲8,意思就是將圖像I的灰度映射到1到8之間,它也決定了灰度共生矩陣的大小

'Offset'   上面有解釋,是一個p*2的整數矩陣,D代表是當前像素與鄰居的距離,通過設置D值,即可設置角度
Angle        Offset
  0              [0 D]
 45             [-D D]
 90             [-D 0]
135            [-D -D]

示例:

計算灰度共生矩陣,並且返回縮放後的圖像,SI
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',[])

計算灰度圖像的灰度共生矩陣
I = imread('circuit.tif');
glcm = graycomatrix(I,'Offset',[2 0]);

灰度共生矩陣的特徵:

角二階矩(Angular Second Moment, ASM)
ASM=sum(p(i,j).^2)    p(i,j)指歸一後的灰度共生矩陣
角二階矩是圖像灰度分佈均勻程度和紋理粗細的一個度量,當圖像紋理絞細緻、灰度分佈均勻時,能量值較大,反之,較小。

熵(Entropy, ENT)
ENT=sum(p(i,j)*(-ln(p(i,j)))    
是描述圖像具有的信息量的度量,表明圖像的複雜程序,當複雜程序高時,熵值較大,反之則較小。

反差分矩陣(Inverse Differential Moment, IDM)
IDM=sum(p(i,j)/(1+(i-j)^2))
反映了紋理的清晰程度和規則程度,紋理清晰、規律性較強、易於描述的,值較大;雜亂無章的,難於描述的,值較小。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章