web下载数据为ArrayBuffer如何使用(连接unit8格式与float32格式) nifti标注

数据获取

XMLHttpRequest() 通过XMLHttpRequest()获取nifti文件中的数据,获得到一个ArrayBuffer数组

数据获取

nifti有头部和数据部分

  1. 头部解析 头部一般为348字节,根据头部格式进行解析
  2. 数据部分: 根据头部的128字节处获得偏移值,一般偏移值为352字节;

标注

进行标注要对数据部分进行改写,而头部不需要动,若需要标签,要的到value的最小值和最大值,先将数据部分全部设为最小值,然后根据标注需要将特定部分的value值改为自己需要的值

ArrayBuffer简介

ArrayBuffer 对象用来表示通用的、固定长度的原始二进制数据缓冲区
高深点说,arrbuffer可以理解为一段内存;通俗点的话就是arrbuffer是一个数组,只不过这个数组有点特殊,你只能看不能改。
虽然将数据从原始数据摘出来,但是将其进行BUFFER转换过后转换后的buffer数组与原数组长度相同
比如:

获得的nifti原数据

获得的头部数据

虽然为unit8array长度只有352,但ArrayBuffer长度与原数据长度相同
虽然为unit8array长度只有352,但ArrayBuffer长度与原数据长度相同

头部转化为Buffer

头部转化为Buffer,长度变为原数据相同,虽然只有前352(头部实际长度)位有数据,其余全为0
头部转化为Buffer,长度变为原数据相同,虽然只有前352(头部实际长度)位有数据,其余全为0

ArrarBuffer 的使用

由于在web上进行标注,所以需要先将data部分转换成Float32格式,可以在canvas上绘制。
由于对头部进行解析,将头部化为unit8形式
数据部分为float32格式,最终获得标注nifti文件过的文件需要 将unit8格式与float32格式进行连接
`先将头部unit8格式转换为buffer格式,在将其转换成float32格式,与数据部分相同,这样可以进行float32同格式的链接,需要注意不能将头部和数据部分都换成buffer,因为buffer数组不可改,不能进行链接
并且头部转换为buffer之后,其长度与原数据(头部与数据部分之和)长度相同,转化为float32格式也为总长度,因此连接时应从数据部分的偏移量开始!

  var arr4=arr1.buffer;//arr1 unit8
        var arr3= new Float32Array(arr4);
         var o=88;//偏移值为352,化作float32为88,不准确,应根据头部数据设置
         for(var d=0;d<arr2.length;d++)//arr2已经标注且进行修改,将头部与进行修改过的数据部分进行连接
         {
           arr3[o]=arr2[d];
           if(d===5789784)
           {
             console.log("验证");
             console.log(arr3[o]);
             console.log(arr2[d]);
             console.log(o);
           }
           o++;
         }
         var arr0=arr3.buffer;//由于通过xhtmlrequest获得的nifti数据为ArrayBuffer形式,在这里进行转换为ArrayBuffer形式,最终可以保存成nifti文件的数组

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值