【发布时间】:2020-12-09 21:39:06
【问题描述】:
目前,当我从这个 dicom 文件中获取像素数据时,它似乎与提供的图像分辨率不匹配。
例如,图像的宽度和高度可能是: 宽:600,高:430 这会让我认为预期的总大小将是 258,000 个元素 但是当我得到像素数据时,它只有 50104 个元素。
令我困惑的是,数组中的元素比文件分辨率少。我期待如果存在不匹配,这可能是因为所有帧都被分组到同一个缓冲区中,我可能需要按帧数细分像素数据,但没有足够的元素来覆盖图像解析度?我有点不知所措。
dicom 文件像素数据由该类提供:
https://fo-dicom.github.io/html/cfa9fe02-c413-ea1f-52df-dd1a6f5b71cf.htm
其中每个像素都是一个字节,用于查找颜色查找表的索引。
代码示例
protected override byte[] GetPixelDataInternal(GrayscalePixelDataU8 pixelData, DicomDataset dicomDataset)
{
long totalDimensions = pixelData.Width * pixelData.Height;
DicomPixelData header = DicomPixelData.Create(dicomDataset);
// These uncompressed framesize matches total dimensions
Debug.Log($"Uncompressed Frame Size: {header.UncompressedFrameSize}");
Debug.Log($"GetPixelDataInternal: {pixelData.Width} x {pixelData.Height} Total: {totalDimensions}");
// pixelData.Data.Length does not match total length
Debug.Log($"PixelDataLength: {pixelData.Data.Length} ");
// It says it is not lossy.
Debug.Log($"IsLossy: {header.IsLossy}");
// ...
}
期望的行为
使用 fo-dicom 库打开和渲染具有光度解释 PaletteColor 的多帧 dicom 图像。
【问题讨论】:
-
你确定数据没有被压缩吗?
-
@ChristopherOezbek,你如何检查数据是否被压缩?我试图检查它是否是“有损”,但它返回错误。不确定是否还有其他我应该寻找的东西?
-
我确实看到可能存在 RLE 压缩? dicom.nema.org/medical/dicom/2016c/output/chtml/part05/… 如果是这种情况,我不太确定如何检测或处理。