(强调我的)文档中greycomatrix包含的示例中有一个错字:
例子
计算2 个 GLCM:一个用于向右偏移 1 个像素,一个用于向上偏移 1 个像素。
>>> 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 ,距离和角度值应分别为1和0:
result = greycomatrix(image, distances=[1], angles=[0], levels=4)
而要计算对应于“向上 1 像素偏移”的 GLCM ,参数应该是1和np.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,必须为angles和指定适当的索引distances。因此,右侧 1 像素的 GLCM 为result[:, :, 0, 0],向上 1 像素的 GLCM 为result[:, :, 0, 2]。
最后,如果您想计算“向下 1 像素偏移” GLCM (↓),您只需转置“向上 1 像素偏移” GLCM (↑)。重要的是要注意,在大多数情况下,两个 GLCM 非常相似。事实上,您可以通过在调用中将参数设置symmetric为来忽略同时出现的强度的顺序。通过这样做,所有返回的 GLCM都是对称的。Truegreycomatrixgreycomatrix