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 データの位置、解像度、および方向を記述する構造体 spatial も返します。

[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]
              ImageSize: [512 512 22]

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

dim
dim = 3

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

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

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

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

    s1    {0×0 double            }    {0×0 double            }    ""                    ""         "RTSTRUCT"      0         0         0           1      ""                  ""                   "1.2.826.0.1.3680043.8.274.1.1.2729954696.96242.3632970675.507"       "1.2.826.0.1.3680043.8.274.1.1.7145442384.75872.7982248107.258"       {["B:\matlab\toolbox\images\imdata\rtstruct.dcm"         ]}
    s2    {[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"                    {["B:\matlab\toolbox\images\imdata\CT-MONO2-16-ankle.dcm"]}
    s3    {[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                                              }
    s4    {[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"    {["B:\matlab\toolbox\images\imdata\knee1.dcm"            ]}
    s5    {[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"    {["B:\matlab\toolbox\images\imdata\knee2.dcm"            ]}
    s6    {[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"                                                    {["B:\matlab\toolbox\images\imdata\US-PAL-8-10x-echo.dcm"]}

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

V = dicomreadVolume(sourcetable,"s3","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

等方性ボリュームの作成。logical の 0 (false) または 1 (true) として指定します。

  • false または 0 — 入力データから 4 次元 DICOM ボリュームを作成します。

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

source によって指定される入力データは、等方性または異方性 DICOM データのいずれかです。

出力引数

すべて折りたたむ

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

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

4-D array depicted as groups of 3-D grayscale volumes of size rows-by-colums-by-samples.

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

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

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

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

3-D representation of DICOM image slices

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

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

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

バージョン履歴

R2017b で導入