00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #include <mitkImageCast.h>
00020 #include <itkImage.h>
00021 #include <itkCastImageFilter.h>
00022
00023 namespace mitk
00024 {
00025 #ifndef DOXYGEN_SKIP
00026 template < typename TPixel, unsigned int VImageDimension, class ItkOutputImageType >
00027 void _CastToItkImage2Access( itk::Image<TPixel, VImageDimension>* itkInputImage, itk::SmartPointer<ItkOutputImageType>& itkOutputImage)
00028 {
00029 typedef itk::Image<TPixel, VImageDimension> ItkInputImageType;
00030 if(typeid(ItkInputImageType) == typeid(ItkOutputImageType))
00031 {
00032 itkOutputImage = reinterpret_cast<ItkOutputImageType*>(itkInputImage);
00033 return;
00034 }
00035 typedef itk::CastImageFilter< ItkInputImageType, ItkOutputImageType > CastImageFilterType;
00036 typename CastImageFilterType::Pointer castImageFilter = CastImageFilterType::New();
00037 castImageFilter->SetInput( itkInputImage );
00038 castImageFilter->Update();
00039 itkOutputImage = castImageFilter->GetOutput();
00040 }
00041 #endif //DOXYGEN_SKIP
00042
00043 typedef itk::Image<double, 2> itkImageD2;
00044 typedef itk::Image<float, 2> itkImageF2;
00045 typedef itk::Image<int, 2> itkImageSI2;
00046 typedef itk::Image<unsigned int, 2> itkImageUI2;
00047 typedef itk::Image<short, 2> itkImageSS2;
00048 typedef itk::Image<unsigned short, 2> itkImageUS2;
00049 typedef itk::Image<char, 2> itkImageSC2;
00050 typedef itk::Image<unsigned char, 2> itkImageUC2;
00051
00052 InstantiateAccessFunctionForFixedDimension_1(_CastToItkImage2Access, 2, itk::SmartPointer<itkImageD2>& );
00053 InstantiateAccessFunctionForFixedDimension_1(_CastToItkImage2Access, 2, itk::SmartPointer<itkImageF2>& );
00054 InstantiateAccessFunctionForFixedDimension_1(_CastToItkImage2Access, 2, itk::SmartPointer<itkImageSI2>&);
00055 InstantiateAccessFunctionForFixedDimension_1(_CastToItkImage2Access, 2, itk::SmartPointer<itkImageUI2>&);
00056 InstantiateAccessFunctionForFixedDimension_1(_CastToItkImage2Access, 2, itk::SmartPointer<itkImageSS2>&);
00057 InstantiateAccessFunctionForFixedDimension_1(_CastToItkImage2Access, 2, itk::SmartPointer<itkImageUS2>&);
00058 InstantiateAccessFunctionForFixedDimension_1(_CastToItkImage2Access, 2, itk::SmartPointer<itkImageSC2>&);
00059 InstantiateAccessFunctionForFixedDimension_1(_CastToItkImage2Access, 2, itk::SmartPointer<itkImageUC2>&);
00060
00061 typedef itk::Image<double, 3> itkImageD3;
00062 typedef itk::Image<float, 3> itkImageF3;
00063 typedef itk::Image<int, 3> itkImageSI3;
00064 typedef itk::Image<unsigned int, 3> itkImageUI3;
00065 typedef itk::Image<short, 3> itkImageSS3;
00066 typedef itk::Image<unsigned short, 3> itkImageUS3;
00067 typedef itk::Image<char, 3> itkImageSC3;
00068 typedef itk::Image<unsigned char, 3> itkImageUC3;
00069
00070 InstantiateAccessFunctionForFixedDimension_1(_CastToItkImage2Access, 3, itk::SmartPointer<itkImageD3>&);
00071 InstantiateAccessFunctionForFixedDimension_1(_CastToItkImage2Access, 3, itk::SmartPointer<itkImageF3>&);
00072 InstantiateAccessFunctionForFixedDimension_1(_CastToItkImage2Access, 3, itk::SmartPointer<itkImageSI3>&);
00073 InstantiateAccessFunctionForFixedDimension_1(_CastToItkImage2Access, 3, itk::SmartPointer<itkImageUI3>&);
00074 InstantiateAccessFunctionForFixedDimension_1(_CastToItkImage2Access, 3, itk::SmartPointer<itkImageSS3>&);
00075 InstantiateAccessFunctionForFixedDimension_1(_CastToItkImage2Access, 3, itk::SmartPointer<itkImageUS3>&);
00076 InstantiateAccessFunctionForFixedDimension_1(_CastToItkImage2Access, 3, itk::SmartPointer<itkImageSC3>&);
00077 InstantiateAccessFunctionForFixedDimension_1(_CastToItkImage2Access, 3, itk::SmartPointer<itkImageUC3>&);
00078
00079 }