由于vtk、itk显示图像时y轴相反,需要做一次翻转,这里介绍两种方法对于序列图像实现翻转。
1)vtkImageFlip类
vtkSmartPointer<vtkImageFlip>flip = vtkSmartPointer<vtkImageFlip>::New();
flip->SetInputData(itkTovtkImageFilter->GetOutput());
flip->SetFilteredAxis(1);//y轴为1,x轴为0,z轴为2;
flip->Update();
2)通过vtkImageReslice 中的SetResliceTransform函数,实现对体数据的变化;
vtkSmartPointer<vtkTransform>VolTrans = vtkSmartPointer<vtkTransform>::New();
VolTrans->RotateY(180);
VolTrans->Translate(-2 * center[0], 0, -2 * center[2]);
reslice->SetAutoCropOutput(1);
reslice->Update();
vtkSmartPointer<vtkImageReslice>reslice= vtkSmartPointer<vtkImageReslice>::New();
reslice->SetInputData(itkTovtkImageFilter->GetOutput());
reslice->SetResliceTransform(VolTrans);
。。。。。。。
这两种的不同:
vtkImageReslice中的SetResliceTransform:设置简单,内存占用少很多,特别是序列图像的数量大的时候,只能用这个方法; | good |
vtkImageFlip:定义简单,运行时占用内存大,图片较多时,无法运行 | , |