0

ndimage でラベル付きの特徴を成長させる方法はありますか? 理想的には、構造を使用して成長がどのように発生するかを指定する方法を使用します。scipy.ndimage.label()次のように、n 次元のバイナリ イメージの特徴検出に使用しています。

import numpy as np
from scipy import ndimage

a = np.full((8, 8), 1)
a[2, :] = a[5, :] = 0
a[:, 2] = a[:, 5] = 0

print(a)
>>>>
[[1 1 0 1 1 0 1 1]
 [1 1 0 1 1 0 1 1]
 [0 0 0 0 0 0 0 0]
 [1 1 0 1 1 0 1 1]
 [1 1 0 1 1 0 1 1]
 [0 0 0 0 0 0 0 0]
 [1 1 0 1 1 0 1 1]
 [1 1 0 1 1 0 1 1]]

s = [
    [0, 1, 0],
    [1, 1, 1],
    [0, 1, 0],
]

labeled, num = ndimage.label(a, structure=s)

print(labeled)
>>>>
[[1 1 0 2 2 0 3 3]
 [1 1 0 2 2 0 3 3]
 [0 0 0 0 0 0 0 0]
 [4 4 0 5 5 0 6 6]
 [4 4 0 5 5 0 6 6]
 [0 0 0 0 0 0 0 0]
 [7 7 0 8 8 0 9 9]
 [7 7 0 8 8 0 9 9]]

ここで、ラベル付きの機能を拡張したいとしましょう2。結果をどうしたいかを説明するための疑似コードと出力を次に示します。

# pseudo code
grown = ndimage.grow(labeled, label=2, structure=s)
print(grown)
[[1 1 2 2 2 2 3 3]
 [1 1 2 2 2 2 3 3]
 [0 0 0 2 2 0 0 0]
 [4 4 0 5 5 0 6 6]
 [4 4 0 5 5 0 6 6]
 [0 0 0 0 0 0 0 0]
 [7 7 0 8 8 0 9 9]
 [7 7 0 8 8 0 9 9]]

どんな助けでも大歓迎です!scipy が達成できるはずのことのように思えますが、私はまだこのモジュールに慣れていないため、やりたいことをドキュメントで検索するのに苦労しています。

4

1 に答える 1