「DICOMファイル」の版間の差分
編集の要約なし |
|||
18行目: | 18行目: | ||
DICOMファイルかどうかを判断するのに使用する。 | DICOMファイルかどうかを判断するのに使用する。 | ||
==== 備考:DICOMファイルのファイル名 ==== | |||
ちなみにDICOMファイルのファイル名は「半角の大文字英字および数字で最大8文字」で「拡張子なし」という事になっていた。最近では8文字以上の長いファイル名だったり、小文字を含んだり、アンダーバーなどの記号を含んだり、拡張子が.dcmだったりすることの方が多いが、間違っても拡張子でDICOMファイルであると判断してはいけない。たとえファイルの拡張子が.jpgとなっていても、[[DICOMビューア]]たるものDICOMファイルである可能性を捨てず、問答無用でまずプリフィックスを調べにいく必要がある。 | |||
=== メタ情報 === | === メタ情報 === |
2012年11月27日 (火) 12:01時点における版
DICOMファイル(だいこむふぃある)とは、DICOM規格で定められている医用画像などのファイルフォーマットのことである。
DICOMファイルの大多数は医用画像であるが、非常に稀に医用画像以外のデータが格納されていることもある。たとえばDICOM SRと呼ばれる形式で読影レポートを格納したDICOMファイルや、主にCD-Rなどの外部書き出しの際に用いるDICOMDIRと呼ばれるディレクトリ構造やファイル構成を表すDICOMファイルなどがある。これらと区別するため医用画像のみを指す場合は「DICOM画像」と呼ばれることもあり、狭義なのか広義なのかは文脈から適宜判断する必要がある。
また、「DICOMデータ」という場合は、DICOMファイルのみならず、DICOM通信で内部的に用いるパケット(DICOM/PDUなど)のフォーマットなども含まれるが、会話などにおいてはDICOMファイルを指していることも多いので前後の文脈から読み取る必要がある。
ファイル構造
DICOMファイルの基本構造は以下のようになっている
プリアンブル
DICOMファイルの先頭にある固定128バイト(0~128バイト)。
通常は全部0x00で埋め尽くすことになっているで、プログラムを作る時は問答無用で読み飛ばすこと。正確には「好きに使ってよし」という領域なのでプログラマの遊びメッセージなんかを書いておいても良い。
プリフィックス
プリアンブルに続く固定4バイト(129~132バイト)。 中身は「DICM」(0x44, 0x49, 0x43, 0x4D)という文字列。 DICOMファイルかどうかを判断するのに使用する。
備考:DICOMファイルのファイル名
ちなみにDICOMファイルのファイル名は「半角の大文字英字および数字で最大8文字」で「拡張子なし」という事になっていた。最近では8文字以上の長いファイル名だったり、小文字を含んだり、アンダーバーなどの記号を含んだり、拡張子が.dcmだったりすることの方が多いが、間違っても拡張子でDICOMファイルであると判断してはいけない。たとえファイルの拡張子が.jpgとなっていても、DICOMビューアたるものDICOMファイルである可能性を捨てず、問答無用でまずプリフィックスを調べにいく必要がある。
メタ情報
以降はメタ情報と呼ばれる可変長の要素がファイルの終わりまで繰り返し登場する。 1個のメタ情報は基本的に、タグ、VR(データの型)、データ長、データ本体の4つで構成される。必ずしもこの4つで構成されるとは限らないので注意。
タグ
タグとは、データ本体に何の情報が入っているかを示す4バイトである。 タグはグループ(上位2バイト)とエレメント(下位2バイト)で構成される。
グループの値が偶数の場合は標準タグといい、それぞれのタグの値が何を意味するかはDICOM規格に記載された膨大な辞書で決まっている。例えばタグが(0010,0010)であれば患者名といった感じで決まっている。
グループの値が奇数の場合はプライベートタグといい、勝手に独自の値を突っ込んでいいことになっている。標準タグでカバーしきれない情報を書いておきたい場合に使う。基本的に第三者には意味不明な情報となってしまうので極力使うな。
詳細は「DICOMタグ」の項目を参照。
VR
VRとは、Value Representationの略で、データ本体の「型」を表す2バイトの値であり、データ本体が文字列なのか数値なのかという情報である。
なお、DICOMでは暗黙的VR(Implicit VR)と明示的VR(Explicit VR)という規定があり、暗黙的VRの場合はVRが存在しない。 その場合は前述のタグからVRを判断する(患者名なら文字列など)。 つまりタグから判断できる項目なので不要。 親切丁寧に書いても良いが不要。 ぶっちゃけ書いてあっても信用ならんので無視してタグから推定するくらいが丁度良い。
詳細は「DICOM/Value Representation」を参照。
データ長
データ長とは、データ本体のバイト数のこと。 2バイトまたは4バイトまたは6バイト。 なお6バイトの場合、上位2バイトはゴミで、有効なのは下位4バイトのみであり、実質的に4バイトである。
データ長が何バイトなのかはVRから推定する。例外的に明示的VRで特定タグの場合はタグから推定する。
4バイト(6バイト含む)かつ、値が0xFFFFFFFFの場合は「データ本体の長さ未定」を意味する。
データ本体
目的のデータはここに入っている。