DICOM-RT 輪郭データの ROI の追加と変更
この例では、DICOM-RT 構造体セットに保存されている輪郭データを抽出および変更する方法を示します。
DICOM-RT 構造体セットは、放射線療法に特化した DICOM Information Object Definition (IOD) です。DICOM-RT 構造体セット ファイルのメタデータには、放射線療法の計画に関連する関心領域 (ROI) の輪郭データが含まれます。この例では、ROI 輪郭データを dicomContours
オブジェクトに抽出し、オブジェクト関数を使用して ROI を表示、追加、および削除し、変更された輪郭を新しいメタデータ構造体に保存します。これらの手順は、DICOM-RT 構造体ファイルを探索したり、MATLAB® で輪郭データを更新する場合に新しいメタデータ構造体を書き込んだりするのに役立ちます。この例では、人間の胴体の輪郭と合成腫瘍および器官領域を定義するデータ セットを使用します。
dicominfo
関数を使用して、DICOM-RT 構造体セット ファイルから DICOM メタデータを読み取ります。
info = dicominfo("RTSTRUCT-VS-SEG-001.dcm");
DICOM メタデータから ROI データを抽出します。出力は、抽出した ROI データを格納する dicomContours
オブジェクトです。
contourData = dicomContours(info);
dicomContours
オブジェクトの ROIs
プロパティを表示します。ROIs
プロパティは、抽出した ROI データを含むテーブルです。
contourData.ROIs
ans=4×5 table
Number Name ContourData GeometricType Color
______ ___________ ___________ _____________ ____________
1 {'TV' } {13×1 cell} {13×1 cell} {3×1 double}
2 {'Cochlea'} { 5×1 cell} { 5×1 cell} {3×1 double}
3 {'Vol2016'} {12×1 cell} {12×1 cell} {3×1 double}
4 {'*Skull' } {79×1 cell} {79×1 cell} {3×1 double}
dicomContours
オブジェクトから ROI 輪郭データをプロットします。
figure
plotContour(contourData)
axis equal
MAT ファイル countours.mat
をワークスペースに読み込みます。cell 配列 contours
は、21 個の軸スライスをもつ新しい ROI の境界点の 3 次元座標を指定します。
load("contours.mat")
新しい ROI 輪郭データを含む ROI シーケンスを作成するには、次の属性を指定します。
ROI 番号
ROI のユーザー定義名
輪郭の幾何学的タイプ
シーケンスの ROI 番号は一意でなければなりませんが、ROI 名は任意のユーザー定義名にすることができます。新しい ROI 輪郭データ内のすべての点は同一平面上にあり、最後の点は最初の点に接続されているので、幾何学的タイプを "Closed_planar"
として指定します。新しい ROI をプロットするための表示色を青緑に指定します。
number = 5; name = "Organ"; geometricType = "Closed_planar"; color = [0; 127; 127];
dicomContours
オブジェクトの ROIs
プロパティに、新しい ROI シーケンスを追加します。出力は、元の ROI シーケンスと新しい ROI シーケンスを含む dicomContours
オブジェクトです。
contourData = addContour(contourData,number,name,contours,geometricType,color); contourData.ROIs
ans=5×5 table
Number Name ContourData GeometricType Color
______ ___________ ___________ _____________ ____________
1 {'TV' } {13×1 cell} {13×1 cell} {3×1 double}
2 {'Cochlea'} { 5×1 cell} { 5×1 cell} {3×1 double}
3 {'Vol2016'} {12×1 cell} {12×1 cell} {3×1 double}
4 {'*Skull' } {79×1 cell} {79×1 cell} {3×1 double}
5 {'Organ' } {21×1 cell} {21×1 cell} {3×1 double}
更新された等高線データをプロットします。
figure
plotContour(contourData)
axis equal
ROI 番号 2
で指定された腫瘍 ROI を削除します。
contourData = deleteContour(contourData,2); contourData.ROIs
ans=4×5 table
Number Name ContourData GeometricType Color
______ ___________ ___________ _____________ ____________
1 {'TV' } {13×1 cell} {13×1 cell} {3×1 double}
3 {'Vol2016'} {12×1 cell} {12×1 cell} {3×1 double}
4 {'*Skull' } {79×1 cell} {79×1 cell} {3×1 double}
5 {'Organ' } {21×1 cell} {21×1 cell} {3×1 double}
最終的な等高線データをプロットします。
figure
plotContour(contourData)
axis equal
変更された ROI データを DICOM メタデータ構造体にエクスポートします。
info = convertToInfo(contourData);
dicomwrite
関数を使用して、DICOM-RT 構造体セット ファイルにメタデータを書き込みます。ROI 輪郭データに関連付けられた DICOM イメージが利用できない場合は、dicomwrite
関数の 1 番目の入力引数値を空の配列として指定します。メタデータを新しい DICOM-RT 構造体セット ファイル rtfile.dcm
にコピーするには、CreateMode
の名前と値の引数を "copy"
に設定します。
dicomwrite([],"rtfile.dcm",info,CreateMode="copy");
新しいファイルに正しい ROI 輪郭データが含まれていることを確認します。
info_test = dicominfo("rtfile.dcm");
contour_test = dicomContours(info_test);
contour_test.ROIs
ans=4×5 table
Number Name ContourData GeometricType Color
______ ___________ ___________ _____________ ____________
1 {'TV' } {13×1 cell} {13×1 cell} {3×1 double}
3 {'Vol2016'} {12×1 cell} {12×1 cell} {3×1 double}
4 {'*Skull' } {79×1 cell} {79×1 cell} {3×1 double}
5 {'Organ' } {21×1 cell} {21×1 cell} {3×1 double}
参考
dicomContours
| plotContour
| addContour
| deleteContour
| convertToInfo
| dicominfo