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 #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<itk::RGBPixel<unsigned char>, 2> itkImageRGBUC2;
00044 typedef itk::Image<itk::DiffusionTensor3D<float>, 2> itkImageDTIF2;
00045 typedef itk::Image<itk::DiffusionTensor3D<double>, 2> itkImageDTID2;
00046
00047 template void MITK_CORE_EXPORT _CastToItkImage2Access(itkImageRGBUC2*, itk::SmartPointer<itkImageRGBUC2>&);
00048 template void MITK_CORE_EXPORT _CastToItkImage2Access(itkImageDTIF2*, itk::SmartPointer<itkImageDTIF2>&);
00049 template void MITK_CORE_EXPORT _CastToItkImage2Access(itkImageDTID2*, itk::SmartPointer<itkImageDTID2>&);
00050
00051 typedef itk::Image<itk::RGBPixel<unsigned char>, 3> itkImageRGBUC3;
00052 typedef itk::Image<itk::DiffusionTensor3D<float>, 3> itkImageDTIF3;
00053 typedef itk::Image<itk::DiffusionTensor3D<double>, 3> itkImageDTID3;
00054
00055 template void MITK_CORE_EXPORT _CastToItkImage2Access(itkImageRGBUC3*, itk::SmartPointer<itkImageRGBUC3>&);
00056 template void MITK_CORE_EXPORT _CastToItkImage2Access(itkImageDTIF3*, itk::SmartPointer<itkImageDTIF3>&);
00057 template void MITK_CORE_EXPORT _CastToItkImage2Access(itkImageDTID3*, itk::SmartPointer<itkImageDTID3>&);
00058
00059 #define CAST_HUNDRED_VECS(HUN) \
00060 CAST_TEN_VECS(HUN) \
00061 CAST_TEN_VECS(HUN+10) \
00062 CAST_TEN_VECS(HUN+20) \
00063 CAST_TEN_VECS(HUN+30) \
00064 CAST_TEN_VECS(HUN+40) \
00065 CAST_TEN_VECS(HUN+50) \
00066 CAST_TEN_VECS(HUN+60) \
00067 CAST_TEN_VECS(HUN+70) \
00068 CAST_TEN_VECS(HUN+80) \
00069 CAST_TEN_VECS(HUN+90) \
00070
00071 #define CAST_TEN_VECS(TEN) \
00072 CAST_N_VEC(TEN+ 1) \
00073 CAST_N_VEC(TEN+ 2) \
00074 CAST_N_VEC(TEN+ 3) \
00075 CAST_N_VEC(TEN+ 4) \
00076 CAST_N_VEC(TEN+ 5) \
00077 CAST_N_VEC(TEN+ 6) \
00078 CAST_N_VEC(TEN+ 7) \
00079 CAST_N_VEC(TEN+ 8) \
00080 CAST_N_VEC(TEN+ 9) \
00081 CAST_N_VEC(TEN+10) \
00082
00083 #define CAST_N_VEC(N_DIRS) \
00084 _CAST_N_VEC(N_DIRS,double) \
00085 _CAST_N_VEC(N_DIRS,float) \
00086
00087 #define _CAST_N_VEC(N_DIRS,PIXTYPE) \
00088 template void MITK_CORE_EXPORT _CastToItkImage2Access(itk::Image<itk::Vector<PIXTYPE,N_DIRS>, 2> *, itk::SmartPointer<itk::Image<itk::Vector<PIXTYPE,N_DIRS>, 2> >&); \
00089 template void MITK_CORE_EXPORT _CastToItkImage2Access(itk::Image<itk::Vector<PIXTYPE,N_DIRS>, 3> *, itk::SmartPointer<itk::Image<itk::Vector<PIXTYPE,N_DIRS>, 3> >&); \
00090
00091
00092
00093
00094
00095
00096
00097
00098
00099
00100
00101
00102
00103
00104
00105 CAST_N_VEC(3)
00106 CAST_N_VEC(6)
00107 CAST_N_VEC(42)
00108 CAST_N_VEC(92)
00109 CAST_N_VEC(162)
00110 CAST_N_VEC(252)
00111 CAST_N_VEC(362)
00112 CAST_N_VEC(492)
00113 CAST_N_VEC(642)
00114 CAST_N_VEC(812)
00115 CAST_N_VEC(1002)
00116
00117 }