我是 vtk 数组概念的新手。我有一个大小为(1127 x 803 x 49)的一维数组。它是一个图像数组,由49 个图像组成,每个图像有 1127 行和 803 列。 数组的数据类型是uint16,字节顺序是LittleEndian。
我的问题是
1)如何使用 VTK 或 ITK 将此数组显示为 49 个单独的图像?或者
2)如何使用VTK或ITK将全部49张图像显示为单个图像?(以不超过 3 或 4 秒的效率为准,以便我之后可以将其转换为 DICOM 图像。)
我已经尝试过。
由于 VTK 接受向量,我已将数组复制到std::vector
std::vector<uint16_t> valvect;
valvect.assign(val1, val1 + (1127 * 803 * 49));//where val1 is the 1D array.
我也参考了这些链接
https://www.visitusers.org/index.php?title=VtkFloatArray_from_STL_vector
-
vtkFloatArray *arr = vtkFloatArray::New(); arr->SetNumberOfComponents(nComponents); arr->SetArray(&this->vec->operator[](0), this->vec->size(), 1);
但我不知道如何走得更远。我该如何修改它。
更新:
我已经使用 DCMTK 库进行了尝试,它正在生成 dicom 文件,但数组读取不正确,我得到了一些颗粒状的图像。这是我的代码。
rrawdatabuffer //my array of type uint16_t *
DcmFileFormat fileformat;
DcmDataset *dataset = fileformat.getDataset();
OFCondition status = dataset->putAndInsertUint16Array(DCM_PixelData,
rrawdatabuffer, 803*1127*49, false);
status = fileformat.saveFile("test.dcm", EXS_LittleEndianExplicit);