Medical Imaging Interaction Toolkit  2018.4.99-389bf124
Medical Imaging Interaction Toolkit
mitkImageToOpenCVImageFilter.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 
14 
15 #include <itkImportImageFilter.h>
16 #include <itkRGBPixel.h>
17 #include <mitkImageAccessByItk.h>
18 
19 namespace mitk{
20 
22  {
23  m_sliceSelector = ImageSliceSelector::New();
24  }
25 
27  {
28  }
29 
30 
32  {
33  m_Image = _Image;
34  }
35 
37  {
38  return m_Image.Lock();
39  }
40 
41 
43  {
44  if(image == nullptr)
45  {
46  MITK_WARN << "MITK Image is 0";
47  return false;
48  }
49  if(image->GetDimension() > 2 )
50  {
51  MITK_WARN << "Only 2D Images allowed";
52  return false;
53  }
54  return true;
55  }
56 
58  {
59  auto image = m_Image.Lock();
60 
61  if(!this->CheckImage(image))
62  return cv::Mat();
63 
64  try
65  {
69  (2) // dimensions
70  )
71  }
72  catch (const AccessByItkException& e) {
73  std::cout << "Caught exception [from AccessFixedTypeByItk]: \n" << e.what() << "\n";
74  return cv::Mat();
75  }
76  return m_OpenCVImage;
77  }
78 
79  template<typename TPixel, unsigned int VImageDimension>
80  void ImageToOpenCVImageFilter::ItkImageProcessing( itk::Image<TPixel,VImageDimension>* image )
81  {
82  m_OpenCVImage = itk::OpenCVImageBridge::ITKImageToCVMat(image);
83  }
84 
85  void ImageToOpenCVImageFilter::SetInputFromTimeSlice(Image::Pointer mitkImage, int timeStep, int slice)
86  {
87  m_sliceSelector->SetInput(mitkImage);
88  m_sliceSelector->SetSliceNr(slice);
89  m_sliceSelector->SetTimeNr(timeStep);
90  m_sliceSelector->Update();
91  this->SetImage(m_sliceSelector->GetOutput());
92  }
93 
94 } // end namespace mitk
void ItkImageProcessing(itk::Image< TPixel, VImageDimension > *image)
itk::SmartPointer< T > Lock() const
#define MITK_ACCESSBYITK_PIXEL_TYPES_SEQ
Definition: mitkConfig.h:26
DataCollection - Class to facilitate loading/accessing structured data.
mitk::WeakPointer< mitk::Image > m_Image
void SetInputFromTimeSlice(Image::Pointer mitkImage, int timeStep, int slice)
Convenient method to set a certain slice of a 3D or 4D mitk::Image as input to convert it to an openC...
static Pointer New()
bool CheckImage(mitk::Image *image)
get the input MITK image
void SetImage(mitk::Image *_Image)
set the input MITK image
itk::RGBPixel< unsigned short > USRGBPixelType
#define AccessFixedTypeByItk(mitkImage, itkImageTypeFunction, pixelTypeSeq, dimSeq)
Access a mitk-image with known type (pixel type and dimension) by an itk-image.
#define MITK_WARN
Definition: mitkLogMacros.h:19
unsigned int GetDimension() const
Get dimension of the image.
Definition: mitkImage.cpp:106
Image class for storing images.
Definition: mitkImage.h:72
mitk::Image::Pointer image
mitk::Image * GetImage()
get the input MITK image
Exception class thrown in AccessByItk macros.
itk::RGBPixel< unsigned char > UCRGBPixelType