Main Content

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

dicomreadVolume

DICOM イメージのセットからの 4 次元ボリュームの構築

説明

V = dicomreadVolume(source) は、source で指定された Digital Imaging and Communications in Medicine (DICOM) ファイルのセットから 4 次元ボリューム V を構築します。関数 dicomreadVolume はイメージの正しい順序を識別し、4 次元ボリュームを構築します。

メモ

入力が DICOM ボリュームの場合、関数は入力ボリュームのイメージ スライスの順序をチェックした後、ボリューム データを返します。イメージ スライスの順序が適切でない場合、関数は出力を返す前に順序を修正します。

V = dicomreadVolume(sourcetable) は、sourcetable にリストされている入力ファイルから 4 次元 DICOM ボリュームを構築します。この table には DICOM ボリュームのメタデータを指定する 1 行のみが含まれていなければなりません。

V = dicomreadVolume(sourcetable,rowname) は、複数行 table の rowname にリストされている入力ファイルから 4 次元 DICOM ボリュームを構築します。sourcetable が複数の行を含む場合、この構文を使用します。

V = dicomreadVolume(___,'MakeIsotropic',TF) は、前の構文の入力引数を使用して、入力 DICOM イメージ データから等方性 4 次元 DICOM ボリュームを構築します。一連の異方性 DICOM イメージ データから等方性 DICOM ボリュームを構築するには、この構文を使用します。

[V,spatial] = dicomreadVolume(___) は、入力 DICOM データの位置、解像度、および方向を記述する構造体も返します。

[V,spatial,dim] = dicomreadVolume(___) は、入力 DICOM データ内の 2 つの隣接するスライス間のオフセットの量が最大になる次元も返します。

すべて折りたたむ

DICOM イメージ ファイルを含むフォルダーからボリューム データを読み込みます。関数 squeeze を使用して、大きさが 1 の次元を削除します。

[V,spatial,dim] = dicomreadVolume(fullfile(matlabroot,'toolbox/images/imdata/dog'));
V = squeeze(V);

4 次元 DICOM ボリュームを表示します。磁気共鳴 (MR) イメージのカラーマップとアルファ (透明度) マップを生成します。

intensity = [0 20 40 120 220 1024];
alpha = [0 0 0.15 0.3 0.38 0.5];
color = ([0 0 0; 43 0 0; 103 37 20; 199 155 97; 216 213 201; 255 255 255])/ 255;
queryPoints = linspace(min(intensity),max(intensity),256);
alphamap = interp1(intensity,alpha,queryPoints)';
colormap = interp1(intensity,color,queryPoints);

表示パネルをカスタマイズします。

ViewPnl = uipanel(figure,'Title','4-D Dicom Volume');

カスタムのカラーマップとアルファ マップを使用してボリュームを表示します。

volshow(V,'Colormap',colormap,'Alphamap',alphamap,'Parent',ViewPnl);

dicomreadVolume から返された空間構造体を表示します。この構造体には、入力 DICOM イメージ ファイルに関する空間情報が含まれています。

spatial
spatial = struct with fields:
       PatientPositions: [22×3 double]
          PixelSpacings: [22×2 double]
    PatientOrientations: [2×3×22 double]

dicomreadVolume の次元情報を表示します。この値は、スライス オフセットが z 次元に沿って最大であることを示します。

dim
dim = 3

関数 dicomCollection を使用して、フォルダーに含まれる DICOM ファイルの詳細を収集します。この関数は、使用可能な DICOM メタデータの詳細を table 形式で返します。

sourcetable = dicomCollection(fullfile(matlabroot,'toolbox/images/imdata'));

table を表示します。この table には複数の行があり、各行には、指定されたフォルダーに存在する DICOM イメージ セットのメタデータが含まれています。

sourcetable
sourcetable=5×14 table
             StudyDateTime             SeriesDateTime           PatientName      PatientSex    Modality    Rows    Columns    Channels    Frames    StudyDescription    SeriesDescription                             StudyInstanceUID                                                     SeriesInstanceUID                                                                                  Filenames                                                     
          ____________________    ________________________    _______________    __________    ________    ____    _______    ________    ______    ________________    _________________    __________________________________________________________________    __________________________________________________________________    ___________________________________________________________________________________________________________________

    s1    30-Apr-1993 11:27:24    {[30-Apr-1993 11:27:24]}    "Anonymized"          ""           "CT"      512       512         1           1      "RT ANKLE"          ""                   "1.2.840.113619.2.1.1.322987881.621.736170080.681"                    "1.2.840.113619.2.1.2411.1031152382.365.736169244"                    {["Y:\jobarchive\Bdoc19b\2019_05_27_h05m12s43_job1128383_pass\matlab\toolbox\images\imdata\CT-MONO2-16-ankle.dcm"]}
    s2    14-Dec-2013 15:47:31    {[14-Dec-2013 15:54:33]}    "GORBERG MITZI"       "F"          "MR"      512       512         1          22      "CSP"               "AX T2"              "1.2.840.113619.2.244.3596.11880862.13689.1386517653.214"             "1.2.840.113619.2.244.3596.11880862.13689.1386517653.217"             {22×1 string                                                                                                      }
    s3    03-Oct-2011 19:18:11    {[03-Oct-2011 18:59:02]}    ""                    "M"          "MR"      512       512         1           1      "RIGHT KNEE"        ""                   "1.3.6.1.4.1.9590.100.1.2.320418845013189618318250681693358291211"    "1.3.6.1.4.1.9590.100.1.2.287740981712351622214874344032214809569"    {["Y:\jobarchive\Bdoc19b\2019_05_27_h05m12s43_job1128383_pass\matlab\toolbox\images\imdata\knee1.dcm"            ]}
    s4    03-Oct-2011 19:18:11    {[03-Oct-2011 19:05:04]}    ""                    "M"          "MR"      512       512         1           1      "RIGHT KNEE"        ""                   "1.3.6.1.4.1.9590.100.1.2.320498134711034521212730362051554545799"    "1.3.6.1.4.1.9590.100.1.2.316302984111738034326701385064023497963"    {["Y:\jobarchive\Bdoc19b\2019_05_27_h05m12s43_job1128383_pass\matlab\toolbox\images\imdata\knee2.dcm"            ]}
    s5    30-Jan-1994 11:25:01    {0×0 double            }    "Anonymized"          ""           "US"      430       600         1          10      "Echocardiogram"    "PS LAX MR & AI"     "999.999.3859744"                                                     "999.999.94827453"                                                    {["Y:\jobarchive\Bdoc19b\2019_05_27_h05m12s43_job1128383_pass\matlab\toolbox\images\imdata\US-PAL-8-10x-echo.dcm"]}

table 内の DICOM イメージ セットから 4 次元 DICOM ボリュームを構築します。目的の DICOM イメージ セットを含む行名を指定します。等方性ボリュームを作成するには、パラメーター 'MakeIsotropic'true に設定します。関数 squeeze を使用して、大きさが 1 の次元を削除します。

V = dicomreadVolume(sourcetable,'s2','MakeIsotropic',true);
V = squeeze(V);

関数 volshow を使用して、等方性 4 次元 DICOM ボリュームを表示します。MR イメージのカラーマップとアルファ (透明度) マップを生成します。

intensity = [0 20 40 120 220 1024];
alpha = [0 0 0.15 0.3 0.38 0.5];
color = ([0 0 0; 43 0 0; 103 37 20; 199 155 97; 216 213 201; 255 255 255])/255;
queryPoints = linspace(min(intensity),max(intensity),256);
alphamap = interp1(intensity,alpha,queryPoints)';
colormap = interp1(intensity,color,queryPoints);

表示パネルをカスタマイズします。

ViewPnl = uipanel(figure,'Position',[0 0 1 1],'Title','Isotropic 4-D Dicom Volume');

カスタムのカラーマップとアルファ マップを使用してボリュームを表示します。

volshow(V,'Colormap',colormap,'Alphamap',alphamap,'CameraPosition',[3 3 4],'Parent',ViewPnl);

入力引数

すべて折りたたむ

ボリューム データのフォルダーまたはファイル。string スカラー、文字ベクトル、string 配列、または文字ベクトルの cell 配列として指定します。

データ型: char | string

DICOM ファイル メタデータのコレクション。dicomCollection が返すテーブルとして指定します。

データ型: table

table 行の名前。string スカラーまたは文字ベクトルとして指定します。この名前は、sourcetable で指定された複数行 table の行の 1 つを識別します。

データ型: char | string

等方性ボリュームの構築。次のいずれかの値を指定します。

  • false または 0 (既定の設定) — 入力データから 4 次元 DICOM ボリュームを構築します。

  • true または 1 — 等方性 4 次元 DICOM ボリュームを構築します。

入力は等方性または異方性 DICOM データのいずれかです。

例: ('MakeIsotropic',true)

出力引数

すべて折りたたむ

4 次元 DICOM ボリューム。数値配列として返されます。

V の次元は [rows, columns, samples, slices] です。ここで、samples はボクセルあたりのカラー チャネルの数です。たとえば、グレースケール ボリュームにはサンプルが 1 つ含まれ、RGB ボリュームにはサンプルが 3 つ含まれます。関数 squeeze を使用して、サンプルが 1 などの大きさが 1 の次元を削除します。

入力 DICOM イメージのメタデータから収集されたスライスの位置、解像度、および方向。以下のフィールドを持つ構造体として返されます。

空間構造体

フィールド説明
PatientPositions各スライスの最初のピクセルの (x, y, z) 3 成分。スキャナーの座標系の原点からミリメートル単位で測定
PixelSpacings 各スライス内の近傍の行と列の間の距離 (ミリメートル単位)
PatientOrientations 患者位置に対する各スライスの行と列の方向を指定する方向コサイン 3 成分ペア

DICOM 属性の詳細は、DICOM 標準の Part 3、C.7.6.2 セクションを参照してください。

オフセットが最大の次元。1、2、または 3 として返されます。値は、入力 DICOM データ内の隣接するスライス間のオフセットの量が最大になる、3 次元座標系内の次元を示します。

  • 最大オフセットが x 次元に沿っている場合、dim は 1 です。

  • 最大オフセットが y 次元に沿っている場合、dim は 2 です。

  • 最大オフセットが z 次元に沿っている場合、dim は 3 です。

R2017b で導入