图像数据在ITK和VTK之间转换

来源:互联网 发布:广电网络个人工作总结 编辑:程序博客网 时间:2024/05/21 11:35

由于ITK没有提供可视化功能,所以进行图像处理时,经常将ITK和VTK一起使用。图像数据的转换是使用这两个工具包的基础。

转换功能是由ITK工具包提供的接口。使用时需要引用的头文件如下:

#include "itkVTKImageToImageFilter.h"#include "itkImageToVTKImageFilter.h"

下面是一个简单的例子:

    // --[1]读图    vtkSmartPointer<vtkJPEGReader> reader=            vtkSmartPointer<vtkJPEGReader>::New();    reader->SetFileName("E:/ellisp2.jpg");    reader->Update();
    //[1]    //[2] --类型转换     vtkSmartPointer<vtkImageCast> luminamceFiltr=                vtkSmartPointer<vtkImageCast>::New();    cast->SetInputData(reader->GetOutput());    cast->SetOutputScalarTypeToUnsignedShort();    cast->Update();    //[2]    //[3] --VTK=>ITK    typedef itk::VTKImageToImageFilter<UShortImage2DType> VTKTOITKFilterType;    VTKTOITKFilterType::Pointer ITKFilter=VTKTOITKFilterType::New();    ITKFilter->SetInput(cast->GetOutput());    ITKFilter->UpdateLargestPossibleRegion();    ITKFilter->Update();    //[3]    //[4] --Median    typedef itk::MedianImageFilter<UShortImage2DType,UShortImage2DType> MedianFilterType;    MedianFilterType::Pointer MedianFilter=MedianFilterType::New();    MedianFilter->SetInput(ITKFilter->GetOutput());    UShortImage2DType::SizeType indexRadius;    indexRadius[0]=2;    indexRadius[1]=2;    MedianFilter->SetRadius(indexRadius);    //[4]    //[5] ITK=>VTK    typedef itk::ImageToVTKImageFilter<UCharImage2DType> ITKTOVTKFilterType;    ITKTOVTKFilterType::Pointer VTKFilter=ITKTOVTKFilterType::New();    VTKFilter->SetInput(DilateFilter->GetOutput());    VTKFilter->Update();    //[5]    // --[6]show Image    ImageView->SetInputData(VTKFilter->GetOutput());    ImageView->SetupInteractor(Iren);    ImageView->SetColorLevel(127.5);    ImageView->SetColorWindow(255);    ImageView->SetSliceOrientationToXY();    ImageView->Render();    //[6]    Iren->Start();


1 0