#include <cpPlugins/Plugins/ImageReader.h>
#include <cpPlugins/Interface/Image.h>
-#include <complex>
#include <set>
-#define ITK_MANUAL_INSTANTIATION
-#include <itkImage.h>
-
-#include <itkCovariantVector.h>
-#include <itkDiffusionTensor3D.h>
-#include <itkPoint.h>
-#include <itkRGBPixel.h>
-#include <itkRGBAPixel.h>
-#include <itkSymmetricSecondRankTensor.h>
-#include <itkVector.h>
-
-#undef ITK_MANUAL_INSTANTIATION
#include <itkImageFileReader.h>
#include <itkImageSeriesReader.h>
{
io->SetFileName( names[ 0 ] );
io->ReadImageInformation( );
- if( names.size( ) == 1 )
+ if( names.size( ) >= 1 )
{
switch( io->GetNumberOfDimensions( ) )
{
case 3: r = this->_GD0< 3 >( io, names ); break;
case 4: r = this->_GD0< 4 >( io, names ); break;
default:
- r = "ImageReader: Single image dimension not supported.";
- break;
- } // hctiws
- }
- else if( names.size( ) > 1 )
- {
- switch( io->GetNumberOfDimensions( ) )
- {
- case 1: r = this->_GD0< 2 >( io, names ); break;
- case 2: r = this->_GD0< 3 >( io, names ); break;
- case 3: r = this->_GD0< 4 >( io, names ); break;
- default:
- r = "ImageReader: Multiple images dimension not supported.";
+ r = "ImageReader: Image dimension not supported.";
break;
} // hctiws
case itk::ImageIOBase::SHORT:
r = this->_RealGD< itk::RGBPixel< short >, 2 >( names );
break;
+ case itk::ImageIOBase::UINT:
+ r = this->_RealGD< itk::RGBPixel< unsigned int >, 2 >( names );
+ break;
+ case itk::ImageIOBase::INT:
+ r = this->_RealGD< itk::RGBPixel< int >, 2 >( names );
+ break;
+ case itk::ImageIOBase::ULONG:
+ r = this->_RealGD< itk::RGBPixel< unsigned long >, 2 >( names );
+ break;
+ case itk::ImageIOBase::LONG:
+ r = this->_RealGD< itk::RGBPixel< long >, 2 >( names );
+ break;
+ case itk::ImageIOBase::FLOAT:
+ r = this->_RealGD< itk::RGBPixel< float >, 2 >( names );
+ break;
+ case itk::ImageIOBase::DOUBLE:
+ r = this->_RealGD< itk::RGBPixel< double >, 2 >( names );
+ break;
default:
- r = "ImageReader: Scalar pixel type not supported.";
+ r = "ImageReader: RGB pixel type not supported.";
break;
} // hctiws
}
case itk::ImageIOBase::SHORT:
r = this->_RealGD< itk::RGBPixel< short >, 3 >( names );
break;
+ case itk::ImageIOBase::UINT:
+ r = this->_RealGD< itk::RGBPixel< unsigned int >, 3 >( names );
+ break;
+ case itk::ImageIOBase::INT:
+ r = this->_RealGD< itk::RGBPixel< int >, 3 >( names );
+ break;
+ case itk::ImageIOBase::ULONG:
+ r = this->_RealGD< itk::RGBPixel< unsigned long >, 3 >( names );
+ break;
+ case itk::ImageIOBase::LONG:
+ r = this->_RealGD< itk::RGBPixel< long >, 3 >( names );
+ break;
+ case itk::ImageIOBase::FLOAT:
+ r = this->_RealGD< itk::RGBPixel< float >, 3 >( names );
+ break;
+ case itk::ImageIOBase::DOUBLE:
+ r = this->_RealGD< itk::RGBPixel< double >, 3 >( names );
+ break;
default:
- r = "ImageReader: Scalar pixel type not supported.";
+ r = "ImageReader: RGB pixel type not supported.";
break;
} // hctiws
}
case itk::ImageIOBase::SHORT:
r = this->_RealGD< itk::RGBPixel< short >, 4 >( names );
break;
+ case itk::ImageIOBase::UINT:
+ r = this->_RealGD< itk::RGBPixel< unsigned int >, 4 >( names );
+ break;
+ case itk::ImageIOBase::INT:
+ r = this->_RealGD< itk::RGBPixel< int >, 4 >( names );
+ break;
+ case itk::ImageIOBase::ULONG:
+ r = this->_RealGD< itk::RGBPixel< unsigned long >, 4 >( names );
+ break;
+ case itk::ImageIOBase::LONG:
+ r = this->_RealGD< itk::RGBPixel< long >, 4 >( names );
+ break;
+ case itk::ImageIOBase::FLOAT:
+ r = this->_RealGD< itk::RGBPixel< float >, 4 >( names );
+ break;
+ case itk::ImageIOBase::DOUBLE:
+ r = this->_RealGD< itk::RGBPixel< double >, 4 >( names );
+ break;
default:
- r = "ImageReader: Scalar pixel type not supported.";
+ r = "ImageReader: RGB pixel type not supported.";
break;
} // hctiws
case itk::ImageIOBase::SHORT:
r = this->_RealGD< itk::RGBAPixel< short >, 2 >( names );
break;
+ case itk::ImageIOBase::UINT:
+ r = this->_RealGD< itk::RGBAPixel< unsigned int >, 2 >( names );
+ break;
+ case itk::ImageIOBase::INT:
+ r = this->_RealGD< itk::RGBAPixel< int >, 2 >( names );
+ break;
+ case itk::ImageIOBase::ULONG:
+ r = this->_RealGD< itk::RGBAPixel< unsigned long >, 2 >( names );
+ break;
+ case itk::ImageIOBase::LONG:
+ r = this->_RealGD< itk::RGBAPixel< long >, 2 >( names );
+ break;
+ case itk::ImageIOBase::FLOAT:
+ r = this->_RealGD< itk::RGBAPixel< float >, 2 >( names );
+ break;
+ case itk::ImageIOBase::DOUBLE:
+ r = this->_RealGD< itk::RGBAPixel< double >, 2 >( names );
+ break;
default:
- r = "ImageReader: Scalar pixel type not supported.";
+ r = "ImageReader: RGBA pixel type not supported.";
break;
} // hctiws
}
case itk::ImageIOBase::SHORT:
r = this->_RealGD< itk::RGBAPixel< short >, 3 >( names );
break;
+ case itk::ImageIOBase::UINT:
+ r = this->_RealGD< itk::RGBAPixel< unsigned int >, 3 >( names );
+ break;
+ case itk::ImageIOBase::INT:
+ r = this->_RealGD< itk::RGBAPixel< int >, 3 >( names );
+ break;
+ case itk::ImageIOBase::ULONG:
+ r = this->_RealGD< itk::RGBAPixel< unsigned long >, 3 >( names );
+ break;
+ case itk::ImageIOBase::LONG:
+ r = this->_RealGD< itk::RGBAPixel< long >, 3 >( names );
+ break;
+ case itk::ImageIOBase::FLOAT:
+ r = this->_RealGD< itk::RGBAPixel< float >, 3 >( names );
+ break;
+ case itk::ImageIOBase::DOUBLE:
+ r = this->_RealGD< itk::RGBAPixel< double >, 3 >( names );
+ break;
default:
- r = "ImageReader: Scalar pixel type not supported.";
+ r = "ImageReader: RGBA pixel type not supported.";
break;
} // hctiws
}
case itk::ImageIOBase::SHORT:
r = this->_RealGD< itk::RGBAPixel< short >, 4 >( names );
break;
+ case itk::ImageIOBase::UINT:
+ r = this->_RealGD< itk::RGBAPixel< unsigned int >, 4 >( names );
+ break;
+ case itk::ImageIOBase::INT:
+ r = this->_RealGD< itk::RGBAPixel< int >, 4 >( names );
+ break;
+ case itk::ImageIOBase::ULONG:
+ r = this->_RealGD< itk::RGBAPixel< unsigned long >, 4 >( names );
+ break;
+ case itk::ImageIOBase::LONG:
+ r = this->_RealGD< itk::RGBAPixel< long >, 4 >( names );
+ break;
+ case itk::ImageIOBase::FLOAT:
+ r = this->_RealGD< itk::RGBAPixel< float >, 4 >( names );
+ break;
+ case itk::ImageIOBase::DOUBLE:
+ r = this->_RealGD< itk::RGBAPixel< double >, 4 >( names );
+ break;
default:
- r = "ImageReader: Scalar pixel type not supported.";
+ r = "ImageReader: RGBA pixel type not supported.";
break;
} // hctiws
r = this->_RealGD< itk::CovariantVector< double, D >, D >( names );
break;
default:
- r = "ImageReader: Vector type not supported.";
+ r = "ImageReader: CovariantVector type not supported.";
break;
} // hctiws
}
break;
} // hctiws
}
+ else if( D == 4 )
+ {
+ switch( ct )
+ {
+ case itk::ImageIOBase::FLOAT:
+ r = this->_RealGD< itk::DiffusionTensor3D< float >, 4 >( names );
+ break;
+ case itk::ImageIOBase::DOUBLE:
+ r = this->_RealGD< itk::DiffusionTensor3D< double >, 4 >( names );
+ break;
+ default:
+ r = "ImageReader: Diffusion tensor type not supported.";
+ break;
+ } // hctiws
+ }
else
r = "ImageReader: Diffusion tensor dimension not supported.";
}
{
typedef itk::Image< P, D > _I;
+ cpPlugins::Interface::Image* out =
+ this->GetOutput< cpPlugins::Interface::Image >( 0 );
+ if( out == NULL )
+ return( "ImageReader: No output object properly created." );
+
std::string r = "";
if( names.size( ) == 1 )
{
try
{
reader->Update( );
- cpPlugins::Interface::Image* out =
- this->_Output< cpPlugins::Interface::Image >( 0 );
- if( out != NULL )
- out->SetITKImage< _I >( reader->GetOutput( ) );
- else
- r = "ImageReader: output not correctly created.";
+ out->SetITKImage< _I >( reader->GetOutput( ) );
}
catch( itk::ExceptionObject& err )
{
r = "ImageReader: " + std::string( err.GetDescription( ) );
- cpPlugins::Interface::Image* out =
- this->_Output< cpPlugins::Interface::Image >( 0 );
- if( out != NULL )
- out->SetITKImage< _I >( NULL );
- else
- r = "ImageReader: output not correctly created.";
+ out->SetITKImage< _I >( NULL );
} // yrt
}
} // fi
std::set< std::string >::const_iterator fnIt = ordered_names.begin( );
for( ; fnIt != ordered_names.end( ); ++fnIt )
+ {
reader->AddFileName( *fnIt );
+ }
try
{
reader->Update( );
- cpPlugins::Interface::Image* out =
- this->_Output< cpPlugins::Interface::Image >( 0 );
- if( out != NULL )
- out->SetITKImage< _I >( reader->GetOutput( ) );
- else
- r = "ImageReader: output not correctly created.";
+ out->SetITKImage< _I >( reader->GetOutput( ) );
}
catch( itk::ExceptionObject& err )
{
r = "ImageReader: " + std::string( err.GetDescription( ) );
- cpPlugins::Interface::Image* out =
- this->_Output< cpPlugins::Interface::Image >( 0 );
- if( out != NULL )
- out->SetITKImage< _I >( NULL );
- else
- r = "ImageReader: output not correctly created.";
+ out->SetITKImage< _I >( NULL );
} // yrt
}