X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=tools%2FclitkImageConvertGenericFilter.h;h=20717144431725a5f793d061467e10f170dc61bb;hb=b7c0103ffcb88cd6dc1458fec00fc2d7077e48ea;hp=71ef2c93360e398606f23027b1b650429e0916e3;hpb=0fe907bc305f611ba8bc2ab95e287658efaefede;p=clitk.git diff --git a/tools/clitkImageConvertGenericFilter.h b/tools/clitkImageConvertGenericFilter.h index 71ef2c9..2071714 100644 --- a/tools/clitkImageConvertGenericFilter.h +++ b/tools/clitkImageConvertGenericFilter.h @@ -30,9 +30,30 @@ // clitk include #include "clitkImageToImageGenericFilter.h" +// itk include +#include "itkCastImageFilter.h" +#include "itkVectorCastImageFilter.h" + namespace clitk { + template + class ImageConvertTraits + { + public: + enum { IS_VECTOR = false }; + ImageConvertTraits() { + TPixel p = "SCALAR"; + } + }; + + template < class TPixel, unsigned int Comp > + class ImageConvertTraits< itk::Vector > + { + public: + enum { IS_VECTOR = true }; + }; + class ImageConvertGenericFilter: public clitk::ImageToImageGenericFilter { @@ -49,6 +70,8 @@ namespace clitk { itkNewMacro(Self); // Members functions + std::string GetInputPixelTypeName() { return m_PixelTypeName; } + std::string GetOutputPixelTypeName() { return mOutputPixelTypeName; } void SetOutputPixelType(std::string p) { mOutputPixelTypeName = p; } bool IsWarningOccur() { return mWarningOccur; } std::string & GetWarning() { return mWarning; } @@ -59,329 +82,137 @@ namespace clitk { template void UpdateWithInputImageType(); + template + void CheckTypes(std::string inType, std::string outType); + protected: + template void InitializeImageType(); std::string mOutputPixelTypeName; std::string mWarning; bool mWarningOccur; bool mDisplayWarning; - template void UpdateWithOutputType(); - template void UpdateWithOutputVectorType(); - + private: + template + class UpdateWithSelectiveOutputType + { + public: + static bool Run(ImageConvertGenericFilter& filter, std::string outputPixelType) + { + if (IsSameType(outputPixelType)) + UpdateWithOutputType(filter); + else if (IsSameType(outputPixelType)) + UpdateWithOutputType(filter); + else if (IsSameType(outputPixelType)) + UpdateWithOutputType(filter); + else if (IsSameType(outputPixelType)) + UpdateWithOutputType(filter); + else if (IsSameType(outputPixelType)) + UpdateWithOutputType(filter); + else if (IsSameType(outputPixelType)) + UpdateWithOutputType(filter); + else if (IsSameType(outputPixelType)) + UpdateWithOutputType(filter); + else + { + std::string list = CreateListOfTypes(); + std::cerr << "Error, I don't know the vector output type '" << outputPixelType + << "'. " << std::endl << "Known types are " << list << "." << std::endl; + return false; + } + + return true; + } + + private: + + template + static void UpdateWithOutputType(ImageConvertGenericFilter& filter) + { + // Read + typename InputImageType::Pointer input =filter.template GetInput(0); + + // Typedef + typedef typename InputImageType::PixelType PixelType; + + // Warning + filter.CheckTypes(filter.GetInputPixelTypeName(), filter.GetOutputPixelTypeName()); + + // Cast + typedef itk::Image OutputImageType; + typedef itk::CastImageFilter FilterType; + typename FilterType::Pointer cast_filter = FilterType::New(); + cast_filter->SetInput(input); + cast_filter->Update(); + + // Write + filter.SetNextOutput(cast_filter->GetOutput()); + } + }; + + template + class UpdateWithSelectiveOutputType + { + public: + static bool Run(ImageConvertGenericFilter& filter, std::string outputPixelType) + { + /* + // RP: future conversions? + if (IsSameType(outputPixelType)) + UpdateWithOutputVectorType(); + else if (IsSameType(outputPixelType)) + UpdateWithOutputVectorType(); + else if (IsSameType(outputPixelType)) + UpdateWithOutputVectorType(); + else if (IsSameType(outputPixelType)) + UpdateWithOutputVectorType(); + else if (IsSameType(outputPixelType)) + UpdateWithOutputVectorType(); + else + */ + if (IsSameType(outputPixelType)) + UpdateWithOutputVectorType(filter); + else if (IsSameType(outputPixelType)) + UpdateWithOutputVectorType(filter); + else + { + std::string list = CreateListOfTypes(); + std::cerr << "Error, I don't know the vector output type '" << outputPixelType + << "'. " << std::endl << "Known types are " << list << "." << std::endl; + return false; + } + + return true; + } + + private: + + template + static void UpdateWithOutputVectorType(ImageConvertGenericFilter& filter) + { + // Read + typename InputImageType::Pointer input =filter.template GetInput(0); + + // Typedef + typedef typename InputImageType::PixelType::ValueType PixelType; + + // Warning + filter.CheckTypes(filter.GetInputPixelTypeName(), filter.GetOutputPixelTypeName()); + + // Cast + typedef itk::Image, InputImageType::ImageDimension> OutputImageType; + typedef itk::VectorCastImageFilter FilterType; + typename FilterType::Pointer cast_filter = FilterType::New(); + cast_filter->SetInput(input); + cast_filter->Update(); + + // Write + filter.SetNextOutput(cast_filter->GetOutput()); + } + }; }; // end class ImageConvertGenericFilter -#define VEC_UPDATE_DECL(TYPE_IN, COMP, DIM, TYPE_OUT) \ - template<> void ImageConvertGenericFilter::UpdateWithOutputType, DIM>, TYPE_OUT>() - -VEC_UPDATE_DECL(char, 2, 2, unsigned char); -VEC_UPDATE_DECL(char, 2, 3, unsigned char); -VEC_UPDATE_DECL(char, 2, 4, unsigned char); -VEC_UPDATE_DECL(char, 2, 2, char); -VEC_UPDATE_DECL(char, 2, 3, char); -VEC_UPDATE_DECL(char, 2, 4, char); -VEC_UPDATE_DECL(char, 2, 2, unsigned short); -VEC_UPDATE_DECL(char, 2, 3, unsigned short); -VEC_UPDATE_DECL(char, 2, 4, unsigned short); -VEC_UPDATE_DECL(char, 2, 2, short); -VEC_UPDATE_DECL(char, 2, 3, short); -VEC_UPDATE_DECL(char, 2, 4, short); -VEC_UPDATE_DECL(char, 2, 2, int); -VEC_UPDATE_DECL(char, 2, 3, int); -VEC_UPDATE_DECL(char, 2, 4, int); -VEC_UPDATE_DECL(char, 2, 2, float); -VEC_UPDATE_DECL(char, 2, 3, float); -VEC_UPDATE_DECL(char, 2, 4, float); -VEC_UPDATE_DECL(char, 2, 2, double); -VEC_UPDATE_DECL(char, 2, 3, double); -VEC_UPDATE_DECL(char, 2, 4, double); - -VEC_UPDATE_DECL(char, 3, 2, unsigned char); -VEC_UPDATE_DECL(char, 3, 3, unsigned char); -VEC_UPDATE_DECL(char, 3, 4, unsigned char); -VEC_UPDATE_DECL(char, 3, 2, char); -VEC_UPDATE_DECL(char, 3, 3, char); -VEC_UPDATE_DECL(char, 3, 4, char); -VEC_UPDATE_DECL(char, 3, 2, unsigned short); -VEC_UPDATE_DECL(char, 3, 3, unsigned short); -VEC_UPDATE_DECL(char, 3, 4, unsigned short); -VEC_UPDATE_DECL(char, 3, 2, short); -VEC_UPDATE_DECL(char, 3, 3, short); -VEC_UPDATE_DECL(char, 3, 4, short); -VEC_UPDATE_DECL(char, 3, 2, int); -VEC_UPDATE_DECL(char, 3, 3, int); -VEC_UPDATE_DECL(char, 3, 4, int); -VEC_UPDATE_DECL(char, 3, 2, float); -VEC_UPDATE_DECL(char, 3, 3, float); -VEC_UPDATE_DECL(char, 3, 4, float); -VEC_UPDATE_DECL(char, 3, 2, double); -VEC_UPDATE_DECL(char, 3, 3, double); -VEC_UPDATE_DECL(char, 3, 4, double); - -VEC_UPDATE_DECL(unsigned char, 2, 2, unsigned char); -VEC_UPDATE_DECL(unsigned char, 2, 3, unsigned char); -VEC_UPDATE_DECL(unsigned char, 2, 4, unsigned char); -VEC_UPDATE_DECL(unsigned char, 2, 2, char); -VEC_UPDATE_DECL(unsigned char, 2, 3, char); -VEC_UPDATE_DECL(unsigned char, 2, 4, char); -VEC_UPDATE_DECL(unsigned char, 2, 2, unsigned short); -VEC_UPDATE_DECL(unsigned char, 2, 3, unsigned short); -VEC_UPDATE_DECL(unsigned char, 2, 4, unsigned short); -VEC_UPDATE_DECL(unsigned char, 2, 2, short); -VEC_UPDATE_DECL(unsigned char, 2, 3, short); -VEC_UPDATE_DECL(unsigned char, 2, 4, short); -VEC_UPDATE_DECL(unsigned char, 2, 2, int); -VEC_UPDATE_DECL(unsigned char, 2, 3, int); -VEC_UPDATE_DECL(unsigned char, 2, 4, int); -VEC_UPDATE_DECL(unsigned char, 2, 2, float); -VEC_UPDATE_DECL(unsigned char, 2, 3, float); -VEC_UPDATE_DECL(unsigned char, 2, 4, float); -VEC_UPDATE_DECL(unsigned char, 2, 2, double); -VEC_UPDATE_DECL(unsigned char, 2, 3, double); -VEC_UPDATE_DECL(unsigned char, 2, 4, double); - -VEC_UPDATE_DECL(unsigned char, 3, 2, unsigned char); -VEC_UPDATE_DECL(unsigned char, 3, 3, unsigned char); -VEC_UPDATE_DECL(unsigned char, 3, 4, unsigned char); -VEC_UPDATE_DECL(unsigned char, 3, 2, char); -VEC_UPDATE_DECL(unsigned char, 3, 3, char); -VEC_UPDATE_DECL(unsigned char, 3, 4, char); -VEC_UPDATE_DECL(unsigned char, 3, 2, unsigned short); -VEC_UPDATE_DECL(unsigned char, 3, 3, unsigned short); -VEC_UPDATE_DECL(unsigned char, 3, 4, unsigned short); -VEC_UPDATE_DECL(unsigned char, 3, 2, short); -VEC_UPDATE_DECL(unsigned char, 3, 3, short); -VEC_UPDATE_DECL(unsigned char, 3, 4, short); -VEC_UPDATE_DECL(unsigned char, 3, 2, int); -VEC_UPDATE_DECL(unsigned char, 3, 3, int); -VEC_UPDATE_DECL(unsigned char, 3, 4, int); -VEC_UPDATE_DECL(unsigned char, 3, 2, float); -VEC_UPDATE_DECL(unsigned char, 3, 3, float); -VEC_UPDATE_DECL(unsigned char, 3, 4, float); -VEC_UPDATE_DECL(unsigned char, 3, 2, double); -VEC_UPDATE_DECL(unsigned char, 3, 3, double); -VEC_UPDATE_DECL(unsigned char, 3, 4, double); - -VEC_UPDATE_DECL(short, 2, 2, unsigned char); -VEC_UPDATE_DECL(short, 2, 3, unsigned char); -VEC_UPDATE_DECL(short, 2, 4, unsigned char); -VEC_UPDATE_DECL(short, 2, 2, char); -VEC_UPDATE_DECL(short, 2, 3, char); -VEC_UPDATE_DECL(short, 2, 4, char); -VEC_UPDATE_DECL(short, 2, 2, unsigned short); -VEC_UPDATE_DECL(short, 2, 3, unsigned short); -VEC_UPDATE_DECL(short, 2, 4, unsigned short); -VEC_UPDATE_DECL(short, 2, 2, short); -VEC_UPDATE_DECL(short, 2, 3, short); -VEC_UPDATE_DECL(short, 2, 4, short); -VEC_UPDATE_DECL(short, 2, 2, int); -VEC_UPDATE_DECL(short, 2, 3, int); -VEC_UPDATE_DECL(short, 2, 4, int); -VEC_UPDATE_DECL(short, 2, 2, float); -VEC_UPDATE_DECL(short, 2, 3, float); -VEC_UPDATE_DECL(short, 2, 4, float); -VEC_UPDATE_DECL(short, 2, 2, double); -VEC_UPDATE_DECL(short, 2, 3, double); -VEC_UPDATE_DECL(short, 2, 4, double); - -VEC_UPDATE_DECL(short, 3, 2, unsigned char); -VEC_UPDATE_DECL(short, 3, 3, unsigned char); -VEC_UPDATE_DECL(short, 3, 4, unsigned char); -VEC_UPDATE_DECL(short, 3, 2, char); -VEC_UPDATE_DECL(short, 3, 3, char); -VEC_UPDATE_DECL(short, 3, 4, char); -VEC_UPDATE_DECL(short, 3, 2, unsigned short); -VEC_UPDATE_DECL(short, 3, 3, unsigned short); -VEC_UPDATE_DECL(short, 3, 4, unsigned short); -VEC_UPDATE_DECL(short, 3, 2, short); -VEC_UPDATE_DECL(short, 3, 3, short); -VEC_UPDATE_DECL(short, 3, 4, short); -VEC_UPDATE_DECL(short, 3, 2, int); -VEC_UPDATE_DECL(short, 3, 3, int); -VEC_UPDATE_DECL(short, 3, 4, int); -VEC_UPDATE_DECL(short, 3, 2, float); -VEC_UPDATE_DECL(short, 3, 3, float); -VEC_UPDATE_DECL(short, 3, 4, float); -VEC_UPDATE_DECL(short, 3, 2, double); -VEC_UPDATE_DECL(short, 3, 3, double); -VEC_UPDATE_DECL(short, 3, 4, double); - -VEC_UPDATE_DECL(unsigned short, 2, 2, unsigned char); -VEC_UPDATE_DECL(unsigned short, 2, 3, unsigned char); -VEC_UPDATE_DECL(unsigned short, 2, 4, unsigned char); -VEC_UPDATE_DECL(unsigned short, 2, 2, char); -VEC_UPDATE_DECL(unsigned short, 2, 3, char); -VEC_UPDATE_DECL(unsigned short, 2, 4, char); -VEC_UPDATE_DECL(unsigned short, 2, 2, unsigned short); -VEC_UPDATE_DECL(unsigned short, 2, 3, unsigned short); -VEC_UPDATE_DECL(unsigned short, 2, 4, unsigned short); -VEC_UPDATE_DECL(unsigned short, 2, 2, short); -VEC_UPDATE_DECL(unsigned short, 2, 3, short); -VEC_UPDATE_DECL(unsigned short, 2, 4, short); -VEC_UPDATE_DECL(unsigned short, 2, 2, int); -VEC_UPDATE_DECL(unsigned short, 2, 3, int); -VEC_UPDATE_DECL(unsigned short, 2, 4, int); -VEC_UPDATE_DECL(unsigned short, 2, 2, float); -VEC_UPDATE_DECL(unsigned short, 2, 3, float); -VEC_UPDATE_DECL(unsigned short, 2, 4, float); -VEC_UPDATE_DECL(unsigned short, 2, 2, double); -VEC_UPDATE_DECL(unsigned short, 2, 3, double); -VEC_UPDATE_DECL(unsigned short, 2, 4, double); - -VEC_UPDATE_DECL(unsigned short, 3, 2, unsigned char); -VEC_UPDATE_DECL(unsigned short, 3, 3, unsigned char); -VEC_UPDATE_DECL(unsigned short, 3, 4, unsigned char); -VEC_UPDATE_DECL(unsigned short, 3, 2, char); -VEC_UPDATE_DECL(unsigned short, 3, 3, char); -VEC_UPDATE_DECL(unsigned short, 3, 4, char); -VEC_UPDATE_DECL(unsigned short, 3, 2, unsigned short); -VEC_UPDATE_DECL(unsigned short, 3, 3, unsigned short); -VEC_UPDATE_DECL(unsigned short, 3, 4, unsigned short); -VEC_UPDATE_DECL(unsigned short, 3, 2, short); -VEC_UPDATE_DECL(unsigned short, 3, 3, short); -VEC_UPDATE_DECL(unsigned short, 3, 4, short); -VEC_UPDATE_DECL(unsigned short, 3, 2, int); -VEC_UPDATE_DECL(unsigned short, 3, 3, int); -VEC_UPDATE_DECL(unsigned short, 3, 4, int); -VEC_UPDATE_DECL(unsigned short, 3, 2, float); -VEC_UPDATE_DECL(unsigned short, 3, 3, float); -VEC_UPDATE_DECL(unsigned short, 3, 4, float); -VEC_UPDATE_DECL(unsigned short, 3, 2, double); -VEC_UPDATE_DECL(unsigned short, 3, 3, double); -VEC_UPDATE_DECL(unsigned short, 3, 4, double); - -VEC_UPDATE_DECL(int, 2, 2, unsigned char); -VEC_UPDATE_DECL(int, 2, 3, unsigned char); -VEC_UPDATE_DECL(int, 2, 4, unsigned char); -VEC_UPDATE_DECL(int, 2, 2, char); -VEC_UPDATE_DECL(int, 2, 3, char); -VEC_UPDATE_DECL(int, 2, 4, char); -VEC_UPDATE_DECL(int, 2, 2, unsigned short); -VEC_UPDATE_DECL(int, 2, 3, unsigned short); -VEC_UPDATE_DECL(int, 2, 4, unsigned short); -VEC_UPDATE_DECL(int, 2, 2, short); -VEC_UPDATE_DECL(int, 2, 3, short); -VEC_UPDATE_DECL(int, 2, 4, short); -VEC_UPDATE_DECL(int, 2, 2, int); -VEC_UPDATE_DECL(int, 2, 3, int); -VEC_UPDATE_DECL(int, 2, 4, int); -VEC_UPDATE_DECL(int, 2, 2, float); -VEC_UPDATE_DECL(int, 2, 3, float); -VEC_UPDATE_DECL(int, 2, 4, float); -VEC_UPDATE_DECL(int, 2, 2, double); -VEC_UPDATE_DECL(int, 2, 3, double); -VEC_UPDATE_DECL(int, 2, 4, double); - -VEC_UPDATE_DECL(int, 3, 2, unsigned char); -VEC_UPDATE_DECL(int, 3, 3, unsigned char); -VEC_UPDATE_DECL(int, 3, 4, unsigned char); -VEC_UPDATE_DECL(int, 3, 2, char); -VEC_UPDATE_DECL(int, 3, 3, char); -VEC_UPDATE_DECL(int, 3, 4, char); -VEC_UPDATE_DECL(int, 3, 2, unsigned short); -VEC_UPDATE_DECL(int, 3, 3, unsigned short); -VEC_UPDATE_DECL(int, 3, 4, unsigned short); -VEC_UPDATE_DECL(int, 3, 2, short); -VEC_UPDATE_DECL(int, 3, 3, short); -VEC_UPDATE_DECL(int, 3, 4, short); -VEC_UPDATE_DECL(int, 3, 2, int); -VEC_UPDATE_DECL(int, 3, 3, int); -VEC_UPDATE_DECL(int, 3, 4, int); -VEC_UPDATE_DECL(int, 3, 2, float); -VEC_UPDATE_DECL(int, 3, 3, float); -VEC_UPDATE_DECL(int, 3, 4, float); -VEC_UPDATE_DECL(int, 3, 2, double); -VEC_UPDATE_DECL(int, 3, 3, double); -VEC_UPDATE_DECL(int, 3, 4, double); - -VEC_UPDATE_DECL(float, 2, 2, unsigned char); -VEC_UPDATE_DECL(float, 2, 3, unsigned char); -VEC_UPDATE_DECL(float, 2, 4, unsigned char); -VEC_UPDATE_DECL(float, 2, 2, char); -VEC_UPDATE_DECL(float, 2, 3, char); -VEC_UPDATE_DECL(float, 2, 4, char); -VEC_UPDATE_DECL(float, 2, 2, unsigned short); -VEC_UPDATE_DECL(float, 2, 3, unsigned short); -VEC_UPDATE_DECL(float, 2, 4, unsigned short); -VEC_UPDATE_DECL(float, 2, 2, short); -VEC_UPDATE_DECL(float, 2, 3, short); -VEC_UPDATE_DECL(float, 2, 4, short); -VEC_UPDATE_DECL(float, 2, 2, int); -VEC_UPDATE_DECL(float, 2, 3, int); -VEC_UPDATE_DECL(float, 2, 4, int); -VEC_UPDATE_DECL(float, 2, 2, float); -VEC_UPDATE_DECL(float, 2, 3, float); -VEC_UPDATE_DECL(float, 2, 4, float); -VEC_UPDATE_DECL(float, 2, 2, double); -VEC_UPDATE_DECL(float, 2, 3, double); -VEC_UPDATE_DECL(float, 2, 4, double); - -VEC_UPDATE_DECL(float, 3, 2, unsigned char); -VEC_UPDATE_DECL(float, 3, 3, unsigned char); -VEC_UPDATE_DECL(float, 3, 4, unsigned char); -VEC_UPDATE_DECL(float, 3, 2, char); -VEC_UPDATE_DECL(float, 3, 3, char); -VEC_UPDATE_DECL(float, 3, 4, char); -VEC_UPDATE_DECL(float, 3, 2, unsigned short); -VEC_UPDATE_DECL(float, 3, 3, unsigned short); -VEC_UPDATE_DECL(float, 3, 4, unsigned short); -VEC_UPDATE_DECL(float, 3, 2, short); -VEC_UPDATE_DECL(float, 3, 3, short); -VEC_UPDATE_DECL(float, 3, 4, short); -VEC_UPDATE_DECL(float, 3, 2, int); -VEC_UPDATE_DECL(float, 3, 3, int); -VEC_UPDATE_DECL(float, 3, 4, int); -VEC_UPDATE_DECL(float, 3, 2, float); -VEC_UPDATE_DECL(float, 3, 3, float); -VEC_UPDATE_DECL(float, 3, 4, float); -VEC_UPDATE_DECL(float, 3, 2, double); -VEC_UPDATE_DECL(float, 3, 3, double); -VEC_UPDATE_DECL(float, 3, 4, double); - -VEC_UPDATE_DECL(double, 2, 2, unsigned char); -VEC_UPDATE_DECL(double, 2, 3, unsigned char); -VEC_UPDATE_DECL(double, 2, 4, unsigned char); -VEC_UPDATE_DECL(double, 2, 2, char); -VEC_UPDATE_DECL(double, 2, 3, char); -VEC_UPDATE_DECL(double, 2, 4, char); -VEC_UPDATE_DECL(double, 2, 2, unsigned short); -VEC_UPDATE_DECL(double, 2, 3, unsigned short); -VEC_UPDATE_DECL(double, 2, 4, unsigned short); -VEC_UPDATE_DECL(double, 2, 2, short); -VEC_UPDATE_DECL(double, 2, 3, short); -VEC_UPDATE_DECL(double, 2, 4, short); -VEC_UPDATE_DECL(double, 2, 2, int); -VEC_UPDATE_DECL(double, 2, 3, int); -VEC_UPDATE_DECL(double, 2, 4, int); -VEC_UPDATE_DECL(double, 2, 2, float); -VEC_UPDATE_DECL(double, 2, 3, float); -VEC_UPDATE_DECL(double, 2, 4, float); -VEC_UPDATE_DECL(double, 2, 2, double); -VEC_UPDATE_DECL(double, 2, 3, double); -VEC_UPDATE_DECL(double, 2, 4, double); - -VEC_UPDATE_DECL(double, 3, 2, unsigned char); -VEC_UPDATE_DECL(double, 3, 3, unsigned char); -VEC_UPDATE_DECL(double, 3, 4, unsigned char); -VEC_UPDATE_DECL(double, 3, 2, char); -VEC_UPDATE_DECL(double, 3, 3, char); -VEC_UPDATE_DECL(double, 3, 4, char); -VEC_UPDATE_DECL(double, 3, 2, unsigned short); -VEC_UPDATE_DECL(double, 3, 3, unsigned short); -VEC_UPDATE_DECL(double, 3, 4, unsigned short); -VEC_UPDATE_DECL(double, 3, 2, short); -VEC_UPDATE_DECL(double, 3, 3, short); -VEC_UPDATE_DECL(double, 3, 4, short); -VEC_UPDATE_DECL(double, 3, 2, int); -VEC_UPDATE_DECL(double, 3, 3, int); -VEC_UPDATE_DECL(double, 3, 4, int); -VEC_UPDATE_DECL(double, 3, 2, float); -VEC_UPDATE_DECL(double, 3, 3, float); -VEC_UPDATE_DECL(double, 3, 4, float); -VEC_UPDATE_DECL(double, 3, 2, double); -VEC_UPDATE_DECL(double, 3, 3, double); -VEC_UPDATE_DECL(double, 3, 4, double); - //#include "clitkImageConvertGenericFilter.txx" } // end namespace