0

データ型 FLOAT32 の値が [0,1] の tensor_fa nifti イメージがあります。当初、xtk エッジ ライブラリを使用してローカル スクリプトをロードしようとしました。これにより、空白のキャンバスが表示されました。また、範囲を増やして (範囲 [0,100] に 100 を乗算)、この乗算された画像を INT32 に変更しようとしました。スライスドロップを試すと、元のイメージが「ロード」されますが、しきい値を設定しようとすると、「ファイルをどこにでもドロップしてください」というメッセージが表示されます。画像を 100 倍した場合も同様です。INT32 画像ではしきい値処理が可能ですが、画像は表示されません。fslview と mricron (nifti ビューア) で 3 つの画像すべてを確認しました。

さらに、ボリュームの最小値/最大値を 0/1 に、下限/上限のしきい値を 0/1 に設定してみました。

基本的な nifti ヘッダー情報:

data_type FLOAT32 または INT32
ディム1 121
ディム2 145
ディム3 121
ディム4 1
データ型 16 または 8
pixdim1 1.5000000000
pixdim2 1.5000000000
pixdim3 1.5000000000
pixdim4 0.0000000000
cal_max 0.0000
cal_min 0.0000
file_type NIFTI-1+
scl_slope 1.000000
scl_inter 0.000000

画像は次のとおりです。

http://wagners.homeip.net/work/wrtensor_fa_orig.nii.gz (元画像)

http://wagners.homeip.net/work/wrtensor_fa.mul100.nii.gz (100 倍)

int としてのイメージは、wrtensor_fa.nii.gz という名前です。Stackoverflow で 3 番目のリンクを投稿できません。

任意の提案をいただければ幸いです。

さらなるフォローアップ:

データは実際には [0,1] ではないようです。NaN が含まれています。NaN を -1 などの真の値に変換すると、画像を表示できます。ただし、変更されていない画像で作業する必要があります。volume.lowerThreshold と upperThreshold でうまくいくと思う人もいるでしょう。

さらなるフォローアップ #2:

Chrome の JavaScript ツールをいじっています。私が作業しているページでは、3 つの画像 (INT16) の最初の画像で、volume.filedata を実行して ArrayBuffer を受け取ることができます。2 番目と 3 番目 (どちらも FLOAT32) は NULL を返します。

4

1 に答える 1

0

arrayMinMax 内で isNan() を使用するのはどうですか?

X.parser.prototype.arrayMinMax = function(data) {

  var _min = Infinity;
  var _max = -Infinity;

  // buffer the length
  var _datasize = data.length;

  var i = 0;
  for (i = 0; i < _datasize; i++) {

    if(!isNaN(data[i])) {

      var _value = data[i];
      _min = Math.min(_min, _value);
     _max = Math.max(_max, _value);

    }

  }

  return [ _min, _max ];

};

各ファイルパーサーで特定のチェックを行うよりも、このソリューションの方が気に入っています。いい感じですか?

ありがとう

于 2013-09-11T16:16:24.647 に答える