0

EVIL DICOM イメージ リーダーを使用しています。一部のファイルでは問題なく動作しますが、一部のファイルで次のエラーが表示されます。目的の配列の長さが十分ではありませんでした。destindex と長さ、および配列の下限を確認してください。購入した元の Web サイトが見つかりません。プログラム。任意の支援をいただければ幸いです。

4

1 に答える 1

0

Evil DICOM コード (バージョン 0.5.7) を見ると、ImageMatrix完全には計画されていない方法でコンストラクターを使用していると思います。

参照しているコンストラクターは、各画像のサイズがすべての画像で同じであると想定されている DICOM 画像ファイルの配列を取ります。

構築時に、Image配列プロパティは、1 つの画像のサイズにプライベート メソッド内の DICOM 画像配列の長さを掛けた値に等しくなりますIntializeMatrix

Image次に、コンストラクターはすべての画像ファイルをループし、各ファイルのピクセル データをメソッドのプロパティに挿入しますAppendImageToMatrix。でのコピーされたピクセル データの開始位置はImage、DICOM ファイルによって決定されますImageNumber

ImageNumberが配列のサイズに対して大きすぎる場合Image、ピクセル データは配列の位置 0 にコピーされImageます。

でも!開始位置が配列の長さと等しい場合 (これはファイル数よりちょうど 1 大きい場合に発生します)、開始位置は変更されず、存在しない位置に書き込もうとします。配列!ImageImageNumberImage

これが行われているのは の 4 行目でAppendImageToMatrix、次のようになっています。

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

ライブラリを自分で構築している場合は、>演算子を演算子に変更する>=と、アプリケーションは少なくともスローしなくなります。または、ピクセル データのコピー全体で、より安全な処理を検討することもできます。ただし、ここで詳しく説明する余地はありません:-)

Evil DICOM の更新されたバージョンでImageMatrixクラスをすぐに見つけることができません。ただし、古いコードまたは新しいコードで問題が発生した場合は、Evil DICOM Github リポジトリの[問題] タブでこれらの問題を報告することを検討してください。

UPDATEプロパティが DICOM 属性インスタンス番号、タグ (0020,0013)ImageNumberと等しいことに注意してください。

于 2012-08-25T16:53:30.153 に答える