我很难理解skimage中anglegreycomatrix参数。在documentation中提到的为右上方和右上方像素计算GLCM的示例中,它们提到了4个角度。他们得到了4个GLCM。

>>> image = np.array([[0, 0, 1, 1],
...                   [0, 0, 1, 1],
...                   [0, 2, 2, 2],
...                   [2, 2, 3, 3]], dtype=np.uint8)
>>> result = greycomatrix(image, [1], [0, np.pi/4, np.pi/2, 3*np.pi/4], levels=4)


左右像素的参数应该是什么?

最佳答案

documentation of greycomatrix(重点是我的)中包含的示例中有一个错字:


  例子
  
  计算2个GLCM:一个用于向右偏移1个像素的GLCM,一个用于向上偏移1个像素的GLCM。

>>> image = np.array([[0, 0, 1, 1],
...                   [0, 0, 1, 1],
...                   [0, 2, 2, 2],
...                   [2, 2, 3, 3]], dtype=np.uint8)
>>> result = greycomatrix(image, [1], [0, np.pi/4, np.pi/2, 3*np.pi/4],
...                       levels=4)



实际上,result实际上包含四个不同的GLCM,而不是两个。这四个矩阵对应于一个距离和四个角度的可能组合。要计算与“向右1像素偏移”相对应的GLCM,距离和角度值应分别为10

result = greycomatrix(image, distances=[1], angles=[0], levels=4)


而要计算与“向上1像素偏移”相对应的GLCM,参数应为1np.pi/2

result = greycomatrix(image, distances=[1], angles=[np.pi/2], levels=4)


在示例中,distances=[1]angles=[0, np.pi/4, np.pi/2, 3*np.pi/4]。要选择特定的GLCM,必须为anglesdistances指定适当的索引。因此,右侧GLCM的1像素为result[:, :, 0, 0],而上方GLCM的1像素为result[:, :, 0, 2]

最后,如果要计算“向下1像素偏移” GLCM(↓),则只需转置“向上1像素偏移” GLCM(↑)。重要的是要注意,在大多数情况下,两个GLCM都非常相似。实际上,通过在对symmetric的调用中将参数True设置为greycomatrix,可以忽略共现强度的顺序。这样,greycomatrix返回的GLCM都是对称的。

关于python - 如何在skimage/Python中提及邻居的方向来计算glcm?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37761411/

10-12 21:09