graycomatrix函數產生灰階共生矩陣

來源:互聯網
上載者:User

灰階共生矩陣的接觸知識,http://www.cnblogs.com/tiandsp/archive/2013/03/23/2977673.html

初學者再看如此多的公式,可能看也看不懂。那就簡單的辦法就是直接看圖(matlab help檔案中的):

剛開始看的人,肯定也摸不著頭腦。

我這裡解釋下兩邊矩陣的含義:

(1)左邊的矩陣,你可以想成某映像的像素(當然不是rgb的,可以認為是灰階圖)

(2)右邊的矩陣(定義為GLCM):是產生的灰階共生矩陣。關於維數:這裡是8*8的,但實際情況中,你可以是2*2,4*4,16*16等等(在matlab中,如果你是二值圖形,維數預設為2,如果是灰階圖,預設為8)。


    現在再講講GLCM裡面數位含義,如GLCM(1,1)就是從左往右水平的像素是分別都是1,1的次數。從左邊的矩陣可以看出,只有一次,同理GLCM(1,2)=2,因為有從左往右的像素分別是1,2的情況有兩種,再比如GLCM(2,2)=0,因為沒有從左往右像素分別是2,2的情況。(這裡的從左往右是相鄰的)。

   我相信在這裡,初學者都明白了,GLCM的如何產生的吧。



(1)下面講講關於matlab內建的graycomartix函數吧(原理其實很簡單,你可以自己寫個函數):

我上面講的例子,其實可以只用一個函數就可以完成。

gray = [1 1 5 6 8        2 3 5 7 1        4 5 7 1 2        8 5 1 2 5];GLCM = graycomatrix(gray,'GrayLimits',[]);


(注意,必須用'GrayLimtis',[]),不然你得到的GLCM是很奇葩的


GLSM =
     0     0     0     0     0     0     0     0
     0     0     0     0     0     0     0     0
     0     0     0     0     0     0     0     0
     0     0     0     0     0     0     0     0
     0     0     0     0     0     0     0     0
     0     0     0     0     0     0     0     0
     0     0     0     0     0     0     0     0
     0     0     0     0     0     0     0    16
原因是,GrayLimits參數的預設值是改種類型的範圍,如double的範圍[0 1]   int16的範圍[-32768 32767]


(2)另外,關於graycomatrix函數,你可以寫成

GLCM = graycomatrix(gray,'G',[]);

因為不論參數不論是‘G’還是‘Graycomatrix’還是‘g’都可以被識別的。


(3)最後不要混淆,GLCM的矩陣大小和你原始的gray是不一樣的。(GLCM的大小隻和參數‘graylimits’有關!)

[GLCM, SI] = graycomatrix(gray,'G',[]);  這裡的得到的矩陣SI才是和gray矩陣一樣的。

SI的解釋:對矩陣gray的像素進行分類,如果你設的參數“NumLvels”是8,那麼灰階共生矩陣就將gray線性分類成8類,對應的類的數值(1-8)就是SI矩陣。


for example:

gray = [ 1 1 5 6 8 8; 2 3 5 7 0 2; 0 2 3 5 6 7];[glcm,SI] = graycomatrix(gray,'NumLevels',9,'G',[])

得到的結果:

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


gray就是3*6的矩陣,SI就是gray對應的分類,因為參數“NumLevels”設為9,所以SI的數值就是1-9,大小和gray一樣。而glcm和和前面講的一樣!





關於Graycomatrix函數的其他參數:
NumLevels:(numeric)數值的預設值是8 , (binary)預設是是2,我們上面的例子就是預設值為8,所以產生的GLSM是8*8的矩陣。
OffSet:表明像素對比的順序。     [0 D]:表示從左往右像素距離為D(如果D=1,就是相鄰)
symmetric:預設值為false,比如從左往右就是從左往右,而當該參數設定為true是,從左往右和從右往左都被算上的。
更多的參數表示可以看help檔案吧。這裡貼個:


聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.