项目中为了保存分割的掩码图像mask,我想到了使用vtk格式的vtkStructuredPointsWriter输出基于vtkimagedata的mask,然后再用vtkStructuredPointsReader读入。但是里面遇到了一个问题,使用vtkImageMask对mask和源图像进行处理的时候,发现输出总是为空。怀疑是mask的问题,因为没有使用mask文件输入而是直接使用当前分割后的mask进行掩码处理不会发生这种情况。经过两天的时间,发现我又是漏了一句很重要的话。vtkwriter->SetFileTypeToBinary();加上这句话之后,对mask图像的读取不会发生像素为-1.#qnan0的情况了,这种情况为数值超出范围。然后就解决了这个问题。下面是源码。
输出vtk格式的volume
vtkSmartPointer<vtkStructuredPointsWriter > vtkwriter=vtkSmartPointer<vtkStructuredPointsWriter >::New();
vtkwriter->SetInput(this->m_vtk.mask);
vtkwriter->SetFileName(FilePathName);
vtkwriter->SetFileTypeToBinary();
vtkwriter->Write();
输入vtk格式的volume
vtkSmartPointer<vtkStructuredPointsReader > vtkreader=vtkSmartPointer<vtkStructuredPointsReader >::New();
vtkreader->SetFileName(FilePathName);
vtkreader->Update();