(强调我的)文档中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都是对称的。True
greycomatrix
greycomatrix