0

3D 画像を順番にインポートし、識別ラベルを各フォルダーにリンクしようとしています。現在、dicom ファイルに対してこれを行うコードがありますが、.tiff 画像ファイルも使用しようとしています。

data_dir = "\\tiff\\"
patients =  os.listdir(data_dir)
labels_df = pd.read_csv('\\tiff_labels.csv', index_col = 0)
IMG_PX_SIZE = 50
HM_SLICES = 20
def process_data(patient, labels_df, image_px_size = 50, hm_slices = 20, visualize = False):
    label = labels_df.at[patient, 'label']
    path = data_dir + patient
    slices = [pydicom.read_file(path + '/' + s, force = True) for s in os.listdir(path)]
    slices.sort(key = lambda x: int(x.ImagePositionPatient[2]))

9 行目と 10 行目を次のように変更してみました。

slices = [cv2.imread(path + '/' + s) for s in os.listdir(path)]
slices.sort()

私が見つけた問題は 10 行目です: key = lambda x: int(x.ImagePositionPatient[2])。ImagePositionPatient はディコム専用のものであり、別の方法で画像を並べ替える方法を見つけることができません。

エラーが発生します:

Traceback (most recent call last):
  File "preprocessing_data.py", line 83, in <module>
    image_data, label = process_data(patient, labels_df, image_px_size = IMG_PX_SIZE, hm_slices = HM_SLICES)
  File "preprocessing_data.py", line 28, in process_data
    slices.sort()
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
4

2 に答える 2