我有一个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。
答案 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 ];
};
我比在每个文件解析器中进行特定检查更喜欢这个解决方案。 这听起来不错吗?
由于