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