1. 程式人生 > >vtk序列切片影象實現翻轉的兩種方法

vtk序列切片影象實現翻轉的兩種方法

由於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:定義簡單,執行時佔用記憶體大,圖片較多時,無法執行