Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #ifndef MITKITKIMAGETOIMAGEFILTERADAPTER_TXX
00020 #define MITKITKIMAGETOIMAGEFILTERADAPTER_TXX
00021
00022 #include "mitkItkImageToImageFilterAdapter.h"
00023 #include "mitkImageToItkMultiplexer.h"
00024 #include "mitkImage.h"
00025 #include <vtkLinearTransform.h>
00026
00027 namespace mitk
00028 {
00029
00030 template <typename TPixel>
00031 ItkImageToImageFilterAdapter< TPixel>::ItkImageToImageFilterAdapter()
00032 : m_FirstFilter(NULL), m_LastFilter(NULL)
00033 {
00034 }
00035
00036 template <typename TPixel>
00037 ItkImageToImageFilterAdapter< TPixel>::~ItkImageToImageFilterAdapter()
00038 {
00039 }
00040
00044 template <typename TPixel>
00045 void ItkImageToImageFilterAdapter< TPixel>::GenerateOutputInformation()
00046 {
00047 itkDebugMacro(<<"GenerateOutputInformation()");
00048 }
00049
00050 template <typename TPixel>
00051 void ItkImageToImageFilterAdapter< TPixel>::GenerateData()
00052 {
00053 mitk::Image::Pointer outputImage = this->GetOutput();
00054 typename ImageToImageFilter::InputImageConstPointer inputImage = this->GetInput();
00055 if(inputImage.IsNull())
00056 {
00057 outputImage = NULL;
00058 return;
00059 }
00060
00061 if(m_FirstFilter.IsNull() || m_LastFilter.IsNull())
00062 {
00063 outputImage = const_cast<mitk::Image*>(inputImage.GetPointer());
00064 return;
00065 }
00066
00067 mitk::Image::Pointer inputImageMitk = const_cast<mitk::Image*>(inputImage.GetPointer());
00068 typename ItkImageType::Pointer itkImage = ItkImageType::New();
00069
00070 CastToItkImage(inputImageMitk, itkImage);
00071
00072 if (itkImage.IsNull())
00073 {
00074 std::cout << " can't convert input image to itk" << std::endl;
00075 outputImage = const_cast<mitk::Image*>(inputImage.GetPointer());
00076 return;
00077 }
00078
00079 m_FirstFilter->SetInput(itkImage);
00080 try
00081 {
00082
00083 m_LastFilter->UpdateLargestPossibleRegion();
00084 }
00085 catch( itk::ExceptionObject & excep )
00086 {
00087 std::cerr << "mitk::ItkImageToImageFilterAdapter: Exception while executing ITK filter" << std::endl;
00088 std::cerr << excep << std::endl;
00089 }
00090
00091
00092
00093
00094
00095
00096
00097 typename ItkImageType::Pointer itkOutputImage;
00098 itkOutputImage = m_LastFilter->GetOutput();
00099
00100
00101 CastToMitkImage(itkOutputImage, outputImage);
00102
00103 outputImage->SetGeometry(static_cast<Geometry3D*>(inputImage->GetGeometry()->Clone().GetPointer()));
00104 }
00105
00106
00107 template <typename TPixel>
00108 void ItkImageToImageFilterAdapter<TPixel>::SetSingleFilter(typename ImageToImageFilterType::Pointer filter)
00109 {
00110 SetFirstFilter(filter);
00111 SetLastFilter(filter);
00112 }
00113 }
00114 #endif // of MITKITKIMAGETOIMAGEFILTERADAPTER_TXX