DICOM (.dcm, .dic)
予備知識
-
- MIME type: application/dicom
- DICOM 医療画像形式.
- 一般に医療用画像機器や医療用画像のアーカイブ,通信システムで使われる.
- DICOMはDigital Imaging and Communications in Medicineの頭文字である.
- 患者とデバイスの情報と一緒に複数のラスタ画像を格納する.
- バイナリ形式.
- さまざまな画像エンコードとデータ圧縮手法をサポートする.
- DICOM Version 3.0 は1993年に導入された.
ImportとExport
- Import["file.dcm"]はDICOMファイルをインポートし, Image オブジェクトを返す.
- Import["file.dcm",elem] はDICOMファイルから指定された要素をインポートする.
- インポート形式はImport["file","DICOM"]または Import["file",{"DICOM",elem,…}]で指定することができる.
- Export["file.dcm",expr] はグラフィックスまたは式を画像としてDICOMファイルへエキスポートする.
- Wolfram言語のグラフィックスや任意の式をDICOMにエキスポートすると,その画像は表示されている形式と同じラスタサイズになる.
- デフォルトでは,Imageオブジェクトはそのラスタサイズでエキスポートされる.
- DICOMはラスタ画像形式なので,全てのフォントはエキスポート時にラスタライズされる.
- 一般的な情報は以下のドキュメントを参照のこと:
-
Import, Export ファイルからインポートするまたはファイルへエキスポートする CloudImport, CloudExport クラウドオブジェクトからインポートするまたはクラウドオブジェクトへエキスポートする ImportString, ExportString 文字列からインポートするまたは文字列へエキスポートする ImportByteArray, ExportByteArray バイト配列からインポートするまたはバイト配列へエキスポートする
要素
- 一般的な Import 要素:
-
"Elements" ファイル中の有効な要素とオプションのリスト "Summary" ファイルの概要 "Rules" 使用可能なすべての要素の規則のリスト - データ表現要素:
-
"Data" 値の配列 "Graphics" 画像を表すGraphics オブジェクト "Image" Image オブジェクトとして与えられたラスタグラフィックス "ImageList" 画像のリスト -
"RawData" カラーマップインデックスの配列 "RawPixelData" スケーリングなしのDICOMピクセルデータ - Overlay 要素:
-
"Overlays" オーバーレイ画像またはオーバーレイのリスト - デフォルトでは,Import は,単一フレームのDICOMファイルには "Image" ,複数フレームのDICOMファイルには "ImageList" を使う.
- 高度なImport 要素:
-
"BitDepth" ファイル内の各カラーチャネルを表すために使用されるビット "Channels" ファイル内で使用されているカラーチャネルの数 "ColorMap" 色の値のリストとして与えられる減色パレット "ColorSpace" ファイルで使用されるカラーエンコーディング "ImageSize" ラスタ次元 "MetaInformation" ファイルに保存されているメタ情報 "RawMetaInformation" ファイルに保存されている生のメタ情報 "Summary" ファイルの概要
要素
- 一般的なExport要素:
-
"Rules" elemexprの形式でインポートされた要素のリスト - Export["file.dcm",{elem1->expr1,…},"Rules"] は規則を使ってエキスポートする要素を指定する.
- 可能なExport要素:
-
"Data" 数値データ "Image" Imageオブジェクト "Image3D" Image3Dオブジェクト "ImageList" 画像フレームのリスト "MetaInformation" メタデータのタグと値の連想 "Overlays" 連想のリスト - "Overlays"の連想は以下のキーをとることができる:
-
"Description" オーバーレイの説明 "Image" オーバーレイ画像またはそのリスト "Label" オーバーレイのラベル "Type" オーバーレイのタイプ(型) "Subtype" オーバーレイのサブタイプ(型) - "Type" の値は,"Graphics" または "RegionOfInterest"のいずれかを取ることができる."Subtype"は"User"または"Automated"のいずれかを取ることができる.
オプション
- Import オプションと Export オプション:
-
"ImageTopOrientation" Top ファイルに保存されている画像の向き ImageSize Automatic 全体の画像サイズ IncludeMetaInformation All インポートおよびエキスポートするメタデータの量 - IncludeMetaInformationでは以下の設定が可能である:
-
All 全ての可能なメタデータを含む None メタデータを含まない "Anonymized" 匿名化されたメタデータを含む "FullyAnonymized" 完全に匿名化されたメタデータを含む - Import オプション:
-
"DataTransformation" Automatic ファイルに保存されているデータに適用する変換一式 - "DataTransformation" には以下のキーを持つ連想が使える:
-
"Modality" Automatic データ生成者を独立させるためのモダリティ変換 "Polarity" Automatic 最小値を黒または白と仮定するかどうか "Presentation" Automatic ヒトの知覚反応に変換するかどうか "ScalingWindow" Automatic データの関心領域VOIとも言われる,データのインポートに使用するスケーリング法 - デフォルトでは,ファイルで指定されたモダリティ変換が使用される.この変換を無効にするためには"Modality"None を使用する.
- デフォルトでは,ファイルで指定された極性変換が使用される.可能な設定は以下のものである:
-
"Normal" 最小値が黒であると仮定する "Reverse" 最小値が白であると仮定する - デフォルトでは,ファイルで指定されたプレゼンテーション変換が使用される.この変換を無効にするためには"Presentation"None を使用する.
- "ScalingWindow" に使用できる設定:
-
Automatic 自動スケーリング None スケーリングなし "MinMax" すべてのフレームのデータの最小値および最大値にスケールする "MinMaxPerFrame" 各フレームのデータの最小値および最大値にスケールする {center,w} 範囲{center-w,center+w}にスケールする <|"Center"center,"Width"w|> 範囲{center-w,center+w}にスケールする <|"Min"min,"Max"max|> 範囲{min,max}にスケールする - "ScalingWindow"->Automaticとすると,値はファイルに保存されたスケーリング値を使ってスケールされる.スケーリング設定が保存されていない場合は,値は "MinMax"メソッドを使ってスケールされる.
- Exportオプション:
-
ColorSpace Automatic ファイル内で使用する色空間 CompressionLevel Automatic 使用する圧縮レベル ImageSize Automatic 画像の全体の大きさ "BitDepth" Automatic 画像データの保存に使用するチャンネルあたりのビット深度 "ImageEncoding" None 使用する画像圧縮 "ImageTopOrientation" Automatic ファイルに保存されている画像の向き - サポートされているColorSpace設定は "Grayscale"と "RGB"である.
- "ImageEncoding" と "JPEGLossless"に使用可能な値は, "JPEGLosslessNonhierarchical", "JPEGLSLossless", "JPEGLSLossy", "JPEGLossy8Bit","JPEGLossy12Bit", "RLE"である.
例題
すべて開く すべて閉じる例 (3)
スコープ (2)
ファイルで利用できるすべてのImport要素を示す:
Import["ExampleData/head.dcm.gz", "Elements"]Import["ExampleData/head.dcm.gz", "MetaInformation"]//ShortImport要素 (15)
利用できる要素 (3)
Import["ExampleData/head.dcm.gz", "Elements"]Import["ExampleData/head.dcm.gz", "Rules"]//ShortImport["ExampleData/head.dcm.gz", "Options"]"Options"要素はインポートされた画像のオプションをすべて返す訳ではない:
Import["ExampleData/head.dcm.gz"]//Options//Shortデータ表現 (4)
"Data" (1)
"Graphics" (1)
Graphicsオブジェクトとしてインポートする:
Import["ExampleData/head.dcm.gz", "Graphics", ImageSize -> 100]Head[%]"Image" (1)
Imageオブジェクトとしてインポートする:
Import["ExampleData/head.dcm.gz", "Image", ImageSize -> 100]Head[%]Import["ExampleData/head.dcm.gz", ImageSize -> 100]メタデータ (8)
"BitDepth" (1)
"ColorSpace" (1)
Import["ExampleData/head.dcm.gz", "ColorSpace"]インポートした画像の色空間をImageColorSpaceを使って取得する:
Import["ExampleData/head.dcm.gz"]//ImageColorSpace"ImageSize" (1)
Import["ExampleData/head.dcm.gz", "ImageSize"]インポートされた画像に対してImageDimensionsを適用しても同じ結果が得られる:
Import["ExampleData/head.dcm.gz"]//ImageDimensions"MetaInformation" (1)
"RawMetaInformation" (2)
"RawMetaInformation"は"MetaInformation"とは異なり,インポートされた値をDICOM標準に対して検証しない.またWolfram言語式への変換も行わない.DICOMファイルから生のメタ情報を読み取る:
Import["ExampleData/head.dcm.gz", "RawMetaInformation"]//ShortDataset@Import["ExampleData/head.dcm.gz", "RawMetaInformation"]"RawMetaInformation"要素は"MetaInformation"より多くのタグを返すことがある:
Complement[Keys@Import["ExampleData/head.dcm.gz", "RawMetaInformation"], Keys@Import["ExampleData/head.dcm.gz", "MetaInformation"]]Export要素 (10)
"Data" (1)
NumericArrayを生の画素値としてDICOMファイルにエキスポートする:
Export["turtle.dcm", NumericArray[{{132, 134, 136, 139, 140, 141, 140, 139, 138, 137, 136, 138, 137, 135, 134, 135, 133,
132, 131, 130, 129, 129, 130, 130, 131, 130, 129, 129, 129, 130, 130, 129, 129, 130, 131, 131,
132, 131, 131, 131, 131, 131, 131, 131, 130, 129, ... 205, 203, 203, 203, 204,
204, 204, 204, 203, 202, 200, 199, 198, 197, 196, 196, 196, 196, 196, 196, 194, 193, 192, 190,
188, 186, 185, 185, 182, 179, 176, 175, 173, 170, 168, 168, 166, 166, 166, 166, 166, 165, 164,
164}}, "UnsignedInteger8"]]Import["turtle.dcm"]"Graphics" (1)
"GraphicsList" (1)
"Image" (1)
"ImageList" (1)
"Image3D" (1)
"MetaInformation" (2)
turtle = Import["ExampleData/turtle.jpg"]meta = <|
"PatientName" -> "Donatello",
"PatientAge" -> Quantity[16, "years"],
"PatientSex" -> "M",
"PatientBirthDate" -> DateObject[{1965, 12, 27}, "Day", "Gregorian", None],
"PatientSize" -> 0.25,
"DateTime" -> Now
|>;Export["test.dcm", {"Image" -> turtle, "MetaInformation" -> meta}, "Rules"]Import["test.dcm", "MetaInformation"]//DatasetExport["test.dcm", <|"PatientName" -> "Donatello"|>, "MetaInformation"]"Overlays" (2)
ovrl = [image];turtle = Import["ExampleData/turtle.jpg"]Export["overlaid.dcm", {
"Image" -> turtle,
"Overlays" -> <|
"Image" -> ovrl,
"Origin" -> {45, 155},
"Description" -> "Turtle's head"
|>
}, "Rules"];Import["overlaid.dcm"]Import["overlaid.dcm", "Overlays"]Export["overlaid.dcm", <|"Image" -> [image]|>, "Overlays"]
Importオプション (8)
ImageSize (1)
"ImageTopOrientation" (1)
"DataTransformation" (6)
Import["ExampleData/head.dcm.gz", "Image", "DataTransformation" -> Automatic, ImageSize -> 200]MinMax@ImageData[%, "Bit16"]Import["ExampleData/head.dcm.gz", "Image", "DataTransformation" -> None, ImageSize -> 200]MinMax@ImageData[%, "Bit16"]Import["ExampleData/head.dcm.gz", {"MetaInformation", "Window*"}]ファイルに保存されたウィンドウの幅と中心を明示的に指定して画像をインポートする:
Import["ExampleData/head.dcm.gz", "Image", "DataTransformation" -> <|"ScalingWindow" -> <|"Center" -> %["WindowCenter"], "Width" -> %["WindowWidth"]|>|>, ImageSize -> 200]500から600までの値を完全画像データ範囲にスケールして画像をインポートする:
Import["ExampleData/head.dcm.gz", "Image", "DataTransformation" -> <|"ScalingWindow" -> <|"Min" -> 500, "Max" -> 600|>|>, ImageSize -> 200]指定のスケーリング値を使い,極性を維持して画像をインポートする:
Import["ExampleData/head.dcm.gz", "Image", "DataTransformation" -> <|"ScalingWindow" -> <|"Min" -> 500, "Max" -> 600|>, "Polarity" -> "Reverse"|>, ImageSize -> 200]モダリティ変換の無効化と極性の変更がインポートされた画像に及ぼす影響を比較する:
data = Outer[Import["ExampleData/head.dcm.gz", {"DICOM", "Image"}, "DataTransformation" -> <|"Modality" -> #1, "Polarity" -> #2|>]&, {Automatic, None}, {"Normal", "Reverse"}];TableForm[data, TableHeadings -> {{"Automatic", "None"}, {"Normal", "Reverse"}}]Exportオプション (18)
BitDepth (3)
Exportは自動的に最適なビット深度を使用する:
Export["test.dcm", [image], "BitDepth" -> Automatic]Import["test.dcm", "BitDepth"]Export["test.dcm", [image], "BitDepth" -> 8]ImageType@Import[%]サポートされているビット深度はAutomatic,8,および16である.
Export["test.dcm", [image], "BitDepth" -> 12]ColorSpace (3)
フォルトではExportは最適な色空間を使用する:
Export["test.dcm", [image], "ColorSpace" -> Automatic]Import["test.dcm", "ColorSpace"]Export["test.dcm", [image], "ColorSpace" -> "Grayscale"]Import[%]サポートされている値はAutomatic,"Grayscale",および"RGB"である:
Export["test.dcm", [image], "ColorSpace" -> "CMYK"]CompressionLevel (4)
Export["apples.dcm", [image], "ImageEncoding" -> "JPEGLossy12Bit", CompressionLevel -> 0.5];
FileSize["apples.dcm"]CompressionLevel0を使うと圧縮はなくなり,画質は可能な最高の画質となる:
Export["apples.dcm", [image], "ImageEncoding" -> "JPEGLossy12Bit", CompressionLevel -> 0];FileSize["apples.dcm"]CompressionLevel1では最も圧縮され,ファイルサイズは可能な最小サイズとなる:
Export["apples.dcm", [image], "ImageEncoding" -> "JPEGLossy12Bit", CompressionLevel -> 1];FileSize["apples.dcm"]Import["apples.dcm"]apples = [image];Export["apples.dcm", apples, "ImageEncoding" -> "JPEGLSLossless", CompressionLevel -> 0];
FileSize["apples.dcm"]Export["apples.dcm", apples, "ImageEncoding" -> "JPEGLSLossless", CompressionLevel -> 1];
FileSize["apples.dcm"]"ImageEncoding" (3)
デフォルトではDICOM画像は符号化なしでエキスポートされる:
Export["turtle.dcm", [image], "ImageEncoding" -> None];
FileSize["turtle.dcm"]DICOM画像を不可逆12ビットJPEG符号化でエキスポートする:
Export["turtle.dcm", [image], "ImageEncoding" -> "JPEGLossy12Bit"];
FileSize["turtle.dcm"]encodings = {None, "JPEGLossless", "JPEGLosslessNonhierarchical", "JPEGLSLossless", "JPEGLSLossy", "JPEGLossy8Bit", "JPEGLossy12Bit", "RLE"};AssociationMap[(Export["turtle.dcm", [image], "ImageEncoding" -> #];
FileSize["turtle.dcm"])&, encodings]//Dataset//SortImageSize (1)
i = [image];ImageDimensions[i]Export["test.dcm.gz", i, "DICOM"]Import[%, "ImageSize"]Export["test.dcm", i, ImageSize -> 47]Import[%, "ImageSize"]IncludeMetaInformation (3)
img = [image];MetaInformation /. Options[img, MetaInformation]//Lengthデフォルトでは,埋め込まれたメタデータは"MetaInformation"要素で指定されたものに統合される:
Export["test.dcm", {"Image" -> img, "MetaInformation" -> <|"PatientName" -> "William", "PatientAge" -> Quantity[22, "Years"], "PatientSex" -> "M", "PatientBirthDate" -> DateObject[{1965, 12, 27}, "Day", "Gregorian", None], "PatientSize" -> 1.8, "RequestedProcedureComments" -> "Some comment", "PerformedProcedureStepStartTime" -> TimeObject[{12, 38, 8.953}, "Instant", None]|>},
"Rules"];Import["test.dcm", "MetaInformation"]//LengthIncludeMetaInformationNoneとすると,埋込みメタデータは無視される:
Export["test.dcm", {"Image" -> img, "MetaInformation" -> <|"PatientName" -> "William", "PatientAge" -> Quantity[22, "Years"], "PatientSex" -> "M", "PatientBirthDate" -> DateObject[{1965, 12, 27}, "Day", "Gregorian", None], "PatientSize" -> 1.8, "RequestedProcedureComments" -> "Some comment", "PerformedProcedureStepStartTime" -> TimeObject[{12, 38, 8.953}, "Instant", None]|>},
"Rules", IncludeMetaInformation -> None];Import["test.dcm", "MetaInformation"]//Lengthi = Import["test.dcm"];Export["test.dcm", i, IncludeMetaInformation -> "Anonymized"]Import["test.dcm", {"MetaInformation", "PatientName"}]Import["test.dcm", {"MetaInformation", "PerformedProcedureStepStartTime"}]i = Import["test.dcm"];Export["test.dcm", i, IncludeMetaInformation -> "FullyAnonymized"]Import["test.dcm", {"MetaInformation", "PatientName"}]Import["test.dcm", {"MetaInformation", "PerformedProcedureStepStartTime"}]"ImageTopOrientation" (1)
デフォルトでは直立方向の画像は"ImageTopOrientation"->Topを使ってエキスポートされる:
i = [image];Export["test.dcm.gz", i]Import[%]Export["test.dcm.gz", i, "ImageTopOrientation" -> Left]Import[%]テクニカルノート
関連するガイド
-
▪
- グラフィックスのインポートとエキスポート ▪
- 画像処理 ▪
- インポートとエキスポート ▪
- 全形式のリスト ▪
- ラスタ画像形式 ▪
- 科学,医学データ形式
履歴
2003 で導入 (5.0) | 2016 で更新 (11.0) ▪ 2020 (12.1) ▪ 2020 (12.2) ▪ 2021 (12.3)