GRAPHY-Nextで学ぶ医用画像処理 第3回

医用画像の基本的な性質(1)— 画素値と階調 | 第3回 | GRAPHY-Nextで学ぶ医用画像処理

· GRAPHY-Next v0.2.8 の画面で解説

本連載「GRAPHY-Nextで学ぶ医用画像処理」の第3回では、医用画像の基本的な性質である「画素値と階調」に焦点を当てます。はじめに大事な前提が一つあります。画素値が何を表すかは、装置(モダリティ)によって違います。 MRIやレントゲン、超音波は信号の強さ、CTはCT値(HU)、SPECTはカウント、PETはカウントやSUVです。同じグレースケールに見えても、中身の意味は別物です。今回はこの中でも輝度を考えやすいCTを例に取ります。CT画像に見慣れたグレーの濃淡は、ファイルに格納されている生の数字とは異なる多段階の変換を経て表現されています。GRAPHY-Next v0.2.8を使い、この変換プロセスと、それが画像の見え方にどう影響するかを、実データを通して深く掘り下げていきましょう。

この回で学ぶこと

  • CT画像のHounsfield Unit(HU)がどのように定義され、医療現場で利用されるか説明できる。
  • DICOMファイルに格納された生データが、Rescale Slope/InterceptによってHU値に変換される仕組みを理解できる。
  • GRAPHY-Next v0.2.8を用いて、ファントム画像の各部位のHU値を測定し、真値との比較からノイズの影響を説明できる。
  • Window Width/Levelの調整が画像の見え方に与える影響を理解し、GRAPHY-Nextのプリセットを使い分けて表示できる。

この記事は GRAPHY-Next v0.2.8 の画面で解説しています。 GRAPHY-Next は研究用途のソフトウェアで、診断には使用できません。

動画で見る

解説

Voxel:みんな、こんにちは!パソコンオタクのVoxelだぜ!

Voxel:このチャンネルではGRAPHY-Nextを使って、実践的な画像処理や解析を紹介してるぜ!

Beyond先生:はじめに一つお伝えします。GRAPHY-Nextは、WindowsとLinuxでの利用を推奨しています。

Voxel:今日のテーマは「医用画像の基本的な性質である画素値と階調」!

Voxel:医用画像って、画面に表示されてるグレースケールと、ファイルに入ってる数字が違うって、まじか!?

Voxel:その変換の仕組みを、Beyond先生と一緒にGRAPHY-Nextで見ていくぞ!

Voxel:面白いと思ったら、ぜひチャンネル登録と高評価、よろしくな!

Beyond先生:Voxel君、今日も元気いっぱいですね。その通り、CT画像に見られるグレーの濃淡は、実は多段階の変換を経て表現されています。

Beyond先生:ここで一つ、大事な前提をお伝えします。画素値が何を表すかは、実は装置によって違うんです。

Voxel:え、そうなんすか?ぜんぶ同じ「画素値」じゃないんだ。まじか。

Beyond先生:MRIやレントゲン、超音波なら信号の強さ。CTならCT値。SPECTならカウント。PETならカウントやSUVです。

Beyond先生:画面ではどれも同じようなグレースケールに見えますが、その数字の意味は装置ごとに別物なんですね。

Beyond先生:今回は、この中でも輝度を考えやすいCTを例にします。CT画像の画素値は、Hounsfield Unit、略してHUで計算されています。

Voxel:ハウンズフィールドユニット?まじか、なんかすごい名前だな。

Beyond先生:このHUは、水のX線吸収率を0 HU、空気のX線吸収率を−1000 HUと定義しています。

Beyond先生:これらを基準に、他の物質の吸収率を相対的に示す尺度なんです。

Voxel:へぇー!じゃあ、画像で見てる数字は、全部、水とか空気を基準にしてるってことっすね!

Beyond先生:はい、その通りです。だから異なるCT装置で撮っても、同じ物質であれば概ね同じHU値を示すので、定量的な評価ができるんですよ。

Voxel:なるほど!でも先生、最初に「ファイルに格納されてる生の数字とは違う」って言ってましたよね?

Beyond先生:よく覚えていましたね。格納の仕方はDICOMでも一通りではないのですが、今回のファントムは符号なし16ビットの整数です。つまり、マイナスの値は取れないんです。

Voxel:え、でも空気は−1000 HUって言ってましたよね?マイナスの値が取れないのに、どうやって−1000 HUになるんすか?

Beyond先生:そこに変換の仕組みがあるんです。DICOMタグに含まれる「Rescale Slope」と「Rescale Intercept」という2つの値を使って、格納値からHU値へと計算されるんですよ。

Beyond先生:式で言うと、「HU = 格納値 × Rescale Slope + Rescale Intercept」となります。

Voxel:おお!なるほど!じゃあ、実際にGRAPHY-Nextでその変換プロセスを見ていくんだな!

Voxel:おっしゃー!GRAPHY-Next起動っと。左のパネルから『PHANTOM_DIGITAL』の『LGN phantom-ct-basic』シリーズを選ぶんだな。

01-phantom-overview

Voxel:お、これか!円柱ファントムが映ったぜ!

Beyond先生:はい、このファントムは、医用画像装置の性能評価や撮影条件の検証に使う、いわば医療用の模擬体ですね。今回のデータは、Visionary Imaging Services, Inc.さんが作ってくださったものですよ。

Voxel:へぇ、模擬体か!じゃあ、このファントムを使ってHU値を測ってみるぜ!

Voxel:ビューア上部のメニューバーから「ROI」をクリックして、「Probe」を選ぶんだな。

02-value-water

Voxel:画面中央の水の部分にプローブを置いて…っと。

Voxel:まじか、ほとんど0 HUだ!先生、これってどういうことなんすか?

Beyond先生:Hounsfield Unit、略してHUは、水のX線吸収率を0 HUと定義しているんです。だから水は0 HUに近くなるんですよ。

Voxel:なるほど!じゃあ他のインサートも見てみるぜ!

03-value-inserts

Voxel:上は空気で−1000 HU、左は脂肪で−98 HU、右は軟部組織で57 HU、下は骨で404 HUか!真値とほぼ同じ!

Beyond先生:ええ、完全に一致はしませんが、±数HUの範囲に収まっていますね。

Beyond先生:CT画像には統計的なノイズが常に伴うため、実測値がわずかにずれるのは正常なんです。

Voxel:なるほどー!ぴったり合わないからって壊れてるわけじゃないんすね!

Voxel:ところで先生、このHU値ってファイルにそのまま入ってるんすか?なんか話が違うような…。

Beyond先生:いい質問ですね。ファイルには「格納値」と呼ばれる生データが保存されていて、そこからHU値へと変換されるステップがあるんでしたね。

Beyond先生:ビューア上部のメニューバーから「Tools」をクリックして、「Tag Viewer」を開いてみてください。そこにヒントがありますよ。

04-rescale-tags

Voxel:お、これか!『Rescale Intercept』が−1024で、『Rescale Slope』が1.0になってる!『Rescale Type』がHU…。

Voxel:まじか、この数字を使って計算してるってことか!?

Beyond先生:その通りです。ファイルに格納された値にRescale Slopeを掛け、Rescale Interceptを足すことでHU値が導き出されます。

Beyond先生:例えば、格納値が0の場合、HU値は0 × 1 + (−1024) = −1024となるんです。

Voxel:へー!じゃあ、GRAPHY-Nextに表示されてる値は、もう計算後のHU値ってことっすね!

Beyond先生:はい、GRAPHY-Nextのビューアは常にモダリティ値、つまりHU値を表示するように設計されています。読み手が単位を取り違えないための大切な設計なんです。

Voxel:なるほど!じゃあ次は、画像の「見え方」の話ですね!階調調整ってやつ!

Beyond先生:その通りです。HU値が決まった後、画像を画面に表示する方法を決定するのが「階調調整」です。Window WidthとWindow Levelによって行われます。

Beyond先生:Window Levelは画像の明るさの中心を、Window Widthはその中心からどれくらいの範囲のHU値を画面の白黒に割り当てるかを決めます。

Voxel:Window WidthとWindow Levelか…つまり、どこをどれくらいの幅で切り取って白黒にするかってことっすね!

Beyond先生:ええ、HU値そのものを変えるわけではなく、あくまで表示方法の調整なんです。では、いくつかのプリセットを試してみましょう。

Voxel:おっしゃー!試すぞ!『Image』メニューから『W/L preset』で『Default』を選ぶんだな。

05-wl-default

Voxel:お、画面下部に『W/L 40/400』って出た!特に変化はないように見えるけど…。

Beyond先生:これはDICOMファイルに設定されているデフォルトのW/L条件です。多くのCT画像ビューアで最初に表示される一般的な設定ですね。

Voxel:次!『Image』メニューの『W/L preset』から『Lung』だ!

06-wl-lung

Voxel:うお!『W/L −600/1500』に変わった!肺野が強調されて、ファントムの中身がなんか真っ白になっちまったぜ!

Beyond先生:肺野は空気を多く含むため、低いHU値が強調される設定です。今回はファントムなので、空気部分以外の情報が白く飛んで見えなくなってしまうんですね。

Voxel:なるほど!じゃあ、『Bone』!

07-wl-bone

Voxel:今度は『W/L 300/1500』か。骨の部分がすごくはっきり見えるようになったな!

Beyond先生:骨は高いHU値を持つので、この設定では骨の内部構造が詳細に観察できるようになります。

Voxel:最後は『Brain』だ!

08-wl-brain

Voxel:お!『W/L 40/80』って、これまでの幅と全然違う!中身がクッキリと白黒に分かれてる!これ、面白いな!

Beyond先生:脳条件のようにWindow Widthを狭くすると、わずかなHU値の差でも明暗がはっきり分かれて表示されるんです。

Beyond先生:この調整は、HU値そのものを変えるのではなく、あくまで『どこを切り出して、どう白黒で表示するか』という見せ方を変えているだけなんですよ。

Voxel:これ、すごく便利っすね!このW/L調整って、もっと細かく自分で設定できないんすか?

Beyond先生:もちろんです。ビューアのツールバーにあるW/Lアイコンをクリックしてみてください。

09-wl-histogram

Voxel:これか!お、ダイアログが開いた!なんかグラフみたいなのが出てるぞ?ヒストグラムってやつっすね。

Beyond先生:ええ。このヒストグラムは、画像内のHU値の分布を示しています。

Beyond先生:現在のW/L設定が、この分布のどの範囲を切り取って画面の階調に割り当てているかを視覚的に確認できます。

Voxel:なるほど!ファントムは水がほとんどだから、0 HUのところに山があるのか!

Voxel:W/Lを動かすと、ヒストグラムの表示範囲も変わるな!面白い!

Beyond先生:例えば、特定の病変のHU値が分かっていれば、その値をW/Lの中心に設定し、Window Widthを調整することで、病変を周囲の組織から際立たせて表示することも可能になります。

Voxel:へぇ!それ、診断にも役立つってことっすね!

Beyond先生:最近では、このRescale SlopeとInterceptのメカニズムは、PETのStandardized Uptake Value、略してSUVなど、他のモダリティの実量値への変換にも広く適用されています。

Voxel:SUV!それな!ってことは、いろんな検査で使えるってことっすか!

Beyond先生:ええ。これにより、異なる装置やプロトコルで取得された画像間でも、統一された定量的な評価が可能になっているんです。

Voxel:すげー!医用画像処理、奥が深いぜ!

Beyond先生:本日は、医用画像の画素値が、生データからHounsfield Unitへの変換、そしてWindow WidthとLevelによる階調調整という二段階のプロセスを経て表示されることを学びました。

Beyond先生:GRAPHY-Nextを使って、この一連の変換プロセスをファントムデータで実践的に確認することで、医用画像の基本的な性質を深く理解できたのではないでしょうか。

Voxel:はい!画面の数字がファイル内の数字と異なるってこと、すっげー大事なことだって分かりました!

Voxel:医用画像を用いた正確な解析を行う上での第一歩を学べたぜ!

Beyond先生:次回はさらに詳細な画像解析手法について掘り下げていきますよ。

Voxel:うおー!楽しみだぜ!

Voxel:このチャンネルではGRAPHY-Nextを使って実践的な画像処理や解析を紹介しているぜ!

Voxel:今日の動画が面白いと思ったら、ぜひチャンネル登録と高評価をよろしくな!

Voxel:また次回の動画で会おうぜ!バイバイ!

操作手順のまとめ

  1. ファントム画像のロードと表示 — GRAPHY-Next v0.2.8を起動し、左側のパネルで「PHANTOM_DIGITAL」から「LGN phantom-ct-basic」シリーズを選択して2Dビューアにロードします。ビューアに円柱ファントムが表示されることを確認します。
    • このファントムは、既知のHU値を持つ異なる物質のインサートを含んでいます。
  2. 水のHU値の測定 — ビューア上部のメニューバーから「ROI」をクリックし、ドロップダウンメニューから「Probe」を選択します。画面中央の水の部分(ファントムの背景部分)にプローブを配置し、HU値が0 HUに近いことを確認します。
    • 水はHounsfield Unitの基準で0 HUと定義されています。
  3. 各インサートのHU値の測定 — プローブツールを使い、ファントム内の各インサート(空気、脂肪、軟部組織、骨)に配置し、それぞれのHU値を測定します。画面上部が空気(-1000 HU)、左が脂肪(-98 HU)、右が軟部組織(57 HU)、下が骨(404 HU)のインサートです。測定値が概ね真値に近いことを確認します。
    • わずかなずれはノイズによるもので、正常な範囲内です。
  4. DICOMタグでRescale情報を確認 — ビューア上部のメニューバーから「Tools」をクリックし、ドロップダウンメニューから「Tag Viewer」を選択します。開いたダイアログで「Rescale Intercept」が「-1024.0」、「Rescale Slope」が「1.0」、「Rescale Type」が「HU」であることを確認します。
    • これらのタグがファイル格納値からHU値への変換に用いられます。
  5. デフォルトのW/Lプリセットの適用 — ビューア上部のメニューバーから「Image」をクリックし、ドロップダウンメニューから「W/L preset」→「Default」を選択します。画面中央下部の情報表示が「W/L 40/400」になっていることを確認します。
    • Defaultプリセットは、汎用的な軟部組織条件に近い表示です。
  6. 肺野条件のW/Lプリセットの適用 — 同様に、「Image」→「W/L preset」→「Lung」を選択します。情報表示が「W/L -600/1500」に変わり、肺野が強調されて見えることを確認します。
    • W/Lを大きく変更すると、画像の見え方が劇的に変わります。肺野条件では、HU値の低い領域を広く表示します。
  7. 骨条件のW/Lプリセットの適用 — 同様に、「Image」→「W/L preset」→「Bone」を選択します。情報表示が「W/L 300/1500」に変わり、骨が強調されて見えることを確認します。
    • 骨条件では、HU値の高い領域を広く表示することで、骨構造の微細な変化を捉えやすくなります。
  8. 脳条件のW/Lプリセットの適用 — 同様に、「Image」→「W/L preset」→「Brain」を選択します。情報表示が「W/L 40/80」に変わり、脳組織の詳細が強調されて見えることを確認します。
    • 狭いWindow Widthを設定することで、HU値のわずかな違いがコントラストとして強調されます。
  9. W/L調整ダイアログとヒストグラムの確認 — ビューア上部のツールバーにある「W/L」アイコン(WとLが書かれたボタン)をクリックし、W/L調整ダイアログを開きます。ダイアログ内のヒストグラムが画素値の分布を示し、現在のW/L設定がどの範囲を画面に割り当てているかを視覚的に確認します。ファントム画像のため、水(0 HU)の山が圧倒的に高いことに注意してください。
    • このヒストグラムは、W/L調整がHU値の分布とどのように関連しているかを理解するのに役立ちます。

用語

用語 説明
Hounsfield Unit (HU) CT画像におけるX線吸収率の単位で、水の吸収率を0、空気を−1000と基準に定義される相対値。
Rescale Slope/Intercept DICOMタグに記述される、CT画像のファイル格納値からHounsfield Unit(HU)へ変換するための係数。
Window Width (WW) 画像表示の階調調整において、画面の白黒に割り当てるHounsfield Unit(HU)値の範囲。
Window Level (WL) 画像表示の階調調整において、画面の明るさ(コントラスト)の中心となるHounsfield Unit(HU)値。
VOI LUT Value of Interest Look-Up Table の略。モダリティ値(CT なら HU)のうちどの値の範囲を表示用の輝度に割り当てるかを決める変換表。空間的な領域ではなく値の範囲を指す点に注意。Window Width / Level はこの変換を直線で表した一形態で、DICOM は任意形状の LUT も持てる。
ファントム 医用画像装置の性能評価や撮影条件の検証のために用いられる、人体の一部や組織の特性を模した物体。

いまはどうなっているか

現代の医用画像処理システムでは、DICOM標準で定められたRescale Slope/Interceptのメカニズムは、CTのHU値だけでなく、PETのStandardized Uptake Value(SUV)など、他のモダリティの実量値への変換にも広く適用されています。これにより、異なる装置やプロトコルで取得された画像間でも、統一された定量的な評価が可能となっています。また、Window Center/WidthはVOI LUT(Value of Interest Look-Up Table)の一形態であり、DICOMはより複雑で任意形状のLUTもサポートしています。これにより、特定の診断目的に特化した非線形な階調表示が可能となり、画像の表現力が向上しています。

まとめ

画素値が何を表すかは装置によって異なり、CTの場合はHounsfield Unit(HU)です。そしてCT画像は、DICOMファイル内の格納値からHUへの変換、そしてWindow Width/Levelによる階調調整という二段階のプロセスを経て、初めて意味のある画像として画面に表示されます。GRAPHY-Next v0.2.8を使用し、この一連の変換プロセスをファントムデータで実践的に確認することで、医用画像の基本的な性質を深く理解することができました。画面上の数字がファイル内の数字と異なるという本質的な理解は、医用画像を用いた正確な解析を行う上での第一歩となります。次回はさらに詳細な画像解析手法について掘り下げていきます。

この記事で使ったデータ

円柱水ファントムに既知 HU のインサートを配置した CT シリーズ(等間隔・チルトなし)(自作(Visionary Imaging Services, Inc.)— 商用利用可)

参考文献

  • DICOM Part 3: Information Object Definitions(DICOM Standard) https://www.dicomstandard.org/current
  • 2Dビューア(GRAPHY-Next 公式ドキュメント) https://tatsunidas.github.io/GRAPHY-Next-Docs/viewer2d
  • キーボードショートカット(GRAPHY-Next 公式ドキュメント) https://tatsunidas.github.io/GRAPHY-Next-Docs/keyboard-shortcuts

VOICEVOX:白上虎太郎/四国めたん


前の回: 第2回 / GRAPHY-Nextで学ぶ医用画像処理 の記事一覧