3D Slicer
アフィリエイト広告・PR

3D Slicerのカラーバーに独自のルックアップテーブルを適用させる方法(LUTの作り方)

小倉 淳
記事内に商品プロモーションを含む場合があります

こんにちは、個人事業OguLinks代表の小倉(@jun_ogulinks)です。

3D Slicerにはプリセットとして結構多くのカラーバーが用意されています。

以前、私が書いた以下の記事(「3D Slicerの使い方 基本の基 データインポートからカラーバーの出し方まで」)でカラーバーの出し方については解説をしました。

関連記事
3D Slicerの使い方 基本の基 データインポートからカラーバーの出し方まで
3D Slicerの使い方 基本の基 データインポートからカラーバーの出し方まで

しかし、自分が使いたいと思うカラーバーの色と完全に一致するものが必ずあるという訳ではありません。

これは3D Slicerに限らない話です。

今回は3D Slicerで使いたいカラーバーの色の種類(ルックアップテーブル)がなかった時の対処法の紹介です。

この記事では以下のことが分かるようになっています。

この記事でわかること
  • 3D Slicerでカラーバーのルックアップテーブル(LUT)を作る方法
  • LUT作製方法の種類
  • LUTの保存形式(2種類)
  • LUTファイルの読み込み
スポンサーリンク

3D Slicerのカラーバーを編集するためのcolorモジュールとは

3D SlicerにはColorモジュールと呼ばれる標準実装されたモジュールがあります。

Colorモジュールは下図の手順にそって Modules: > Informatics > Colors とクリックすることで開くことができます。

(Colorモジュールの起動方法)

このColorモジュールを使ってLUTを作製していくわけですが、編集に関していくつかルール的なものがありますので、それを理解しておく必要があります(難しくはありません)。

私もとあるときに「どうやって独自LUTを作るのだろう?」と思って調べたことがあるのですが、まず最初に以下の情報が目に留まりました。

これは3D Slicerのコミュニティに投稿されていたものです。

Andras Lassoさんの回答を以下に引用します。

Edit color table: Go to colors module, choose a color node that you would like to modify, click “Copy” button to create an editable copy (the default color nodes are read-only). If you choose a “color table” type of node (this is the most common) then you get hundreds of predefined colors and you can modify each by double-clicking the color swatch in the color column, which can be tedious if you want to make large changes. It may be more convenient to modify “Continuous” color node, such as “RedGreenBlue” because you can specify a few colors at arbitrary levels and the colors are interpolated between them.

要約すると以下のようになります。

Points!
  • Colorモジュールで既存のLUTをコピーして編集する。
  • 既存のLUTは読み取り専用で編集不可。
  • LUTタイプには「カラーテーブル」と「Continuous」の2種類がある。
  • 「カラーテーブル」はカラー列の色見本をダブルクリックすることで変更可能。ただし、大きな変更を加えたい場合は手間がかかる。
  • 「Continuous」はいくつかの色を任意のレベルで指定でき、それらの間で色が補間されるため、大きな変更も比較的簡単にできる。

下2つ以外は文章だけで理解できますが、「カラーテーブル」と「Continuous」の説明については操作画面を見ないと理解が難しいかと思います。

のちほどちゃんと理解できるように解説をします。

また、3D Slicerのカラーに関しては公式マニュアルでも記載があります。

今回はこの公式マニュアルにある記載に基づいて解説していきます。

ちなみにですが、上記の「カラーテーブル」は公式マニュアルでは「Discrete table」という名称になっています。

同じものですので混乱しないようにしましょう。

「Discrete table」と「Continuous」の違い

(LUT選択画面でのポップアップ表示)

Colorsをクリックすると上図のようにLUT一覧が表示されますが、マウスカーソルを動かさないでおくとポップアップが表示されます。

このポップアップに表示される文字列には大きく分けて以下の2種類があります。

  • ColorTable → 「Discrete table」のこと
  • ProceduralColor → 「Continuous」のこと

ProceduralColorは ‘PET’ や ‘FreeSurfer’ などの接頭辞が付くものがあり、バリエーションがあるようです(ただし、仕様の違いはない)。

そして、このProceduralColorが ‘Continuous’ に相当するものです。

次にDiscrete tableとContinuousの違いを解説します。

Discrete table

Discrete tableはカラーの数とスカラーレンジを決めて、それぞれのインデックスでカラーを定義していくというタイプのLUTになります。

一般的なLUTの編集方法なので比較的なじみやすい気がします(操作手順は後述)。

ただし、カラーの数を仮に255とすると、255個全てを個別に編集しなければならないので大きな変更を加えたい場合に面倒です。

3D SlicerにプリセットされているLUTでは、このタイプが非常に多いため、使いたいものもDiscrete tableタイプの方で見つかりやすいかもしれません。

少し変更を加えたいときにはこちらのタイプが便利かと思われます。

Continuous

Continuousは複数のポイントを追加し、そのポイントの部分に関して位置や色などの設定を行い、LUTを作製するタイプのものになります。

ポイント間の色については自動補間されるため、Discrete tableに比べて大きな変更を加えたい場合でも、少ない手間でLUTを作製することができます。

余程特殊なLUTでなければ通常はこちらのContinuousタイプを使って作製するのが良いかと思います。

既存LUTをコピーして新しいLUTを作製する

(既存LUTは編集できないため、コピーして使います)

All built-in lookup tables are read-only to ensure consistency when using these colors. 

これらの色を使用する際の一貫性を確保するため、すべての内蔵ルックアップテーブルは読み取り専用です。(DeepL翻訳まま)

公式マニュアルでも触れられていますが、プリセットされているLUTは編集ができませんので注意しましょう。

自分が作製したいLUTに最も近いLUTをまずは探して、上図にあるようにコピーしてから編集作業を行います。

コピーボタンをクリックすると名前を決めるように言われます。

ここで決めた名前がLUT一覧に表示されるので、あとから見てどのようなLUTなのかわかる名前にしておきましょう。

(コピーしたものは既存リストとは別に表示される)

コピーして作製したLUTは既存のLUT一覧ではなく、「User Generated」という中に表示されます。

複数コピーした場合はこの中から編集したいLUTを選択します。

では次にDiscrete tableとContinuousタイプそれぞれの編集手順について解説します。

Discrete tableタイプのLUT作製方法

(ColorモジュールのDiscrete tableタイプLUT編集画面)

上図を見てもらえばわかるかと思いますが、手順は主に以下の3つです。

  1. レンジの指定
  2. レンジ内の分割数を指定
  3. 分割数分の色とラベルと透過率の設定

①のレンジの指定では例えば「0を中心に-10から10までにしたい」といったことも可能です。

もしも、自分の設定したいレンジを入力できない場合は、下限と上限の設定をする必要がありますので注意してください(上図参照)。

②のレンジ内の分割数は多ければ多いほど細かく設定できますが、その分、手間が増えます。

少ないと手間が減る分、解像度は悪くなるでしょう。

多過ぎず少な過ぎずが丁度良いですが、256程度を目安にしておくのが良いかもしれません。

Color列はダブルクリックすると色を選択するウィンドウが開きます。

Label列もダブルクリックすることで変更が可能です(ラベルに記述ルールはないので、自由にメモを書くことができます)。

opacityは色の透明度で、0~1の間の数値を指定します。

0だと完全に透明になってしまうので、基本的には1で構わないと思います。

‘Hide empty Colors’ というチェック項目がありますが、公式マニュアルには以下のように説明されています。

When checked, hide the unnamed color entries in the list below.

チェックすると、下のリストにある名前のない色の項目が非表示になります。(DeepL翻訳まま)

私自身、あまりよく理解できていませんが、どうやらラベルが空のものは非表示になってしまうということなのだと思われます。

正直あまり使わない機能かと思うので検証もしていませんが、間引きが必要な方は試してみてください。

Discrete tableタイプのLUT作製方法については以上です。

ContinuousタイプのLUT作製方法

(ColorモジュールのContinuousタイプLUT編集画面)

さて、こちらのタイプは非常に簡単です。

恐らくLUTを新規で作製する場合は、こちらを使うことが多いかもしれませんね。

手順としては以下のようになります。

  1. (必要に応じて)ポイントの追加
    • カラーバーの何もないところをクリックするとポイントを追加できます。
    • ポイントの追加はどのタイミングでもOK。
  2. ポイントの位置を調整
    • ポイントの選択は「Point:」と書かれている部分のスピンボックスで変更することができます。
    • またはカラーバー上の〇をクリックしても選択可能です(ただし、間違えてポイントを追加してしまうことがあるので注意)。
    • 選択したポイントは「X:」の数値を変えることで位置を変えることができます(〇をマウスで動かして位置決めすることも可能)。
  3. 各ポイントの色を設定
    • 色を変更したいポイントを選択した状態で「Point:」の右横にあるColor boxアイコンをクリックして色選択ウィンドウを開きます。
  4. ポイント間の色の保管方法を「M:」と「S:」で設定する。
    • 各ポイント間で個別に設定が必要。
    • ポイントが多いほど手間がかかるので注意。

④については補足が必要かと思いますので解説します。

そもそも④の項目はデフォルトでは表示されていませんので、上図にある右側の赤枠内にある「 」ボタンをクリックすると「M:」と「S:」が出てきます。

項目「M:」→ Position of the midpoint

(「M:」の値を変更したときのカラーバーの見た目の変化)

上図は項目「M:」を0.2から0.8まで変化させたときにカラーバーの見た目がどうなるか確認してみたものです。

通常はデフォルトの0.5を使っておけば問題ないと思いますが、隣のポイントと非線形な変化を表したい場合には都合が良さそうです。

M = 0.5以外を使うことは稀かもしれませんが、必要に応じて設定しましょう。

項目「S:」→ Sharpness of the midpoint

(「S:」の値を変更したときのカラーバーの見た目の変化)

上図は項目「S:」を0.0から1.0まで変化させたときにカラーバーの見た目がどうなるか確認してみたものです。

こちらの場合は隣り合う色の境界をどのくらいはっきりさせるかという設定になります。

「M:」と同様に非線形の変化を表したいときに便利そうです。

変化の仕方はシグモイドっぽい形だと思いますので、イメージも付きやすいですね。

これも通常はデフォルトの0.00で問題ないかと思います。

必要な方は適宜変更して使いましょう。

ContinuousタイプのLUT作製方法については以上です。

LUTの保存方法とファイル形式

(LUTタイプによって保存形式が異なる)

作製したLUTの保存は他のファイルと同様にsaveボタンから行います。

LUTのファイルフォーマットは上図にもあるように、以下の2種類になります。

  • Continuousタイプ → .txt
  • Discrete tableタイプ → .ctbl(.txtも可?)

LUTタイプによって保存形式が異なりますので注意しましょう。

Discrete tableタイプについては.ctblがデフォルトのようですが、.txtも選択できるようです(動作検証はしていません)。

LUTの保存形式についての詳細はこちらの公式マニュアルに記載があります。

どちらの保存形式もプレーンテキストなのでメモ帳などのアプリで開くことができます。

‘.ctbl’の中身

Discrete tableタイプの保存形式である.ctblの中身はどうなっているのでしょうか。

公式マニュアルにある例を以下に示します。

# Color table file C:/Users/andra/OneDrive/Projects/SlicerTesting2022/20220109-ColorLegend/Segmentation-label_ColorTable.ctbl
# 4 values
0 Background 0 0 0 0
1 artery 216 101 79 255
2 bone 241 214 145 255
3 connective_tissue 111 184 210 255

1行目にファイルパス、2行目に分割数、3行目以降に分割した数だけ行があります。

3行目以降の1列目はインデックス、2列目はラベル名、3列目以降は順番にRed, Green, Blue, Opacityを0~255までの256段階の整数であらわしたものになります。

各値の間は半角スペースで区切られています。

このフォーマットに沿っていれば、3D Slicerを使わなくてもメモ帳などのアプリでLUTファイルを作ることもできそうですね。

‘.txt’の中身

続いて、Continuousタイプの保存形式である.txtの中身についてです。

公式マニュアルにある例を以下に示します。

# Color procedural file /path/to/file.txt
# 5 points
# position R G B
0 0 0 0
63 0 0.501961 0.490196
128 0.501961 0 1
192 1 0.501961 0
255 1 1 1

1行目にファイルパス、2行目にポイント数、3行目に列ラベル、4行目以降に列ラベルに対応した数値が入力されています。

こちらも各値の間は半角スペースで区切られています。

.ctblとは違い、opacityがない点とRGBの指定の仕方が百分率になっている点が異なります。

.ctblと同様、このフォーマットに沿っていれば、3D Slicerを使わなくてもメモ帳などのアプリでLUTファイルを作ることができますね。

独自LUTの読み込み方法

LUTファイルはドラッグ&ドロップで読み込むことができます。

読み込むときにDescriptionがColorになっていることを確認してOKをクリックします。

読み込んだLUTは一覧の中の「File」に表示されます。

あとはいつもと同じように利用すればOKです。

以上でカラーバーに独自のLUTを設定することができるようになります。

これができれば他のPCにインストールされている3D Slicerでも同じLUTが使えるようになりますので便利ですね。

まとめ

今回は3D Slicerのカラーバーに独自のLUTを適用させる方法についてみていきました。

それほど難しい操作はないので困ることはないかと思いますが、頻繁に行う操作でもないので忘れがちになるかもしれません。

その時はこの記事を参照して思い出していただければ幸いです。

ご相談受付中

Pythonのプログラム・GUIアプリケーションを作って仕事の効率化をお手伝いします!

科研費等での支払いにも対応しており、国立・私立大学の先生から複数の受注実績があります。

対応可能かどうかも含めてお気軽に問い合わせページからご相談ください。

OguLInks公式サイトのトップページに簡単な事例紹介もありますのでご参照ください。

【公式サイト】
OguLinks公式サイト
OguLinks公式サイト

Twitterでお得情報をゲットしたい方はフォローいただけると幸いです。

この記事が役に立ったという方、少額の御寄附をいただけますと小倉のモチベーションアップにつながります。

よろしければ以下より寄付いただけますと幸いですm(_ _)m

ここから先は限定公開です

すでに購入済みの方はこちら

ABOUT ME
小倉 淳
小倉 淳
テクニカルフェロー / 個人事業主
国立研究機関(医療系)の非常勤研究職員であり、大学の保健医療学部で非常勤講師として毎年60コマ以上の講義・演習を担当。  

自身のプログラミング技術を活かすため、個人事業OguLinksを立ち上げ、教育・研究機関の研究者を対象にPythonプログラムの開発等を請け負っています。  

臨床検査技師と精神保健福祉士の有資格者。  

経歴等(→ResearchMap)
スポンサーリンク

購読には会員登録が必要です

「半角英数字」と「大文字1個以上」を含む、8文字以上

会員登録には 利用規約/特定商取引法に基づく表記 への同意が必要です。

すでに会員の方はこちら

ログインして記事を読む

メールアドレス
パスワード
パスワードを忘れた方
新規会員登録はこちら

パスワード再設定

パスワードを再設定します。入力したメールアドレスに再設定用のURLをお送りしますので、パスワードの再設定を行なってください。
キャンセル
記事URLをコピーしました