画像解析

レントゲン・CT・MRIのファイル形式:DICOMデータとはなにか

なんで医療画像ってJPEGとかTIFFじゃないんですか?
そもそもDICOM(ダイコム)データってなんですか?
めっちゃ不便なんですけど。
見る側の立場からするとそうだよね。
そもそもDICOMデータは病院間でデータをやりとりするためのファイル形式なんだよ。

 DICOMデータは単なる画像データと構造がちがいます。このページでは医療関係者が知っておくべきDICOMデータの構造について解説します。

1.ファイル一つ一つすべてに個人情報・撮影情報が入っている

医療画像、すなわちレントゲン、CT、MRIの画像は病院から持ち出すときにはDICOM(ダイコム)データという形で保存されます。

CDデータの中身は図のようになります。

ファイル一つ一つすべてに個人情報や撮影情報が入っている

データを見る時に表示されるレントゲン画像は白黒のデータのみ(図の紫の枠)ですが、DICOMデータ形式のファイル1つ1つにさまざまな情報が入っています(黄緑の枠)。

そのためファイル一つだけみれば患者のプライバシーなどにアクセスできてしまいます。
気をつけましょう。

2.DICOMビューアーで開くことができる

DICOMデータの中には画像データが入っています。
画像を見たい時に通常はDICOMビューアーを用います。

病院の電子カルテにはほとんどDICOMを見る機能が入っています。
電子カルテから画像データを開こうとすると勝手に立ち上がってレントゲンを出すソフトです。

DICOMデータ自体は共通形式なので、DICOMを見るソフト「DICOMビューアー」があれば自分のパソコンでも開けます。
病院から紹介患者用にわたすCDの中にも簡易的なDICOMビューアーが入っていますが、これは最低限の機能しかないのでオススメしません。

いまでのオススメの無料ソフトは「Horos」です。

Horosの使い方はこちらのページで解説しています。

最近ではPhotoshopなど画像編集ソフトでも開けるようですが、画像編集ソフトでは患者情報や位置情報が不十分です。
DICOMデータには撮影シリーズ情報も入っているので、DICOMデータにまとめてデータを入れても、情報に従って種類分けしてくれます。
医療従事者であれば一つはパソコンにDICOM専用ビューアーをいれておくと便利です。

3.CTやMRIなどスライスの位置情報が入っている

画像を見たいだけならJPEGとかPDFとかのほうがよくないですか?
レントゲンだとJPEGでも十分かもね。でもCT、MRIはどうだろう。
立体的な画像、、みたいな感じですか?
まあ正解かな。 撮影位置情報が入っているんだよ。
DICOMデータの位置情報を使うと、画像を再構成することが可能になるんだ。

CTスライスは平たく言うと断面画像です。
この断面画像のフォーマットも同じくDICOMデータです。
CT画像のDICOMデータにはスライス画像に加え、
「どこのスライスか」
「どの方向のスライスか」
という情報が含まれています。

この情報を読み込めば、薄いスライス画像であれば画像の再構成が可能になります。

具体的には
横切り(axial)を縦切り(Sagittal)に変更して観察する
2次元からかんたんな3次元画像を表示する
といった操作が可能になります。

図はaxial断面のみのCT画像をSlicer内でSagittal断面、Coronal断面に再構成している例(1mmスライス画像から)

厚いスライスだと情報量が少ないので再構成画像は荒くなります。

4.さらに詳しく

DICOMデータには様々な情報が、タグと言われる項目別に入っています。

これらのタグに入ったデータをDICOMファイルのメタデータといいます。

一度は1つのDICOMファイルのメタデータを見てみると、DICOMが扱っているデータがどんな種類なのかわかってよいと思います。

図はファイルをpythonで開いた例です(Horosなどビューアーでも開けます)。
ファイル情報を開くと、フィールド名、タグ、値という項目があるのがわかります。

このフィールド名というのは、患者IDや、撮影病院といった項目の名前です。
一方でタグには「00XX, XXXX」のような数字が入っています。アルファベットがあるのは16進数表記だからです。
この値はフィールド名に一致していて、この値が国際共通の値となっています。
値はフィールド名前、タグに一致するデータが入っています。

例えば図で選択されているフィールド名はPatientName(患者名)、タグは(0010, 0010)、入っている値はProgram_Surgeon(患者名書き換えてあります)となっています。
DICOM一つ一つにこれらのデータがすべて入っているわけです。

次に位置情報が含まれているCT画像のメタデータを見てみます。

同じシリーズで異なるスライスの場合、個人情報などは同じですが、撮影の位置情報に関するタグの値が異なってきます。

このタグは頭部の部分と胸部の部分のCTスライスの例です。
まず”Instance Number”というタグが異なります。これはDICOMファイルでいうとファイルの番号です。
この間に299個のスライスファイルがあります。
つぎにImage Position Patientというタグも異なります。
これは撮影部位のXYZ座標を表しています。 この定義ではZ座標が足から頭部位までの撮影方向を表しており、スライスによりことなることがわかります。
Slice Locationは局所で定義されたスライス位置に関するデータです。ImagePositionPatientはCT室全体で定義された座標のため絶対値は異なりますが、頭部と胸部の差が299であることは同様です。

これらのピクセルデータはPixel Dataというタグに保存されています。

これは2進法のいわゆるバイナリデータという形式で保存されています。
この場合の要素数は、画像が512 × 512ピクセルなので、
512 × 512 × 2 = 524288
となっています。

ピクセルデータはDICOMタグ内では2進法で記載されているため、Horosなどのビューアーソフトや、Pythonなどのプログラミングを使用して読み取ってやらないと可視化できません。

まとめ
  • DICOMは病院間での画像のやり取りを目的としたデータである
  • DICOMデータ一つ一つに個人情報、撮影情報が入っている
  • DICOMビューアーやプログラミングを使用してこれらの情報を取り出すことができる
データを医療機関の間でクラウド管理できると便利そうですが、
結局CD-RやDVD-Rなどで焼いているのが現状です。
いまの時代、CD-RってDICOMデータ以外で使ってない・・・