簡體   English   中英

如何使用 fo-dicom 從序列中讀取嵌套/子 DICOM 標簽?

[英]How to read nested/child DICOM tags from sequences using fo-dicom?

對於我的項目,我正在嘗試在 VS2015(.Net 4.5.2)中使用 fo-dicom 3.0.2 和 C# 從 DICOM 文件中讀取放射治療計划(RT 計划)。

多虧了 DICOM 編輯器,我知道存儲在不同DicomTags中的值,但是我無法訪問我試圖讀取DicomTag.BeamDose的所有Tag段,並且我知道該值不為空。

string storedfile = file_path + file_name;
Dicom.DicomFile file = Dicom.DicomFile.Open(@storedfile);

MessageBox.Show(file.Dataset.Get<string>(Dicom.DicomTag.BeamDose));

運行代碼會引發異常並顯示消息:

(300a,0084) 在數據集中找不到。

如前所述,我知道它在那里,但嵌套在序列中的序列項中。 接下來我嘗試分析存儲BeamDose的序列。

var NewDataSet = file.Dataset.Get<Dicom.DicomItem>(Dicom.DicomTag.FractionGroupSequence);

但是下一次處理這個變量的機會並沒有把我帶到序列的下一個層次。

我應該如何使用 fo-dicom 從序列中讀取嵌套/子 DICOM 標簽?

您查找標簽的方式僅在 DICOM 標簽樹的最外層層次結構中查找。 要正確搜索標簽,您需要先訪問正確的序列,然后是適當的項目,然后您應該在該項目中搜索標簽。 DICOM 數據集可能包含可以進一步嵌套的序列(由 VR SQ 識別)。

以下是從這里復制的:

VR 標識的“SQ”應用於具有由零個或多個項目組成的序列的值的數據元素,其中每個項目包含一組數據元素。 SQ 提供了一種靈活的編碼方案,可用於重復數據元素集的簡單結構,或通常稱為文件夾的更復雜信息對象定義的編碼。 SQ 數據元素也可以遞歸使用以包含多級嵌套結構。

出現在 SQ 數據元素中的項目應是一個有序集合,其中每個項目都可以通過其序數位置進行引用。 每個項目應隱含地分配一個順序位置,從序列中第一個項目的值 1 開始,並隨着每個后續項目遞增 1。 序列中的最后一項的順序位置應等於序列中的項數。

以下是從這里復制的:

DICOM 允許數據集包含其他嵌套數據集,這些數據集被編碼為“序列”。 這種結構的要點是允許重復數據組,因此雖然此類序列通常只包含一個數據集,但格式的定義使得每個序列都包含一組數據集。 當然,這種結構非常適合遞歸,並且一些 DICOM IOD(例如 Structured_Reporting 和 Radiotherapy_Extensions)可以使用嵌套 5 或 6 層深的序列!

序列的格式如下所示:[圖片][3]


足夠的理論。 以下是如何讀取序列中的嵌套標簽:

var value = file.Dataset.Get<DicomSequence>(DicomTag.FractionGroupSequence).Items[0].Get<string>(DicomTag.BeamDose);

有關更多詳細信息,請參閱線程。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM