1 简单的读取
简单的读取只需要 itkImageFileReader.h
以及 itkImageFileWriter.h
#include "itkImage.h"
#include "itkImageFileReader.h"
#include "itkImageFileWriter.h"
int main(int argc,char ** argv){
typedef itk::Image<unsigned short,2> ImageType;
typedef itk::ImageFileReader<ImageType> ReaderType;
typedef itk::ImageFileWriter<ImageType> WriterType;
ReaderType::Pointer reader=ReaderType::New();
WriterType::Pointer writer=WriterType::New();
reader->SetFileName(argv[1]); //要读取的文件名
writer->SetFileName(argv[2]); //写入的文件名
writer->SetInput(reader->GetOutput());
try{
writer->Update();
}catch(itk::ExceptionObject &err){
std::cerr<<"ExceptionObject Caught"<<std::endl;
std::cerr<<err<<std::endl;
return EXIT_FAILURE;
}
return EXIT_SUCCESS;
}
2 RGB图像的读取
RGB图像只要设置图像的像素为RGBPixel
即可
...//修改
#include "itkRGBPixel.h"
typedef itk::RGBPixel<unsigned short> PixelType;
typedef itk::ImageType<PixelType,2> ImageType;
....//下面的相同
3 图像的显示 ITKtoVTK
有两种方法
QuickView
CMakeLists.txt
cmake_minimum_required(VERSION 2.8)
cmake_policy(SET CMP0020 NEW)
project(QuickViewDemo)
find_package(ITK REQUIRED)
include(${ITK_USE_FILE})
if (ITKVtkGlue_LOADED)
find_package(VTK REQUIRED)
include(${VTK_USE_FILE})
else()
find_package(ItkVtkGlue REQUIRED)
include(${ItkVtkGlue_USE_FILE})
set(Glue ItkVtkGlue)
endif()
add_executable(QuickViewDemo QuickViewDemo.cxx)
target_link_libraries(QuickViewDemo
${Glue} ${VTK_LIBRARIES} ${ITK_LIBRARIES})
QuickViewDemo.cxx
#include "itkImage.h"
#include "itkImageFileReader.h"
#include "itkRescaleIntensityImageFilter.h"
#include "QuickView.h"
int main(int argc, char *argv[])
{
typedef itk::Image<unsigned char, 2> ImageType;
typedef itk::ImageFileReader<ImageType> ReaderType;
ReaderType::Pointer reader = ReaderType::New();
reader->SetFileName(argv[1]);
typedef itk::RescaleIntensityImageFilter< ImageType, ImageType > RescaleFilterType;
RescaleFilterType::Pointer rescaleFilter = RescaleFilterType::New();
rescaleFilter->SetInput(reader->GetOutput());
rescaleFilter->SetOutputMinimum(0);
rescaleFilter->SetOutputMaximum(255);
QuickView viewer;
viewer.AddImage(reader->GetOutput());
viewer.AddImage(rescaleFilter->GetOutput());
viewer.Visualize();
return EXIT_SUCCESS;
}
itkImageToVTKImageFilter
ImageToVTKImageFilter.cxx
#include <itkImage.h>
#include <itkImageFileReader.h>
#include <itkImageToVTKImageFilter.h>
#include "vtkVersion.h"
#include "vtkImageViewer.h"
#include "vtkImageMapper3D.h"
#include "vtkRenderWindowInteractor.h"
#include "vtkSmartPointer.h"
#include "vtkImageActor.h"
#include "vtkInteractorStyleImage.h"
#include "vtkRenderer.h"
#include "itkRGBPixel.h"
int main(int argc, char *argv[])
{
typedef itk::Image<itk::RGBPixel<unsigned char>,