对于一些测试,我正在尝试操作PixelData
以 dicom 格式存储的 CT 图像的元素,并将其写回到C# 中的Fellow Oak Dicom文件中。经过一番研究,我发现我要处理的矩阵是Buffer
存储PixelData
在一个byte
-array 中的。所以我写了以下代码:
DicomFile ctFile = DicomFile.Open(image);
var pixDat = ctFile.Dataset.Get<byte[]>(DicomTag.PixelData);
for (int i = 0; i < pixData.Length; i++)
{
pixDat[i] = Convert.ToByte(200);
}
ctFile.Dataset.AddOrUpdate<byte[]>(DicomTag.PixelData, pixDat);
ctFile.Save("new file folder");
这是我的第一次尝试,我得到了一个Exception
atAddOrUpdate
命令,因为它无法将byte
-array 转换为 OB。阅读例如 Pianykh 的关于 DICOM 的书,OB 表示Other Byte String。但到目前为止,我无法将操纵的byte
-array 转换为 OB。当我尝试此代码段时:
DicomOtherByte dob = new DicomOtherByte(DicomTag.PixelData, pixDat);
ctFile.Dataset.AddOrUpdate<DicomOtherByte>(DicomTag.PixelData, dob);
Exception
仍然要求AddOrUpdate
无法将项目转换为 OB 。在 stackoverflow、git 中的 fo-dicom 文档或 google 中搜索,我仍然不知道如何处理它。所以我想知道如何将我的操纵矩阵转换为 OB,因为我认为DicomOtherByte
是 OB。
编辑:这Exception
是“无法使用 Dicom.DicomOtherByte 类型的值创建 OB 类型的 DICOM 元素” - System.InvalidOperationException
提前致谢。