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

时间:2016-02-18 19:10:12

标签: javascript node.js multidimensional-array vtk

我有来自this post的245张Dicom图像,每张图片大小为512x512。我可以使用here模块创建一个大小为512*512*245的{​​{1}} // 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

现在的问题是,如何使用node-vtk将此类型数组转换为适当的卷。我需要这样做,以便我可以在系列中选择一个切片并用它做一些事情。

我试过了:

volume

当我尝试这个时,图像不会正确显示(带有黑色背景的像素化线)。

我还尝试了另一种方法,我使用一个名为ndarray.js的库,它允许我加载图像,获取每个图像的特定数组并显示它。但是当我尝试从它们中创建{{1}}时,它只是不起作用。

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

1 个答案:

答案 0 :(得分:0)

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

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

这样可以得到正确的图像并且显示正确。