4

scikit-image ツールを使用して、Matlab の画像処理アルゴリズムを Python に移行しています。また、 graycomatrixを使用してグレーレベル共起行列 ( GLCM ) を計算しています。パラメータが強度画像の最大値よりも小さい場合は問題があります( )。例えば:levelsimage.max()

import numpy as np
from skimage.feature import greycomatrix
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, distances = [1], angles = [0], levels = 4, symmetric=True)

出力は次のとおりです。

glcm = result[:,:,0,0]

array([[4, 2, 1, 0],
   [2, 4, 0, 0],
   [1, 0, 6, 1],
   [0, 0, 1, 2]], dtype=uint32)

これは正しい、4x4 マトリックスです。しかし、 の場合levels=3、GLCM を計算できず、エラーは次のとおりです。

result = greycomatrix(image, distances = [1], angles = [0], levels = 3, symmetric=True)

Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/python3.4/site-packages/skimage/feature/texture.py", line 97, in greycomatrix
assert image.max() < levels
AssertionError

そしてもちろん...エラーが発生しますが、レベルが 未満の GLCM (3x3 マトリックス) を計算できるはずですimage.max()。たとえば、次の場合:

result = greycomatrix(image, distances = [1], angles = [0], levels = 3, symmetric=True)

次の GLCM を取得する必要があります (Matlab で実行できます)。

4     3     0
3    10     1
0     1     2

巨大な画像を扱うときは、計算時間を短縮するために GLCM のレベルを下げます。に何か問題がありますか、greycomatrixそれとも私の考えが間違っていますか? 前もって感謝します。

4

1 に答える 1