1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

3D Slicerでマルチセグメンテーションの色がずれる問題を解決する

1
Last updated at Posted at 2026-04-15

概要

深層学習でマルチクラスのセグメンテーションを行い、出力結果をNRRD形式で保存した際、途中のラベルが欠損していると(例:ラベル1, 2, 4が存在し、3が存在しない)、各ラベルで設定した色が3D Slicer上で番号の小さい方に詰められて表示され、色とラベルが対応しないという問題がありました。


本記事では、Pythonのpynrrdライブラリを用いて、メタデータにセグメント情報を明示的に付与することで色ずれが解消される ことが分かりました。

以下の情報は、私が使用しているデータ(.nrrd)内に含まれていたmeta dataです。
3d Slicerで表示するには、これらだけでは不十分だということがわかりました。

('type', データ型),
('dimension', 次元数),
('space', 対象の向き),
('sizes', サイズ),
('space directions',解像度やスライス厚),
('kinds', 空間データ),
('endian', バイト順序),
('encoding', 圧縮データなど),
('space origin', 原点)

改善策

pynrrdを使用する場合、以下のように項目を追加することができます。

meta["Segment0_Color"] = '0.100 0.100 0.100'

モデルの出力結果を確認するというタスク内では、以下の設定が最低限必要であると考えました。

('Segment0_ID', '1')
# 無い場合, 途中のラベルが欠損していると色が詰まって表示されてしまう.

('Segment0_LabelValue', '1')
# 無い場合, 各ラベルが同じ色になる.

('Segment0_Layer', '0')
# 無い場合, 表示されるラベルが先頭のみになる. 
# 入力する値は全ラベルで同じにする.

 ('Segment0_Name', 'Segment_1')
 # 3d Slicer上で表示されるラベル名を設定.
 
 ('Segment0_Color', '0.100 0.100 0.100')
# 各ラベルの色を設定. 遊動小数点で入力. 設定しなくてもデフォルト(?)の色で出力される.


上記の結論にたどり着くまで時間を要したので、ここに備忘録として残します。

お疲れ様でした。

--------- 追記 ---------

前処理によるラベル入れ替わりの調査

以下の前処理後にラベルが入れ替わっていないか3dスライサーで直接目視確認しました。

transforms = Compose(
    [
        LoadImaged(keys="label", ensure_channel_first=True, image_only=False),
        SelectItemsd(keys="label"),
        Spacingd(
            keys="label",
            pixdim=(0.34, 0.34, 1.0),
            mode=("nearest"),
        ),
        SaveImaged(
            keys="label",
            output_dir="/home/koto/project/internal-iliac-segmentation/Outputs/check_label/spacing_034",
            output_postfix="transformed_034_f",
            output_ext=".nrrd",
            resample=False,
        ),
    ]
)

結果、入れ替わってはいなかったのですが、二つ注意点を記します。

  • one-hot化は含めない
    one-hot化すると、背景を含む物体ごとにチャネルが分けられてデータが保存されます。
    SaveImagedでかなり容量の大きなデータを保存することになるため、注意です。

  • SaveImagedのresampleはFalse
    resampleは、メタ情報に含まれるアファイン行列の内容に応じてサイズをリサンプリングします。
    spacingがメタ情報を元に計算、更新を行うため不要です。


でした。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?