近年,外部媒体への保存可能なモダリティの普及や PACS(picture archiving and communication systems) の 導 入 に より 簡 単 に DICOM(digital imaging and communication in medicine)画像を入手することがで きるようになった.これらの方法で入手した DICOM 画像をパーソナルコンピュータを用いて表示,解析す るツールがインターネットの Web サイトで紹介され ており,自由にダウンロードして使うことができる. また,汎用的なフリーウェアの中にも DICOM 画像の ファイルフォーマットを解析できるソフトがある.そ の一つが,バイナリエディタである.今回は,これま でのパソコンソフト活用術で紹介されてきた ImageJ とバイナリエディタを使った,DICOM 画像のファイ ルフォーマットの解析方法について解説する. なお,DICOM 画像には個人情報が含まれている ため,その扱いについては十分に注意が必要である. また,データ入手の際にコンピュータウィルスのシス テムへの混入についても十分に注意が必要である. バ イナリエ デ ィタでファイル の 内 容 を 改 変した DICOM画像データは,各自個人の責任の下に研究で の使用を目的とし,臨床目的で利用してはならない. 本文中の一部専門用語に関しては,誌面の文字数の 制約上説明を省略するが,各自インターネット等で調 べていただきたい.
1.バイナリエディタについて
バイナリエディタは,ファイルの内容を 1 byte ごと 16進数のバイナリデータとして表示し,直接内容を 操作できるアプリケーションソフトである.フリー ウェアのバイナリエディタは,インターネット上で OS を問わず数多く公開されている.Fig. 1 は代表的なバ イナリエディタで FCR の DICOM 画像データを表示 したところである.
上部 1 行と左側 8 列がデータの位置を示すアドレス 領域である.中央の 2 桁 16 列が 16 進ダンプ領域で, ファイルの内容を 1 byte ごと 16 進数で表示している
(2 桁の英数字が 1 byte を示す).右側の 1 桁 16 列は
に変換して表示している.16 進ダンプ領域とアス キー文字領域はキーボードから入力して編集すること ができる.
2.DICOM 画像の構造について
DICOM 画像ファイルは,DICOM ファイルメタ情 報(DICOM file meta information)と DICOM データ集 合(DICOM data set)から構成される.DICOM データ 集合は,データ要素(data element)から構成される. データ要素は,4 bytes の「Tag(16 進数 2 bytes グループ 番号 +16 進数 2 bytes エレメント番号)」,「値表現(VR: value representation)」,「データ長(VL: value length)」,
「値(value)」から構成される(Fig. 2).主な値表現を Fig. 3に示す.バイトオーダ(Big Endian,Little Endian), 値表現を明示するか否か(explicit〔明示的〕,implicit
〔暗黙的〕),圧縮方法は DICOM ファイルメタ情報内 の転送構文 UID(transfer syntax UID)(0002,0010)に より規定されている.主な転送構文 UID の値は以下 のとおりである.
Implicit VR Little Endian Transf er Syntax UID : 1.2.840.10008.1.2
Explicit VR Little Endian Transf er Syntax UID : 1.2.840.10008.1.2.1
E x p l i c i t V R Bi g E n d i a n T r a n s f e r S y n t a x U I D : 1.2.840.10008.1.2.2
明示的値表現のときの「値表現」,「データ長」のサ イズ(2 bytes or 4 bytes)は,値表現の種類により規定 されている.
3.バイナリエディタによる DICOM 画像ファイ ルフォーマットの解析
バイナリエディタを起動してメニューの「ファイル
(F)→開く(O)...」で DICOM 画像ファイルを選択するか バイナリエディタのウィンドウ内に DICOM 画像ファイ ルをドラッグアンドドロップすることにより,DICOM 画像ファイルをバイナリエディタで開くことができる. Fig. 4にフラットパネルディテクタ Canon CXDI-11 か
Fig. 1 代表的なバイナリエディタで FCR の DICOM 画像 データを表示
Fig. 2 DICOM 画像の構造
Fig. 3 主な値表現
ら検像システムへ転送した DICOM 画像データをバ イナリエディタで開いた結果を示す.このファイルを 使って以下に DICOM 画像ファイルフォーマットの解 析方法を示す.
3-1 DICOM ファイルメタ情報
ファイルの先頭(ADDRESS 00000000)から 129 bytes 目(Fig. 4 ①)に「DICM」の 4 bytes 文字列がある.これ を DICOM Prefix といい,このファイルが DICOM ファ イルであるか否かを認識するために使用されている. DICOM Prefixの次から始まる(0002)のグループ Tag は,転送構文 UID(0002,0010)によらず Explicit VR Little Endianを使用して符号化されている.
転送構文 UID(0002,0010)を 16 進データで検索する とカーソルは 16 進ダンプ領域,アスキー文字領域内 の(0002,0010)の Tag(Fig. 4 ②)が選択される.実際 に検索をするときは,バイトオーダにより検索のボック スに(02 00 10 00)と入力する.アスキー文字領域内の カーソルより 5 bytes 目に「1.2.840.10008.1.2」と表示さ れている(点線部).この値より転送構文は,Implicit VR Little Endian転送構文であることが分かる.よっ てこの後のデータ要素には値表現が示されない.
3-2 データ要素
データ要素は,値の内容によっていくつかのグループ に分かれ,それぞれのグループ番号が振られている. 主なグループ番号として,(0008)検 査に関係する データ要素,(0010)患者に関係するデータ要素,
(0018)装置の撮影条件プロトコルなどに関するデータ 要素,(0020)検査の内容などに関係するデータ要素,
(0028)画像表示の情報に関係するデータ要素がある. 奇数のグループ番号は,メーカ独自の私的データ要 素を持つ(プライベートタグ)データ要素である.(た
だし,(0001)(0003)(0005)(0007)(FFFF)を除く.) ここでは,(0028)画像表示の情報に関係するデータ 要素の光度測定解釈を例にバイナリエディタでの解析 について説明する.まず,光度測定解釈(0028,0004)を 16進データで検索するとカーソルは 16 進ダンプ領域, アスキー文字領域内の(0028,0004)の Tag が選択される
(Fig. 5 ①).実際に検索をするときは,(28 00 04 00) と入力する.Implicit VR Little Endian 転送構文である ので,選択されている Tag から 4 bytes の(0C 00 00 00) がデータ長となる(Fig. 5 ②).(0C 00 00 00)は Little Endianなので,実際は(00 00 00 0C)となり関数電卓で この値を 10 進数に直すと 12 となり,値のデータ長は 12 bytesであることが分かる.(0C 00 00 00)の次から 12 bytes選 択 す る と, ア ス キ ー 文 字 領 域 で は
「MONOCHROME2」までが 値であることが 分かる
(Fig. 5 ③). 光 度 測 定 解 釈 の 値 は,MONO- CHROME1であれば,最小サンプル値(画素値)は白 として表現され,MONOCHROME2 であれば,最小 サンプル値は黒として表現される.今回の例では光 度測定解釈の値は,MONOCHROME2 であったが, CR,FPD の場合メーカによりこの値は異なる.バイ ナリエディタはデータ要素の値を書き換えることがで きるの で,上 書きモード でアスキー 文 字 領 域 の MONOCHROME2を MONOCHROME1 に書き換え てファイルを保存し,ImageJ などの画像表示ソフト で表示させると白黒反転する(Fig. 5 ④,⑤).
3-3 画素データ
画素データの Tag は(7FE0,0010)である.16 進デー タで(7FE0,0010)を検索するとカーソルは 16 進ダンプ 領域,アスキー文字領域内の画素データの(7FE0,0010) の Tag が選択される(Fig. 6 ①).実際に検索をするとき は,(E0 7F 10 00)と入力する.16 進ダンプ領域で選択 Fig. 4 フラットパネルディテクタ Canon CXDI-11 のバイナリデータ(ファイ
ルメタ情報)
されている Tag から 4 bytes の(00 CF AB 00)が画素 データの値のデータ長となる(Fig. 6 ②).実際は(00 AB CF 00)となり関数電卓でこの値を 10 進数に直すと 11,259,648となり,このファイルの実際の画素データ は 11,259,648 bytes であることが分かる.
データ長の次からが画素データとなる.画素データは 格納ビット数(0028,0101)が 8 bits 以下であれば 1 pixel は 1 byte で表現され,9 bits 以上 16 bits 以下であれば, 1 pixelは 2 bytes で表現される.
今回の例のデータの格納ビット数は 12 bits である
ので,データ長の次の 2 bytes(05 00)が画素データの 先頭になる(Fig. 6 ③).先頭の画素データは,画像の 左上端の pixel の画素値となり,次の画素データはその 右隣りの pixel の画素値となる.右端の pixel の次の 画素データは,1 行下の左端の pixel の画素となる.
(05 00)は,画素値 5 を示す(Fig. 6 ④).格納ビット数 が 12 bits であれば,画素値は 0(00 00)∼4095(FF 0F) までとなる.今回の例では,光度測定解釈の値が MONOCHROME2なので,画素値 0 は黒を示し画素 値 4095 は白を示す.ここで,先頭の画素データ(画 Fig. 5 データ要素 光度測定解釈(0028,0004)と値の改変
Fig. 6 データ要素 画素データ(7FE0,0010)と値の改変
Tagを簡単に編集するフリーウェアは存在するが,バ
参考文献
1) DICOM Base Standard–2009. http://www.dclunie.com/ dicom-status/status.html#CorrectionProposalsByNumber
2) Herman Oosterwijk.DICOM 入門.株式会社篠原出版新 社,東京,2008.