0

我是 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.

我也参考了这些链接

  1. https://www.visitusers.org/index.php?title=VtkFloatArray_from_STL_vector

  2. 如何在 vtk 中可视化二维双精度数组?

     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);
4

0 回答 0