0

3D配列を取り、それを座標系に変換することは可能ですか? 私の配列は 0 と 1 で構成されています。値が 1 の場合、xyz 座標を取得します。最後に、すべての座標を csv ファイルに出力したいと思います。

import nibabel as nib

coord = []
img = nib.load('test.nii').get_fdata().astype(int)

test.nii 配列:

[[[0 0 0 ... 0 0 0]
  [0 0 0 ... 0 0 0]
  [0 0 1 ... 1 1 0]
  ...
  [0 0 0 ... 0 0 0]
  [0 0 0 ... 1 1 1]
  [0 1 0 ... 0 0 0]]

 [[1 0 0 ... 0 0 0]
  [0 0 1 ... 0 0 0]
  [0 1 0 ... 0 0 0]
  ...
  [0 1 0 ... 0 0 0]
  [0 1 0 ... 0 0 0]
  [0 0 0 ... 1 0 0]]

 [[0 0 0 ... 0 0 0]
  [0 0 0 ... 0 1 0]
  [0 0 0 ... 0 0 0]
  ...
  [0 0 0 ... 0 0 0]
  [0 0 0 ... 0 0 0]
  [0 1 0 ... 0 1 1]]

 ...

 [[0 0 0 ... 1 0 0]
  [0 0 1 ... 0 0 0]
  [0 0 1 ... 0 0 0]
  ...
  [0 0 0 ... 1 0 0]
  [0 0 0 ... 1 0 0]
  [0 0 0 ... 1 0 0]]

 [[0 0 0 ... 0 0 0]
  [0 0 0 ... 0 0 0]
  [0 0 0 ... 0 0 1]
  ...
  [0 1 0 ... 0 0 0]
  [1 0 0 ... 0 0 0]
  [1 0 0 ... 0 0 0]]

 [[0 0 0 ... 0 0 0]
  [0 0 0 ... 0 0 0]
  [0 0 0 ... 0 0 0]
  ...
  [0 0 0 ... 0 0 0]
  [0 0 0 ... 0 1 0]
  [0 1 0 ... 0 0 0]]]
4

2 に答える 2

1

それは必ずしも最善の解決策ではないかもしれませんが、シンプルにしましょう (フレームワークがそれをしてくれたら素晴らしいことですが...まあ):

data = [[[0, 0, 0, 0, 0, 0],
         [0, 0, 0, 0, 0, 0],
         [0, 0, 1, 1, 1, 0],
         [0, 0, 0, 0, 0, 0],
         [0, 0, 0, 1, 1, 1],
         [0, 1, 0, 0, 0, 0]],
        [[1, 0, 0, 0, 0, 0],
         [0, 0, 1, 0, 0, 0],
         [0, 1, 0, 0, 0, 0],
         [0, 1, 0, 0, 0, 0],
         [0, 1, 0, 0, 0, 0],
         [0, 0, 0, 1, 0, 0]]]

for x in range(len(data)):
    for y in range(len(data[x])):
        for z in range(len(data[x][y])):
            if data[x][y][z] == 1:
                print(f"{x} {y} {z}")

収量:

0 2 2
0 2 3
0 2 4
0 4 3
0 4 4
0 4 5
0 5 1
1 0 0
1 1 2
1 2 1
1 3 1
1 4 1
1 5 3
于 2020-08-13T05:59:08.473 に答える