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

由于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();



版权声明:本文为cfqcfqcfqcfqcfq原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。