[英]DICOMDir file getting corrupted after save with fo-dicom
我在將文件添加到DICOMDir時遇到問題。 基於此示例,我成功創建了一系列圖像並將其保存到磁盤。 然后,我嘗試將該文件添加到DICOMDIR,以便Dir引用新文件,並且盡管保存成功,但是當我嘗試再次打開DICOMDir及其系列時,我得到一個“標記:(0088,0200 )在數據集中找不到”)。
代碼如下:
var dataset = new DicomDataset();
this.FillDataset(dataset); //this function copies several Tag values of an already existing DICOM Series file, such as Patient information
dataset.Add(DicomTag.PhotometricInterpretation, PhotometricInterpretation.Rgb.Value);
dataset.Add(DicomTag.Rows, (ushort)rows);
dataset.Add(DicomTag.Columns, (ushort)columns);
var pixelData = DicomPixelData.Create(dataset, true);
pixelData.AddFrame(buffer);
var dicomfile = new DicomFile(dataset);
var pathImage = Path.Combine(dirImages.FullName, imageFileName);
dicomfile.Save(pathImage); //Image is saved fine and it's well formed, I've checked opening it with an online DICOM viewer
var dicomdirPath = Path.Combine(studyPath, Constants.DICOMDIRFileName);
var dicomdir = DicomDirectory.Open(dicomdirPath);
dicomdir.AddFile(dicomfile, $@"Images\{imageFileName}");
dicomdir.Save(dicomdirPath); //this executes without problems and the DICOMDIR is saved
這是系列的打開方法:
var dicomDirectory = await DicomDirectory.OpenAsync(dicomdirPath);
foreach (var patientRecord in dicomDirectory.RootDirectoryRecordCollection)
{
foreach (var studyRecord in patientRecord.LowerLevelDirectoryRecordCollection)
{
foreach (var seriesRecord in studyRecord.LowerLevelDirectoryRecordCollection)
{
foreach (var imageRecord in seriesRecord.LowerLevelDirectoryRecordCollection)
{
var dicomDataset = imageRecord.GetSequence(DicomTag.IconImageSequence).Items.First(); //This line works fine before saving the image in the method above, but throws when opening the same study
//Load data and series from dataset
}
}
}
}
我不知道是否丟失了有關保存DICOMDir文件的內容,或者是否出錯。
您嘗試訪問顯然不存在的IconImageSequence(0088,0200)。 DicomDir僅包含圖像的一些主要數據。 將圖像添加到dicomdir時,由您決定是否要添加其他信息。 圖標是fo-dicom不會自動添加的那些可選信息之一。 DicomDir允許包含一個小圖標,以顯示是否要快速顯示一些預覽。
實際上, imageRecord
應該包含您可能需要的所有信息,例如instanceuid或filename等。
我不知道為什么在使用fo-dicom存儲文件之前代碼行運行良好。 我假設已經使用其他包含Icon的應用程序創建了DICOMDIR? 然后當您到達新添加的條目時,foreach崩潰。
您可以在將新實例添加到DICOMDIR時自己添加一個Icon,也可以添加“ if imageRecord.TryGetSequece(iconImageSequence,out seq)..”之類的檢查以處理沒有圖標的情況。
我建議還是添加檢查,因為有一天您可能會閱讀DICOMDIR並參考一些結構化報告,並且那些結構化報告沒有像素數據,因此不會包含圖標。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.