使用 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);
这给出了正确的图像并且显示正确。
我有 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);
这给出了正确的图像并且显示正确。