我正在使用 EVIL DICOM 图像阅读器,它适用于某些文件,但某些文件给我这个错误:目标数组不够长检查 destindex 和长度以及数组的下限我找不到我购买的原始网站该程序。将不胜感激任何帮助。
1 回答
通过查看 Evil DICOM 代码(版本 0.5.7),我假设您正在以ImageMatrix
未完全计划好的方式使用构造函数。
您所指的构造函数采用一组 DICOM 图像文件,其中每个图像的大小应该对于所有图像都是相同的。
在构造时,Image
数组属性的大小等于一个图像的大小乘以私有方法中的 DICOM 图像数组的长度IntializeMatrix
。
接下来,构造函数遍历所有图像文件,并将每个文件中的像素数据插入到方法中的Image
属性中AppendImageToMatrix
。复制的像素数据在 DICOM 文件中的起始位置Image
由 DICOM 文件确定ImageNumber
。
如果ImageNumber
相对于数组的大小太高,则将Image
像素数据复制到Image
数组中的位置 0。
然而!如果起始位置等于Image
数组的长度,如果ImageNumber
恰好比文件数大一,就会发生这种情况,起始位置不会被修改,并且会尝试写入不存在的位置数组Image
!
发生这种情况的行是 中的第四行AppendImageToMatrix
,内容如下:
if (offset > Image.Length) { offset = 0; }
如果您自己构建库,您可能希望将运算符更改为>
运算>=
符,那么应用程序至少不会抛出。或者,您可以考虑对像素数据复制进行更安全的处理。不过,这里没有详细说明的空间:-)
我无法立即在Evil DICOMImageMatrix
的更新版本中找到该课程。但是,如果您在使用旧代码或新代码时遇到问题,请考虑在 Evil DICOM Github 存储库的“问题”选项卡上报告这些问题。
更新请注意,该ImageNumber
属性等于 DICOM 属性Instance Number,标记 (0020,0013)。