使用 ndarrays.js nodejs 将 Int16Array 转换为 ndarray

Convert a Int16Array to a ndarray using ndarrays.js nodejs

我有 245 张来自 here, each of size 512x512. I was able to create a Int16Array out of them which is of size 512*512*245 using the node-vtk 模块的 Dicom 图像。

现在的问题是,如何使用 ndarray.js 将此类型数组转换为适当的体积。我需要这样做,这样我才能 select 系列中的一部分并用它做点什么。

我试过了:

// Get the dicom series output
var vtkVolume = reader.getOutput( );

// Get the pointData
var vtkVolumePointData = vtkVolume.getPointData( ); 

// Get arrayData as vtkDataArray{}
var vtkVolumeArray = vtkVolumePointData.getArray( 0 );

// SafeDownCast it
var tmp = ( new vtk[ vtkVolumeArray.getClassName( ) ] ).safeDownCast( vtkVolumeArray ); // Safe cast it down

// Custom function that was provided which will give you the 512*512*245 Int16Array
var volume_buffer = tmp.getBuffer( );

var volume = ndarray(volume_buffer,[512,512,245]);
var slice = volume.pick(null,null,115); 

// Display the slice using an external library like plotly.js

当我尝试此操作时,图像显示不正确(显示为黑色背景的像素化线条)。

我还尝试了另一种方法,我使用一个名为 daikon.js 的库,它允许我加载图像、获取每个图像的特定数组并显示它。但是当我尝试从所有这些中创建 volume 时,它就是行不通。

有没有办法解决这个问题并将图像正确加载到 ndarray 中?

好的,我能够修复它,问题是存储时数组的形状。我不得不将它的顺序更改为:

var volume = ndarray(volume_buffer,[245,512,512]);
var slice = volume.pick(115,null,null); 

这给出了正确的图像并且显示正确。