由于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版权协议,转载请附上原文出处链接和本声明。