Pythonとscipyを使用して、非常に単純なセグメンテーションを実行しようとしています。私がここでやろうとしているのは、(numpy ndarray の) ラベル付けと画像化を行ってから、いくつかのパッチのサイズを計算し、それらの最大のものを削除してから、再度ラベル付けすることです。
ただし、最後ndimage.label( fin )
にエラーが発生します
RunTimeError: data type not supported
エラーの原因は何ですか?配列 a と配列 fin はどちらも int32 の同じデータ型です。また、ラベル関数は構造要素をデフォルトにし、定義されていないのと同じタイプに出力する必要があります。これは本当に私を悩ませています。
私が実行している小さなテストコードは次のとおりです。
import numpy as np
from scipy import ndimage
def main():
a = np.array([ [1, 1, 1, 0, 0, 0],
[1, 1, 1, 0, 0, 0],
[1, 0, 0, 0, 1, 0],
[0, 0, 0, 1, 1, 0],
[0, 0, 0, 0, 1, 1],
[1, 0, 0, 0, 1, 0] ])
labeled_array, numpatches = ndimage.label(a)
sizes = ndimage.sum(a,labeled_array,range(1,numpatches+1))
mp = np.where(sizes == sizes.max())[0]+1
max_index = np.zeros(numpatches + 1, np.uint8)
max_index[mp] = 1
max_feature = max_index[labeled_array]
fin = max_feature^a
lArr, npa = ndimage.label( fin )
return
main()