2

画像からいくつかの特徴を抽出しようとしていますが、抽出された各特徴は非常に小さいです。より大きな特徴を抽出する最も簡単な方法は、より大きな構造化要素を使用することのようですが、次のコードはITER > 1.

from scipy import ndimage,misc
lena=misc.lena().astype(float64)
lena/=ndimage.maximum(lena)
lena=lena>0.54# convert to binary image
       #   =====================  
ITER=1 # || FAILS WHEN ITER > 1 ||
       #   =====================
struct=ndimage.generate_binary_structure(2,1)
struct=ndimage.iterate_structure(struct,ITER)
lena_label,n =ndimage.label(lena,struct)
slices=ndimage.find_objects(lena_label)
images=[lena[sl] for sl in slices]
imshow(images[0])

.

RuntimeError: structure dimensions must be equal to 3
4

1 に答える 1

3

関数のパラメーターstructurendimage.label、入力の接続性を判別するために使用されます。入力を長方形の行列として表す場合、この接続は通常、点の周りの4つまたは8つの隣接点のいずれかを考慮しますp。Scipyはこの規則に従い、受け入れられる構造をそのような場合に制限します。したがって3x3、関数に渡されるよりも大きいものがある場合、エラーが発生します。

本当にそのようなことをしたいのであれば、最初に、記述しようとしている接続を非常に明確に定義する必要があります。次に、それを実装する必要があります。より簡単な方法は、最初に入力を拡張してから、ラベルを付けることです。structureこれにより、より大きなパラメータでラベル付けされるより大きな機能が効果的に提供されます。

于 2013-02-21T00:45:04.730 に答える