我有来自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中?
答案 0 :(得分:0)
好的,我能够修复它,问题是存储时数组的形状。我不得不改变它的顺序:
var volume = ndarray(volume_buffer,[245,512,512]);
var slice = volume.pick(115,null,null);
这样可以得到正确的图像并且显示正确。