无法显示nifti图像

时间:2013-08-29 14:00:46

标签: xtk

我有一个tensor_fa nifti图像,数据类型为FLOAT32,值为[0,1]。最初尝试使用xtk边缘库加载本地脚本。这显示了一块空白画布。我也尝试增加范围(乘以100到范围[0,100])并将此倍增图像更改为INT32。尝试使用切片时,原始图像会加载"但是任何阈值处理都会在任何地方显示" drop文件。信息。对于图像乘以100也是如此.INT32图像允许阈值处理,但仍然不显示图像。我已经验证了fslview和mricron(nifti观众)中的所有三张图片。

此外,我已尝试将音量最小值/最大值设置为0/1,将下限/上限阈值设置为0/1。

基本的nifti标题信息:

data_type      FLOAT32 or INT32
dim1           121
dim2           145
dim3           121
dim4           1
datatype       16 or 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不允许我发布第三个链接。

任何建议表示赞赏。

进一步跟进:

看来数据不是真正的[0,1]。它含有NaNs。当我将NaNs转换为真值(例如-1)时,可以显示图像。但是,我需要使用未修改的图像。有人会认为volume.lowerThreshold和upperThreshold可以解决问题。

进一步跟进#2:

我一直在浏览Chrome的javascript工具。在我正在使用的页面上,三个图像中的第一个(INT16)我可以做一个volume.filedata并接收一个ArrayBuffer。第二个和第三个(都是FLOAT32)返回NULL。

1 个答案:

答案 0 :(得分: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 ];

};

我比在每个文件解析器中进行特定检查更喜欢这个解决方案。 这听起来不错吗?

由于