1 /*=========================================================================
4 Module: $RCSfile: bbitkImageSeriesReader.cxx,v $
6 Date: $Date: 2008/06/26 07:55:12 $
7 Version: $Revision: 1.5 $
9 Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de
10 l'Image). All rights reserved. See Doc/License.txt or
11 http://www.creatis.insa-lyon.fr/Public/bbtk/License.html for details.
13 This software is distributed WITHOUT ANY WARRANTY; without even
14 the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
15 PURPOSE. See the above copyright notices for more information.
17 =========================================================================*/
24 #include "bbitkImageSeriesReader.h"
25 #include "bbitkPackage.h"
26 #include "itkImageSeriesReader.h"
30 BBTK_BLACK_BOX_IMPLEMENTATION(ImageSeriesReader,bbtk::AtomicBlackBox);
32 BBTK_ADD_BLACK_BOX_TO_PACKAGE(itk,ImageSeriesReader);
34 void ImageSeriesReader::Read()
36 const std::vector<std::string>& filenames = bbGetInputFileNames();
37 if (!filenames.size())
39 typedef Image_uint8_t_2_ptr itype;
40 Image_uint8_t_2::Pointer p = Image_uint8_t_2::New();
41 Image_uint8_t_2::IndexType i;
43 Image_uint8_t_2::SizeType s;
45 Image_uint8_t_2::RegionType r(i,s);
49 bbSetOutputOut(p.GetPointer());
51 //bbtkError("Void vector passed to "<<bbGetFullName());
54 std::string filename = filenames[0];
56 itk::ImageIOBase::Pointer genericReader =
57 itk::ImageIOFactory::CreateImageIO(filename.c_str(),
58 itk::ImageIOFactory::ReadMode);
61 bbtkError(bbGetFullName()<<" : File format unknown (while reading \"" << filename << "\")");
63 genericReader->SetFileName(filename.c_str());
64 genericReader->ReadImageInformation();
66 bbtk::TypeInfo typ = GetITKImagePtrTypeInfoFromPixelTypeInfoAndDimension(genericReader->GetComponentTypeInfo(), genericReader->GetNumberOfDimensions());
68 BBTK_TEMPLATE_ITK_IMAGE_SWITCH(typ,Read);
76 void ImageSeriesReader::Read()
78 bbtkDebugMessageInc("Core",9,"bbitk::ImageSeriesReader<"
80 <<">::Read()"<<std::endl);
82 typedef T itkImageType;
83 typedef itk::ImageSeriesReader< itkImageType > itkReaderType;
85 typename itkReaderType::Pointer reader = itkReaderType::New();
86 const std::vector<std::string>& filenames = bbGetInputFileNames();
87 reader->SetFileNames(filenames);
88 try { reader->Update(); }
89 catch( std::exception& e )
91 bbtkError("could not read image series : "<<e.what());
94 reader->GetOutput()->Register();
95 // if (bbGetOutputOut())
96 bbSetOutputOut ( reader->GetOutput() );
98 bbtkDebugDecTab("Core",9);