1

我在理解skimage 中的angle参数时遇到了一些麻烦。greycomatrix文档中提到的为向右和向上的像素计算 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)

向右和向下像素的参数应该是什么?

4

1 回答 1

1

(强调我的)文档中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 ,距离和角度值应分别为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,必须为angles和指定适当的索引distances。因此,右侧 1 像素的 GLCM 为result[:, :, 0, 0],向上 1 像素的 GLCM 为result[:, :, 0, 2]

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

于 2017-03-15T16:50:07.557 回答