From: Romulo Pinho Date: Wed, 23 May 2012 13:01:18 +0000 (+0200) Subject: support for multiple vector image conversions X-Git-Tag: v1.3.0~37 X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=commitdiff_plain;h=0fe907bc305f611ba8bc2ab95e287658efaefede;p=clitk.git support for multiple vector image conversions - including image compression --- diff --git a/common/clitkImageToImageGenericFilterBase.cxx b/common/clitkImageToImageGenericFilterBase.cxx index 8a713d2..18d9118 100644 --- a/common/clitkImageToImageGenericFilterBase.cxx +++ b/common/clitkImageToImageGenericFilterBase.cxx @@ -306,6 +306,56 @@ DEF_SetNextOutput_And_GetInput(int, 3); DEF_SetNextOutput_And_GetInput(float, 3); DEF_SetNextOutput_And_GetInput(double, 3); +DEF_SetNextOutput_And_GetInput_WithCompo(unsigned char, 2, 2); +DEF_SetNextOutput_And_GetInput_WithCompo(unsigned char, 2, 3); +DEF_SetNextOutput_And_GetInput_WithCompo(unsigned char, 2, 4); +DEF_SetNextOutput_And_GetInput_WithCompo(unsigned char, 3, 2); +DEF_SetNextOutput_And_GetInput_WithCompo(unsigned char, 3, 3); +DEF_SetNextOutput_And_GetInput_WithCompo(unsigned char, 3, 4); +DEF_SetNextOutput_And_GetInput_WithCompo(unsigned char, 4, 2); +DEF_SetNextOutput_And_GetInput_WithCompo(unsigned char, 4, 3); +DEF_SetNextOutput_And_GetInput_WithCompo(unsigned char, 4, 4); + +DEF_SetNextOutput_And_GetInput_WithCompo(char, 2, 2); +DEF_SetNextOutput_And_GetInput_WithCompo(char, 2, 3); +DEF_SetNextOutput_And_GetInput_WithCompo(char, 2, 4); +DEF_SetNextOutput_And_GetInput_WithCompo(char, 3, 2); +DEF_SetNextOutput_And_GetInput_WithCompo(char, 3, 3); +DEF_SetNextOutput_And_GetInput_WithCompo(char, 3, 4); +DEF_SetNextOutput_And_GetInput_WithCompo(char, 4, 2); +DEF_SetNextOutput_And_GetInput_WithCompo(char, 4, 3); +DEF_SetNextOutput_And_GetInput_WithCompo(char, 4, 4); + +DEF_SetNextOutput_And_GetInput_WithCompo(unsigned short, 2, 2); +DEF_SetNextOutput_And_GetInput_WithCompo(unsigned short, 2, 3); +DEF_SetNextOutput_And_GetInput_WithCompo(unsigned short, 2, 4); +DEF_SetNextOutput_And_GetInput_WithCompo(unsigned short, 3, 2); +DEF_SetNextOutput_And_GetInput_WithCompo(unsigned short, 3, 3); +DEF_SetNextOutput_And_GetInput_WithCompo(unsigned short, 3, 4); +DEF_SetNextOutput_And_GetInput_WithCompo(unsigned short, 4, 2); +DEF_SetNextOutput_And_GetInput_WithCompo(unsigned short, 4, 3); +DEF_SetNextOutput_And_GetInput_WithCompo(unsigned short, 4, 4); + +DEF_SetNextOutput_And_GetInput_WithCompo(short, 2, 2); +DEF_SetNextOutput_And_GetInput_WithCompo(short, 2, 3); +DEF_SetNextOutput_And_GetInput_WithCompo(short, 2, 4); +DEF_SetNextOutput_And_GetInput_WithCompo(short, 3, 2); +DEF_SetNextOutput_And_GetInput_WithCompo(short, 3, 3); +DEF_SetNextOutput_And_GetInput_WithCompo(short, 3, 4); +DEF_SetNextOutput_And_GetInput_WithCompo(short, 4, 2); +DEF_SetNextOutput_And_GetInput_WithCompo(short, 4, 3); +DEF_SetNextOutput_And_GetInput_WithCompo(short, 4, 4); + +DEF_SetNextOutput_And_GetInput_WithCompo(int, 2, 2); +DEF_SetNextOutput_And_GetInput_WithCompo(int, 2, 3); +DEF_SetNextOutput_And_GetInput_WithCompo(int, 2, 4); +DEF_SetNextOutput_And_GetInput_WithCompo(int, 3, 2); +DEF_SetNextOutput_And_GetInput_WithCompo(int, 3, 3); +DEF_SetNextOutput_And_GetInput_WithCompo(int, 3, 4); +DEF_SetNextOutput_And_GetInput_WithCompo(int, 4, 2); +DEF_SetNextOutput_And_GetInput_WithCompo(int, 4, 3); +DEF_SetNextOutput_And_GetInput_WithCompo(int, 4, 4); + DEF_SetNextOutput_And_GetInput_WithCompo(float, 2, 2); DEF_SetNextOutput_And_GetInput_WithCompo(float, 2, 3); DEF_SetNextOutput_And_GetInput_WithCompo(float, 2, 4); diff --git a/tools/clitkImageConvertGenericFilter.cxx b/tools/clitkImageConvertGenericFilter.cxx index b7702cc..b36ba04 100644 --- a/tools/clitkImageConvertGenericFilter.cxx +++ b/tools/clitkImageConvertGenericFilter.cxx @@ -19,6 +19,9 @@ #define CLITKIMAGECONVERTGENERICFILTER_CXX #include "clitkImageConvertGenericFilter.h" +// itk include +#include "itkCastImageFilter.h" +#include "itkVectorCastImageFilter.h" //-------------------------------------------------------------------- clitk::ImageConvertGenericFilter::ImageConvertGenericFilter(): @@ -40,6 +43,20 @@ template void clitk::ImageConvertGenericFilter::InitializeImageType() { ADD_DEFAULT_IMAGE_TYPES(Dim); + ADD_VEC_IMAGE_TYPE(Dim, 2, char) + ADD_VEC_IMAGE_TYPE(Dim, 3, char) + ADD_VEC_IMAGE_TYPE(Dim, 2, unsigned char) + ADD_VEC_IMAGE_TYPE(Dim, 3, unsigned char) + ADD_VEC_IMAGE_TYPE(Dim, 2, short) + ADD_VEC_IMAGE_TYPE(Dim, 3, short) + ADD_VEC_IMAGE_TYPE(Dim, 2, unsigned short) + ADD_VEC_IMAGE_TYPE(Dim, 3, unsigned short) + ADD_VEC_IMAGE_TYPE(Dim, 2, int) + ADD_VEC_IMAGE_TYPE(Dim, 3, int) + ADD_VEC_IMAGE_TYPE(Dim, 2, float) + ADD_VEC_IMAGE_TYPE(Dim, 3, float) + ADD_VEC_IMAGE_TYPE(Dim, 2, double) + ADD_VEC_IMAGE_TYPE(Dim, 3, double) } //-------------------------------------------------------------------- @@ -84,9 +101,11 @@ void clitk::ImageConvertGenericFilter::UpdateWithInputImageType() TRY_TYPE(float); TRY_TYPE(double); #undef TRY_TYPE + + IsSameType("char"); std::string list = CreateListOfTypes(); - std::cerr << "Error, I don't know the output type '" << mOutputPixelTypeName + std::cerr << "Error, I don't know the output type '" << mOutputPixelTypeName << " (input = " << m_PixelTypeName << ")" << "'. " << std::endl << "Known types are " << list << "." << std::endl; exit(0); } @@ -152,6 +171,383 @@ void clitk::ImageConvertGenericFilter::UpdateWithOutputType() } //==================================================================== +// Vector specializations (RP: do we need so many?) + +#define VEC_UPDATE_IMPL(TYPE_IN, COMP, DIM, TYPE_OUT) \ + template<> \ + void clitk::ImageConvertGenericFilter::UpdateWithOutputType, DIM>, TYPE_OUT>() \ + { \ + UpdateWithOutputVectorType, DIM>, TYPE_OUT>(); \ + } + +VEC_UPDATE_IMPL(char, 2, 2, unsigned char); +VEC_UPDATE_IMPL(char, 2, 3, unsigned char); +VEC_UPDATE_IMPL(char, 2, 4, unsigned char); +VEC_UPDATE_IMPL(char, 2, 2, char); +VEC_UPDATE_IMPL(char, 2, 3, char); +VEC_UPDATE_IMPL(char, 2, 4, char); +VEC_UPDATE_IMPL(char, 2, 2, unsigned short); +VEC_UPDATE_IMPL(char, 2, 3, unsigned short); +VEC_UPDATE_IMPL(char, 2, 4, unsigned short); +VEC_UPDATE_IMPL(char, 2, 2, short); +VEC_UPDATE_IMPL(char, 2, 3, short); +VEC_UPDATE_IMPL(char, 2, 4, short); +VEC_UPDATE_IMPL(char, 2, 2, int); +VEC_UPDATE_IMPL(char, 2, 3, int); +VEC_UPDATE_IMPL(char, 2, 4, int); +VEC_UPDATE_IMPL(char, 2, 2, float); +VEC_UPDATE_IMPL(char, 2, 3, float); +VEC_UPDATE_IMPL(char, 2, 4, float); +VEC_UPDATE_IMPL(char, 2, 2, double); +VEC_UPDATE_IMPL(char, 2, 3, double); +VEC_UPDATE_IMPL(char, 2, 4, double); + +VEC_UPDATE_IMPL(char, 3, 2, unsigned char); +VEC_UPDATE_IMPL(char, 3, 3, unsigned char); +VEC_UPDATE_IMPL(char, 3, 4, unsigned char); +VEC_UPDATE_IMPL(char, 3, 2, char); +VEC_UPDATE_IMPL(char, 3, 3, char); +VEC_UPDATE_IMPL(char, 3, 4, char); +VEC_UPDATE_IMPL(char, 3, 2, unsigned short); +VEC_UPDATE_IMPL(char, 3, 3, unsigned short); +VEC_UPDATE_IMPL(char, 3, 4, unsigned short); +VEC_UPDATE_IMPL(char, 3, 2, short); +VEC_UPDATE_IMPL(char, 3, 3, short); +VEC_UPDATE_IMPL(char, 3, 4, short); +VEC_UPDATE_IMPL(char, 3, 2, int); +VEC_UPDATE_IMPL(char, 3, 3, int); +VEC_UPDATE_IMPL(char, 3, 4, int); +VEC_UPDATE_IMPL(char, 3, 2, float); +VEC_UPDATE_IMPL(char, 3, 3, float); +VEC_UPDATE_IMPL(char, 3, 4, float); +VEC_UPDATE_IMPL(char, 3, 2, double); +VEC_UPDATE_IMPL(char, 3, 3, double); +VEC_UPDATE_IMPL(char, 3, 4, double); + +VEC_UPDATE_IMPL(unsigned char, 2, 2, unsigned char); +VEC_UPDATE_IMPL(unsigned char, 2, 3, unsigned char); +VEC_UPDATE_IMPL(unsigned char, 2, 4, unsigned char); +VEC_UPDATE_IMPL(unsigned char, 2, 2, char); +VEC_UPDATE_IMPL(unsigned char, 2, 3, char); +VEC_UPDATE_IMPL(unsigned char, 2, 4, char); +VEC_UPDATE_IMPL(unsigned char, 2, 2, unsigned short); +VEC_UPDATE_IMPL(unsigned char, 2, 3, unsigned short); +VEC_UPDATE_IMPL(unsigned char, 2, 4, unsigned short); +VEC_UPDATE_IMPL(unsigned char, 2, 2, short); +VEC_UPDATE_IMPL(unsigned char, 2, 3, short); +VEC_UPDATE_IMPL(unsigned char, 2, 4, short); +VEC_UPDATE_IMPL(unsigned char, 2, 2, int); +VEC_UPDATE_IMPL(unsigned char, 2, 3, int); +VEC_UPDATE_IMPL(unsigned char, 2, 4, int); +VEC_UPDATE_IMPL(unsigned char, 2, 2, float); +VEC_UPDATE_IMPL(unsigned char, 2, 3, float); +VEC_UPDATE_IMPL(unsigned char, 2, 4, float); +VEC_UPDATE_IMPL(unsigned char, 2, 2, double); +VEC_UPDATE_IMPL(unsigned char, 2, 3, double); +VEC_UPDATE_IMPL(unsigned char, 2, 4, double); + +VEC_UPDATE_IMPL(unsigned char, 3, 2, unsigned char); +VEC_UPDATE_IMPL(unsigned char, 3, 3, unsigned char); +VEC_UPDATE_IMPL(unsigned char, 3, 4, unsigned char); +VEC_UPDATE_IMPL(unsigned char, 3, 2, char); +VEC_UPDATE_IMPL(unsigned char, 3, 3, char); +VEC_UPDATE_IMPL(unsigned char, 3, 4, char); +VEC_UPDATE_IMPL(unsigned char, 3, 2, unsigned short); +VEC_UPDATE_IMPL(unsigned char, 3, 3, unsigned short); +VEC_UPDATE_IMPL(unsigned char, 3, 4, unsigned short); +VEC_UPDATE_IMPL(unsigned char, 3, 2, short); +VEC_UPDATE_IMPL(unsigned char, 3, 3, short); +VEC_UPDATE_IMPL(unsigned char, 3, 4, short); +VEC_UPDATE_IMPL(unsigned char, 3, 2, int); +VEC_UPDATE_IMPL(unsigned char, 3, 3, int); +VEC_UPDATE_IMPL(unsigned char, 3, 4, int); +VEC_UPDATE_IMPL(unsigned char, 3, 2, float); +VEC_UPDATE_IMPL(unsigned char, 3, 3, float); +VEC_UPDATE_IMPL(unsigned char, 3, 4, float); +VEC_UPDATE_IMPL(unsigned char, 3, 2, double); +VEC_UPDATE_IMPL(unsigned char, 3, 3, double); +VEC_UPDATE_IMPL(unsigned char, 3, 4, double); + +VEC_UPDATE_IMPL(short, 2, 2, unsigned char); +VEC_UPDATE_IMPL(short, 2, 3, unsigned char); +VEC_UPDATE_IMPL(short, 2, 4, unsigned char); +VEC_UPDATE_IMPL(short, 2, 2, char); +VEC_UPDATE_IMPL(short, 2, 3, char); +VEC_UPDATE_IMPL(short, 2, 4, char); +VEC_UPDATE_IMPL(short, 2, 2, unsigned short); +VEC_UPDATE_IMPL(short, 2, 3, unsigned short); +VEC_UPDATE_IMPL(short, 2, 4, unsigned short); +VEC_UPDATE_IMPL(short, 2, 2, short); +VEC_UPDATE_IMPL(short, 2, 3, short); +VEC_UPDATE_IMPL(short, 2, 4, short); +VEC_UPDATE_IMPL(short, 2, 2, int); +VEC_UPDATE_IMPL(short, 2, 3, int); +VEC_UPDATE_IMPL(short, 2, 4, int); +VEC_UPDATE_IMPL(short, 2, 2, float); +VEC_UPDATE_IMPL(short, 2, 3, float); +VEC_UPDATE_IMPL(short, 2, 4, float); +VEC_UPDATE_IMPL(short, 2, 2, double); +VEC_UPDATE_IMPL(short, 2, 3, double); +VEC_UPDATE_IMPL(short, 2, 4, double); + +VEC_UPDATE_IMPL(short, 3, 2, unsigned char); +VEC_UPDATE_IMPL(short, 3, 3, unsigned char); +VEC_UPDATE_IMPL(short, 3, 4, unsigned char); +VEC_UPDATE_IMPL(short, 3, 2, char); +VEC_UPDATE_IMPL(short, 3, 3, char); +VEC_UPDATE_IMPL(short, 3, 4, char); +VEC_UPDATE_IMPL(short, 3, 2, unsigned short); +VEC_UPDATE_IMPL(short, 3, 3, unsigned short); +VEC_UPDATE_IMPL(short, 3, 4, unsigned short); +VEC_UPDATE_IMPL(short, 3, 2, short); +VEC_UPDATE_IMPL(short, 3, 3, short); +VEC_UPDATE_IMPL(short, 3, 4, short); +VEC_UPDATE_IMPL(short, 3, 2, int); +VEC_UPDATE_IMPL(short, 3, 3, int); +VEC_UPDATE_IMPL(short, 3, 4, int); +VEC_UPDATE_IMPL(short, 3, 2, float); +VEC_UPDATE_IMPL(short, 3, 3, float); +VEC_UPDATE_IMPL(short, 3, 4, float); +VEC_UPDATE_IMPL(short, 3, 2, double); +VEC_UPDATE_IMPL(short, 3, 3, double); +VEC_UPDATE_IMPL(short, 3, 4, double); + +VEC_UPDATE_IMPL(unsigned short, 2, 2, unsigned char); +VEC_UPDATE_IMPL(unsigned short, 2, 3, unsigned char); +VEC_UPDATE_IMPL(unsigned short, 2, 4, unsigned char); +VEC_UPDATE_IMPL(unsigned short, 2, 2, char); +VEC_UPDATE_IMPL(unsigned short, 2, 3, char); +VEC_UPDATE_IMPL(unsigned short, 2, 4, char); +VEC_UPDATE_IMPL(unsigned short, 2, 2, unsigned short); +VEC_UPDATE_IMPL(unsigned short, 2, 3, unsigned short); +VEC_UPDATE_IMPL(unsigned short, 2, 4, unsigned short); +VEC_UPDATE_IMPL(unsigned short, 2, 2, short); +VEC_UPDATE_IMPL(unsigned short, 2, 3, short); +VEC_UPDATE_IMPL(unsigned short, 2, 4, short); +VEC_UPDATE_IMPL(unsigned short, 2, 2, int); +VEC_UPDATE_IMPL(unsigned short, 2, 3, int); +VEC_UPDATE_IMPL(unsigned short, 2, 4, int); +VEC_UPDATE_IMPL(unsigned short, 2, 2, float); +VEC_UPDATE_IMPL(unsigned short, 2, 3, float); +VEC_UPDATE_IMPL(unsigned short, 2, 4, float); +VEC_UPDATE_IMPL(unsigned short, 2, 2, double); +VEC_UPDATE_IMPL(unsigned short, 2, 3, double); +VEC_UPDATE_IMPL(unsigned short, 2, 4, double); + +VEC_UPDATE_IMPL(unsigned short, 3, 2, unsigned char); +VEC_UPDATE_IMPL(unsigned short, 3, 3, unsigned char); +VEC_UPDATE_IMPL(unsigned short, 3, 4, unsigned char); +VEC_UPDATE_IMPL(unsigned short, 3, 2, char); +VEC_UPDATE_IMPL(unsigned short, 3, 3, char); +VEC_UPDATE_IMPL(unsigned short, 3, 4, char); +VEC_UPDATE_IMPL(unsigned short, 3, 2, unsigned short); +VEC_UPDATE_IMPL(unsigned short, 3, 3, unsigned short); +VEC_UPDATE_IMPL(unsigned short, 3, 4, unsigned short); +VEC_UPDATE_IMPL(unsigned short, 3, 2, short); +VEC_UPDATE_IMPL(unsigned short, 3, 3, short); +VEC_UPDATE_IMPL(unsigned short, 3, 4, short); +VEC_UPDATE_IMPL(unsigned short, 3, 2, int); +VEC_UPDATE_IMPL(unsigned short, 3, 3, int); +VEC_UPDATE_IMPL(unsigned short, 3, 4, int); +VEC_UPDATE_IMPL(unsigned short, 3, 2, float); +VEC_UPDATE_IMPL(unsigned short, 3, 3, float); +VEC_UPDATE_IMPL(unsigned short, 3, 4, float); +VEC_UPDATE_IMPL(unsigned short, 3, 2, double); +VEC_UPDATE_IMPL(unsigned short, 3, 3, double); +VEC_UPDATE_IMPL(unsigned short, 3, 4, double); + +VEC_UPDATE_IMPL(int, 2, 2, unsigned char); +VEC_UPDATE_IMPL(int, 2, 3, unsigned char); +VEC_UPDATE_IMPL(int, 2, 4, unsigned char); +VEC_UPDATE_IMPL(int, 2, 2, char); +VEC_UPDATE_IMPL(int, 2, 3, char); +VEC_UPDATE_IMPL(int, 2, 4, char); +VEC_UPDATE_IMPL(int, 2, 2, unsigned short); +VEC_UPDATE_IMPL(int, 2, 3, unsigned short); +VEC_UPDATE_IMPL(int, 2, 4, unsigned short); +VEC_UPDATE_IMPL(int, 2, 2, short); +VEC_UPDATE_IMPL(int, 2, 3, short); +VEC_UPDATE_IMPL(int, 2, 4, short); +VEC_UPDATE_IMPL(int, 2, 2, int); +VEC_UPDATE_IMPL(int, 2, 3, int); +VEC_UPDATE_IMPL(int, 2, 4, int); +VEC_UPDATE_IMPL(int, 2, 2, float); +VEC_UPDATE_IMPL(int, 2, 3, float); +VEC_UPDATE_IMPL(int, 2, 4, float); +VEC_UPDATE_IMPL(int, 2, 2, double); +VEC_UPDATE_IMPL(int, 2, 3, double); +VEC_UPDATE_IMPL(int, 2, 4, double); + +VEC_UPDATE_IMPL(int, 3, 2, unsigned char); +VEC_UPDATE_IMPL(int, 3, 3, unsigned char); +VEC_UPDATE_IMPL(int, 3, 4, unsigned char); +VEC_UPDATE_IMPL(int, 3, 2, char); +VEC_UPDATE_IMPL(int, 3, 3, char); +VEC_UPDATE_IMPL(int, 3, 4, char); +VEC_UPDATE_IMPL(int, 3, 2, unsigned short); +VEC_UPDATE_IMPL(int, 3, 3, unsigned short); +VEC_UPDATE_IMPL(int, 3, 4, unsigned short); +VEC_UPDATE_IMPL(int, 3, 2, short); +VEC_UPDATE_IMPL(int, 3, 3, short); +VEC_UPDATE_IMPL(int, 3, 4, short); +VEC_UPDATE_IMPL(int, 3, 2, int); +VEC_UPDATE_IMPL(int, 3, 3, int); +VEC_UPDATE_IMPL(int, 3, 4, int); +VEC_UPDATE_IMPL(int, 3, 2, float); +VEC_UPDATE_IMPL(int, 3, 3, float); +VEC_UPDATE_IMPL(int, 3, 4, float); +VEC_UPDATE_IMPL(int, 3, 2, double); +VEC_UPDATE_IMPL(int, 3, 3, double); +VEC_UPDATE_IMPL(int, 3, 4, double); + +VEC_UPDATE_IMPL(float, 2, 2, unsigned char); +VEC_UPDATE_IMPL(float, 2, 3, unsigned char); +VEC_UPDATE_IMPL(float, 2, 4, unsigned char); +VEC_UPDATE_IMPL(float, 2, 2, char); +VEC_UPDATE_IMPL(float, 2, 3, char); +VEC_UPDATE_IMPL(float, 2, 4, char); +VEC_UPDATE_IMPL(float, 2, 2, unsigned short); +VEC_UPDATE_IMPL(float, 2, 3, unsigned short); +VEC_UPDATE_IMPL(float, 2, 4, unsigned short); +VEC_UPDATE_IMPL(float, 2, 2, short); +VEC_UPDATE_IMPL(float, 2, 3, short); +VEC_UPDATE_IMPL(float, 2, 4, short); +VEC_UPDATE_IMPL(float, 2, 2, int); +VEC_UPDATE_IMPL(float, 2, 3, int); +VEC_UPDATE_IMPL(float, 2, 4, int); +VEC_UPDATE_IMPL(float, 2, 2, float); +VEC_UPDATE_IMPL(float, 2, 3, float); +VEC_UPDATE_IMPL(float, 2, 4, float); +VEC_UPDATE_IMPL(float, 2, 2, double); +VEC_UPDATE_IMPL(float, 2, 3, double); +VEC_UPDATE_IMPL(float, 2, 4, double); + +VEC_UPDATE_IMPL(float, 3, 2, unsigned char); +VEC_UPDATE_IMPL(float, 3, 3, unsigned char); +VEC_UPDATE_IMPL(float, 3, 4, unsigned char); +VEC_UPDATE_IMPL(float, 3, 2, char); +VEC_UPDATE_IMPL(float, 3, 3, char); +VEC_UPDATE_IMPL(float, 3, 4, char); +VEC_UPDATE_IMPL(float, 3, 2, unsigned short); +VEC_UPDATE_IMPL(float, 3, 3, unsigned short); +VEC_UPDATE_IMPL(float, 3, 4, unsigned short); +VEC_UPDATE_IMPL(float, 3, 2, short); +VEC_UPDATE_IMPL(float, 3, 3, short); +VEC_UPDATE_IMPL(float, 3, 4, short); +VEC_UPDATE_IMPL(float, 3, 2, int); +VEC_UPDATE_IMPL(float, 3, 3, int); +VEC_UPDATE_IMPL(float, 3, 4, int); +VEC_UPDATE_IMPL(float, 3, 2, float); +VEC_UPDATE_IMPL(float, 3, 3, float); +VEC_UPDATE_IMPL(float, 3, 4, float); +VEC_UPDATE_IMPL(float, 3, 2, double); +VEC_UPDATE_IMPL(float, 3, 3, double); +VEC_UPDATE_IMPL(float, 3, 4, double); + + +VEC_UPDATE_IMPL(double, 2, 2, unsigned char); +VEC_UPDATE_IMPL(double, 2, 3, unsigned char); +VEC_UPDATE_IMPL(double, 2, 4, unsigned char); +VEC_UPDATE_IMPL(double, 2, 2, char); +VEC_UPDATE_IMPL(double, 2, 3, char); +VEC_UPDATE_IMPL(double, 2, 4, char); +VEC_UPDATE_IMPL(double, 2, 2, unsigned short); +VEC_UPDATE_IMPL(double, 2, 3, unsigned short); +VEC_UPDATE_IMPL(double, 2, 4, unsigned short); +VEC_UPDATE_IMPL(double, 2, 2, short); +VEC_UPDATE_IMPL(double, 2, 3, short); +VEC_UPDATE_IMPL(double, 2, 4, short); +VEC_UPDATE_IMPL(double, 2, 2, int); +VEC_UPDATE_IMPL(double, 2, 3, int); +VEC_UPDATE_IMPL(double, 2, 4, int); +VEC_UPDATE_IMPL(double, 2, 2, float); +VEC_UPDATE_IMPL(double, 2, 3, float); +VEC_UPDATE_IMPL(double, 2, 4, float); +VEC_UPDATE_IMPL(double, 2, 2, double); +VEC_UPDATE_IMPL(double, 2, 3, double); +VEC_UPDATE_IMPL(double, 2, 4, double); + +VEC_UPDATE_IMPL(double, 3, 2, unsigned char); +VEC_UPDATE_IMPL(double, 3, 3, unsigned char); +VEC_UPDATE_IMPL(double, 3, 4, unsigned char); +VEC_UPDATE_IMPL(double, 3, 2, char); +VEC_UPDATE_IMPL(double, 3, 3, char); +VEC_UPDATE_IMPL(double, 3, 4, char); +VEC_UPDATE_IMPL(double, 3, 2, unsigned short); +VEC_UPDATE_IMPL(double, 3, 3, unsigned short); +VEC_UPDATE_IMPL(double, 3, 4, unsigned short); +VEC_UPDATE_IMPL(double, 3, 2, short); +VEC_UPDATE_IMPL(double, 3, 3, short); +VEC_UPDATE_IMPL(double, 3, 4, short); +VEC_UPDATE_IMPL(double, 3, 2, int); +VEC_UPDATE_IMPL(double, 3, 3, int); +VEC_UPDATE_IMPL(double, 3, 4, int); +VEC_UPDATE_IMPL(double, 3, 2, float); +VEC_UPDATE_IMPL(double, 3, 3, float); +VEC_UPDATE_IMPL(double, 3, 4, float); +VEC_UPDATE_IMPL(double, 3, 2, double); +VEC_UPDATE_IMPL(double, 3, 3, double); +VEC_UPDATE_IMPL(double, 3, 4, double); +//==================================================================== + +//==================================================================== +template +void clitk::ImageConvertGenericFilter::UpdateWithOutputVectorType() +{ + // Read + typename InputImageType::Pointer input =this->template GetInput(0); + + // Typedef + typedef typename InputImageType::PixelType::ValueType PixelType; + + // Warning + std::ostringstream osstream; + if (std::numeric_limits::is_signed) { + if (!std::numeric_limits::is_signed) { + osstream << "Warning, input type is signed (" << m_PixelTypeName << ") while output type is not (" + << mOutputPixelTypeName << "), use at your own responsability." << std::endl; + mWarningOccur = true; + } + } + if (!std::numeric_limits::is_integer) { + if (std::numeric_limits::is_integer) { + osstream << "Warning, input type is not integer (" << m_PixelTypeName << ") while output type is (" + << mOutputPixelTypeName << "), use at your own responsability." << std::endl; + mWarningOccur = true; + } + } + // DD(std::numeric_limits::digits10); + // DD(std::numeric_limits::digits10); + if (!std::numeric_limits::is_integer) { + if (std::numeric_limits::is_integer) { + osstream << "Warning, input type is not integer (" << m_PixelTypeName << ") while output type is (" + << mOutputPixelTypeName << "), use at your own responsability." << std::endl; + mWarningOccur = true; + } + } + if (std::numeric_limits::digits10 > std::numeric_limits::digits10) { + osstream << "Warning, possible loss of precision : input type is (" << m_PixelTypeName << ") while output type is (" + << mOutputPixelTypeName << "), use at your own responsability." << std::endl; + mWarningOccur = true; + } + + mWarning = osstream.str(); + if (mDisplayWarning) { + std::cerr << mWarning; + } + + // Cast + typedef itk::Image, InputImageType::ImageDimension> OutputImageType; + typedef itk::VectorCastImageFilter FilterType; + typename FilterType::Pointer filter = FilterType::New(); + filter->SetInput(input); + filter->Update(); + + // Write + SetNextOutput(filter->GetOutput()); + //clitk::writeImage(filter->GetOutput(), mOutputFilename, m_IOVerbose); +} +//==================================================================== #endif /* end #define CLITKIMAGECONVERTGENERICFILTER_CXX */ diff --git a/tools/clitkImageConvertGenericFilter.h b/tools/clitkImageConvertGenericFilter.h index 6064b18..71ef2c9 100644 --- a/tools/clitkImageConvertGenericFilter.h +++ b/tools/clitkImageConvertGenericFilter.h @@ -30,8 +30,6 @@ // clitk include #include "clitkImageToImageGenericFilter.h" -// itk include -#include "itkCastImageFilter.h" namespace clitk { @@ -69,10 +67,322 @@ namespace clitk { bool mDisplayWarning; template void UpdateWithOutputType(); + template void UpdateWithOutputVectorType(); }; // end class ImageConvertGenericFilter - //#include "clitkImageConvertGenericFilter.txx" +#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