graycomatrix函数生成灰度共生矩阵

灰度共生矩阵的接触知识,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文件吧。这里贴个截图:



评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值