Medical Imaging Interaction Toolkit  2018.4.99-389bf124
Medical Imaging Interaction Toolkit
mitkWithITKAndVTK.cpp
Go to the documentation of this file.
1 /*============================================================================
2 
3 The Medical Imaging Interaction Toolkit (MITK)
4 
5 Copyright (c) German Cancer Research Center (DKFZ)
6 All rights reserved.
7 
8 Use of this source code is governed by a 3-clause BSD license that can be
9 found in the LICENSE file.
10 
11 ============================================================================*/
12 #include <itkDiscreteGaussianImageFilter.h>
13 #include <itkImage.h>
14 #include <itksys/SystemTools.hxx>
15 
16 #include <mitkIOUtil.h>
17 #include <mitkImageAccessByItk.h>
18 #include <mitkImageCast.h>
20 
21 #include <vtkImageViewer.h>
22 #include <vtkRenderWindowInteractor.h>
23 
28 int main(int /*argc*/, char **argv)
29 {
30  // MITK: Read a .pic.gz file, e.g. Core/Code/Testing/Data/Pic3D.pic.gz from
31  // disk
32  const char *filename = argv[1];
33 
34  mitk::Image::Pointer mitkImage;
35  try
36  {
37  mitkImage = mitk::IOUtil::Load<mitk::Image>(filename);
38  }
39  catch (const std::exception &e)
40  {
41  MITK_WARN << "Could not open file " << filename;
42  return EXIT_FAILURE;
43  }
44 
45  // ITK: Image smoothing
46  // Create ITK image, cast from MITK image
47  typedef itk::Image<short, 3> ImageType;
48  ImageType::Pointer itkImage = ImageType::New();
49  mitk::CastToItkImage(mitkImage, itkImage);
50 
51  typedef itk::DiscreteGaussianImageFilter<ImageType, ImageType> FilterType;
52  FilterType::Pointer filter = FilterType::New();
53  filter->SetInput(itkImage);
54  filter->SetVariance(2);
55  filter->SetMaximumKernelWidth(5);
56 
57  filter->Update(); // run filter
58 
59  // reimport filtered image data
60  mitk::CastToMitkImage(filter->GetOutput(), mitkImage);
61 
62  // VTK: Show result in renderwindow
63  vtkImageViewer *viewer = vtkImageViewer::New();
64  vtkRenderWindowInteractor *renderWindowInteractor = vtkRenderWindowInteractor::New();
65  viewer->SetupInteractor(renderWindowInteractor);
66  viewer->SetInputData(mitkImage->GetVtkImageData());
67  viewer->Render();
68  viewer->SetColorWindow(255);
69  viewer->SetColorLevel(128);
70  renderWindowInteractor->Start();
71 
72  renderWindowInteractor->Delete();
73  viewer->Delete();
74 
75  return EXIT_SUCCESS;
76 }
int main(int, char **argv)
itk::Image< unsigned char, 3 > ImageType
#define MITK_WARN
Definition: mitkLogMacros.h:19
void CastToMitkImage(const itk::SmartPointer< ItkOutputImageType > &itkimage, itk::SmartPointer< mitk::Image > &mitkoutputimage)
Cast an itk::Image (with a specific type) to an mitk::Image.
Definition: mitkImageCast.h:74
void MITKCORE_EXPORT CastToItkImage(const mitk::Image *mitkImage, itk::SmartPointer< ItkOutputImageType > &itkOutputImage)
Cast an mitk::Image to an itk::Image with a specific type.