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
00026 #ifndef DOXYGEN_SKIP
00027 template <typename ItkOutputImageType> void CastToItkImage(const mitk::Image * mitkImage, itk::SmartPointer<ItkOutputImageType>& itkOutputImage)
00028 {
00029 AccessFixedDimensionByItk_1(mitkImage, _CastToItkImage2Access, ::itk::GetImageDimension<ItkOutputImageType>::ImageDimension, itkOutputImage);
00030 }
00031 #endif //DOXYGEN_SKIP
00032
00033 typedef itk::Image<itk::RGBPixel<unsigned char>, 2> itkImageRGBUC2;
00034 typedef itk::Image<itk::DiffusionTensor3D<float>, 2> itkImageDTIF2;
00035 typedef itk::Image<itk::DiffusionTensor3D<double>, 2> itkImageDTID2;
00036
00037 template <> void MITK_CORE_EXPORT CastToItkImage<itkImageRGBUC2>(const mitk::Image * mitkImage, itk::SmartPointer<itkImageRGBUC2>& itkOutputImage)
00038 {
00039 typedef itkImageRGBUC2 ItkOutputImageType;
00040 AccessFixedTypeByItk_1(mitkImage, _CastToItkImage2Access, itk::RGBPixel<unsigned char>, ::itk::GetImageDimension<ItkOutputImageType>::ImageDimension, itkOutputImage);
00041 }
00042 template <> void MITK_CORE_EXPORT CastToItkImage<itkImageDTIF2>(const mitk::Image * mitkImage, itk::SmartPointer<itkImageDTIF2>& itkOutputImage)
00043 {
00044 typedef itkImageDTIF2 ItkOutputImageType;
00045 AccessFixedTypeByItk_1(mitkImage, _CastToItkImage2Access, itk::DiffusionTensor3D<float>, ::itk::GetImageDimension<ItkOutputImageType>::ImageDimension, itkOutputImage);
00046 }
00047 template <> void MITK_CORE_EXPORT CastToItkImage<itkImageDTID2>(const mitk::Image * mitkImage, itk::SmartPointer<itkImageDTID2>& itkOutputImage)
00048 {
00049 typedef itkImageDTID2 ItkOutputImageType;
00050 AccessFixedTypeByItk_1(mitkImage, _CastToItkImage2Access, itk::DiffusionTensor3D<double>, ::itk::GetImageDimension<ItkOutputImageType>::ImageDimension, itkOutputImage);
00051 }
00052
00053 typedef itk::Image<itk::RGBPixel<unsigned char>, 3> itkImageRGBUC3;
00054 typedef itk::Image<itk::DiffusionTensor3D<float>, 3> itkImageDTIF3;
00055 typedef itk::Image<itk::DiffusionTensor3D<double>, 3> itkImageDTID3;
00056
00057 template <> void MITK_CORE_EXPORT CastToItkImage<itkImageRGBUC3>(const mitk::Image * mitkImage, itk::SmartPointer<itkImageRGBUC3>& itkOutputImage)
00058 {
00059 typedef itkImageRGBUC3 ItkOutputImageType;
00060 AccessFixedTypeByItk_1(mitkImage, _CastToItkImage2Access, itk::RGBPixel<unsigned char>, ::itk::GetImageDimension<ItkOutputImageType>::ImageDimension, itkOutputImage);
00061 }
00062 template <> void MITK_CORE_EXPORT CastToItkImage<itkImageDTIF3>(const mitk::Image * mitkImage, itk::SmartPointer<itkImageDTIF3>& itkOutputImage)
00063 {
00064 typedef itkImageDTIF3 ItkOutputImageType;
00065 AccessFixedTypeByItk_1(mitkImage, _CastToItkImage2Access, itk::DiffusionTensor3D<float>, ::itk::GetImageDimension<ItkOutputImageType>::ImageDimension, itkOutputImage);
00066 }
00067 template <> void MITK_CORE_EXPORT CastToItkImage<itkImageDTID3>(const mitk::Image * mitkImage, itk::SmartPointer<itkImageDTID3>& itkOutputImage)
00068 {
00069 typedef itkImageDTID3 ItkOutputImageType;
00070 AccessFixedTypeByItk_1(mitkImage, _CastToItkImage2Access, itk::DiffusionTensor3D<double>, ::itk::GetImageDimension<ItkOutputImageType>::ImageDimension, itkOutputImage);
00071 }
00072
00073 #define TYPE_VECS(HUN) \
00074 TYPE_TEN_VECS(HUN) \
00075 TYPE_TEN_VECS(HUN + 10) \
00076 TYPE_TEN_VECS(HUN + 20) \
00077 TYPE_TEN_VECS(HUN + 30) \
00078 TYPE_TEN_VECS(HUN + 40) \
00079 TYPE_TEN_VECS(HUN + 50) \
00080 TYPE_TEN_VECS(HUN + 60) \
00081 TYPE_TEN_VECS(HUN + 70) \
00082 TYPE_TEN_VECS(HUN + 80) \
00083 TYPE_TEN_VECS(HUN + 90) \
00084
00085 #define TYPE_TEN_VECS(HUN) \
00086 TYPE_N_VEC(HUN + 1) \
00087 TYPE_N_VEC(HUN + 2) \
00088 TYPE_N_VEC(HUN + 3) \
00089 TYPE_N_VEC(HUN + 4) \
00090 TYPE_N_VEC(HUN + 5) \
00091 TYPE_N_VEC(HUN + 6) \
00092 TYPE_N_VEC(HUN + 7) \
00093 TYPE_N_VEC(HUN + 8) \
00094 TYPE_N_VEC(HUN + 9) \
00095 TYPE_N_VEC(HUN + 10) \
00096
00097 #define TYPE_N_VEC(N_DIRS) \
00098 _TYPE_N_VEC(N_DIRS,double) \
00099 _TYPE_N_VEC(N_DIRS,float) \
00100
00101 #define _TYPE_N_VEC(N_DIRS,PIXTYPE) \
00102 template <> void MITK_CORE_EXPORT CastToItkImage<itk::Image<itk::Vector<PIXTYPE,N_DIRS>, 2> >(const mitk::Image * mitkImage, itk::SmartPointer<itk::Image<itk::Vector<PIXTYPE,N_DIRS>, 2> >& itkOutputImage) \
00103 { \
00104 typedef itk::Vector<PIXTYPE,N_DIRS> VECTORTYPE; \
00105 typedef itk::Image<VECTORTYPE, 2> ItkOutputImageType2; \
00106 AccessFixedTypeByItk_1(mitkImage, _CastToItkImage2Access, VECTORTYPE, ::itk::GetImageDimension<ItkOutputImageType2>::ImageDimension, itkOutputImage); \
00107 } \
00108 template <> void MITK_CORE_EXPORT CastToItkImage<itk::Image<itk::Vector<PIXTYPE,N_DIRS>, 3> >(const mitk::Image * mitkImage, itk::SmartPointer<itk::Image<itk::Vector<PIXTYPE,N_DIRS>, 3> >& itkOutputImage) \
00109 { \
00110 typedef itk::Vector<PIXTYPE,N_DIRS> VECTORTYPE; \
00111 typedef itk::Image<VECTORTYPE, 3> ItkOutputImageType3; \
00112 AccessFixedTypeByItk_1(mitkImage, _CastToItkImage2Access, VECTORTYPE, ::itk::GetImageDimension<ItkOutputImageType3>::ImageDimension, itkOutputImage); \
00113 } \
00114
00115
00116
00117
00118
00119
00120
00121
00122
00123
00124
00125
00126
00127
00128
00129
00130
00131
00132
00133 TYPE_N_VEC(3)
00134 TYPE_N_VEC(6)
00135 TYPE_N_VEC(42)
00136 TYPE_N_VEC(92)
00137 TYPE_N_VEC(162)
00138 TYPE_N_VEC(252)
00139 TYPE_N_VEC(362)
00140 TYPE_N_VEC(492)
00141 TYPE_N_VEC(642)
00142 TYPE_N_VEC(812)
00143 TYPE_N_VEC(1002)
00144
00145 #ifndef DOXYGEN_SKIP
00146
00147 #endif //DOXYGEN_SKIP
00148
00149 }