scikit-image ツールを使用して、Matlab の画像処理アルゴリズムを Python に移行しています。また、 graycomatrixを使用してグレーレベル共起行列 ( GLCM ) を計算しています。パラメータが強度画像の最大値よりも小さい場合は問題があります( )。例えば:levels
image.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
それとも私の考えが間違っていますか? 前もって感謝します。