[英]Evil DICOM -destination array was not long enough check destindex and length and the array's lower bounds
我正在使用EVIL DICOM圖像讀取器,它與某些文件配合使用很好,但是某些文件給我以下錯誤:目標數組不夠長,請檢查destindex和長度以及數組的下限,我找不到我購買的原始網站該程序。 不勝感激。
通過查看Evil DICOM代碼(版本0.5.7),我假設您使用的ImageMatrix
構造函數不是完全計划的。
您所引用的構造函數采用一個DICOM圖像文件數組,其中每個圖像的大小對於所有圖像都應該是相同的。
構造后,在私有方法IntializeMatrix
,將Image
array屬性的尺寸確定為等於一幅圖像的大小乘以DICOM圖像數組的長度。
接下來,構造函數遍歷所有圖像文件,並將每個文件中的像素數據插入AppendImageToMatrix
方法的Image
屬性中。 復制的像素數據在Image
的開始位置由DICOM文件ImageNumber
確定。
如果ImageNumber
相對於Image
數組的大小太大,則將像素數據復制到Image
數組中的位置0。
然而! 如果起始位置等於 Image
數組的長度(如果ImageNumber
正好比文件數大ImageNumber
,則會發生此ImageNumber
),則起始位置將不會被修改,並且將嘗試寫入不存在的文件在Image
數組中的位置!
發生這種情況的行是AppendImageToMatrix
的第四行,內容為:
if (offset > Image.Length) { offset = 0; }
如果您是自己構建庫,則可能需要將>
運算符更改為>=
運算符,那么應用程序至少不會拋出異常。 或者,您可以考慮對像素數據復制進行更全面的故障保護。 盡管這里沒有詳細說明的余地,但:-)
我無法立即在Evil DICOM的更新版本中找到ImageMatrix
類。 但是,如果您在使用舊代碼或新代碼時遇到問題,請考慮在Evil DICOM Github存儲庫的“ 問題”選項卡上報告這些問題。
UPDATE請注意, ImageNumber
屬性等於DICOM屬性Instance Number標記(0020,0013)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.