邪恶的DICOM -destination数组不够长,检查destindex和长度以及数组的下限

时间:2012-08-25 02:34:45

标签: asp.net-mvc-3 dicom evil-dicom

我正在使用EVIL DICOM图像阅读器,它适用于某些文件,但有些文件给我这个错误: 目标数组不够长,检查destindex和length以及数组的下限 我找不到我购买该程序的原始网站。 非常感谢任何协助。

1 个答案:

答案 0 :(得分:0)

通过查看Evil DICOM代码(版本0.5.7),我假设您正在以一种未完全计划的方式使用ImageMatrix构造函数。

您要引用的构造函数采用DICOM图像文件数组,其中每个图像的大小应该对所有图像都相同。

构造时,Image数组属性的大小等于一个图像的大小乘以私有方法IntializeMatrix中DICOM图像数组的长度。

接下来,构造函数遍历所有图像文件,并将每个文件中的像素数据插入Image方法中的AppendImageToMatrix属性。 Image中复制的像素数据的起始位置由DICOM文件ImageNumber确定。

如果ImageNumber相对于Image数组的大小过高,则会将像素数据复制到Image数组中的位置0。

但是!如果起始位置等于Image数组的长度,如果ImageNumber恰好是一个,则会发生这种情况超过文件数量,不会修改起始位置,并且会尝试写入Image数组中不存在的位置!

发生这种情况的行是AppendImageToMatrix中的第四行,其中包含:

if (offset > Image.Length) { offset = 0; }

如果您自己构建库,可能需要将>运算符更改为>=运算符,然后应用程序将至少不抛出。或者,您可以考虑完全像素数据复制的故障安全处理。但是,这里没有详细说明: - )

我无法立即找到updated version of Evil DICOM中的ImageMatrix类。但是,如果您遇到旧代码或新代码的问题,请考虑在Evil DICOM Github存储库的Issues tab上报告这些问题。

更新请注意,ImageNumber属性等于DICOM属性实例编号,标记(0020,0013)。