]> Creatis software - bbtk.git/blob - packages/itk/src/bbitkImageSeriesReader.cxx
*** empty log message ***
[bbtk.git] / packages / itk / src / bbitkImageSeriesReader.cxx
1 /*=========================================================================
2                                                                                 
3   Program:   bbtk
4   Module:    $RCSfile: bbitkImageSeriesReader.cxx,v $
5   Language:  C++
6   Date:      $Date: 2008/05/16 14:03:19 $
7   Version:   $Revision: 1.4 $
8                                                                                 
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.
12                                                                                 
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.
16                                                                                 
17 =========================================================================*/
18 /**
19  *  \file 
20  *  \brief 
21  */
22 #ifdef _USE_ITK_
23
24 #include "bbitkImageSeriesReader.h"
25 #include "bbitkPackage.h"
26 #include "itkImageSeriesReader.h"
27
28 namespace bbitk 
29 {
30   BBTK_BLACK_BOX_IMPLEMENTATION(ImageSeriesReader,bbtk::AtomicBlackBox);
31   
32   BBTK_ADD_BLACK_BOX_TO_PACKAGE(itk,ImageSeriesReader);
33
34
35
36
37   void ImageSeriesReader::Read()
38   {
39     const std::vector<std::string>& filenames = bbGetInputFileNames();
40     if (!filenames.size()) 
41       {
42         typedef Image_uint8_t_2_ptr itype;
43         Image_uint8_t_2::Pointer p = Image_uint8_t_2::New();
44         Image_uint8_t_2::IndexType i;
45         i.Fill(0);
46         Image_uint8_t_2::SizeType s;
47         s.Fill(1);
48         Image_uint8_t_2::RegionType r(i,s);
49         p->SetRegions(r);
50         p->Allocate();
51         p->Register();
52         bbSetOutputOut(p.GetPointer());
53         return;
54         //bbtkError("Void vector passed to "<<bbGetFullName());
55       }
56
57     std::string filename = filenames[0];
58
59     itk::ImageIOBase::Pointer genericReader = 
60       itk::ImageIOFactory::CreateImageIO(filename.c_str(), 
61                                          itk::ImageIOFactory::ReadMode);
62     if (!genericReader)
63       {
64         bbtkError(bbGetFullName()<<" : File format unknown (while reading \"" << filename << "\")");
65       }
66     genericReader->SetFileName(filename.c_str());
67     genericReader->ReadImageInformation();  
68     
69     bbtk::TypeInfo typ = GetITKImagePtrTypeInfoFromPixelTypeInfoAndDimension(genericReader->GetComponentTypeInfo(), genericReader->GetNumberOfDimensions());
70     
71     BBTK_TEMPLATE_ITK_IMAGE_SWITCH(typ,Read);
72   
73   }
74
75
76
77   /** 
78       Template Processing 
79   */
80   template<class T>
81   void ImageSeriesReader::Read()
82   {
83     bbtkDebugMessageInc("Core",9,"bbitk::ImageSeriesReader<"
84                         <<bbtk::TypeName<T>()
85                         <<">::Read()"<<std::endl);
86
87
88
89     typedef T itkImageType;
90     typedef itk::ImageSeriesReader< itkImageType > itkReaderType;
91
92     typename itkReaderType::Pointer reader = itkReaderType::New();
93     const std::vector<std::string>& filenames = bbGetInputFileNames();
94     reader->SetFileNames(filenames);
95     try { reader->Update(); }
96     catch( std::exception& e ) 
97       {
98         bbtkError("could not read image series : "<<e.what());
99       }
100
101     reader->GetOutput()->Register();
102     //    if (bbGetOutputOut()) 
103     bbSetOutputOut ( reader->GetOutput() );
104
105     bbtkDebugDecTab("Core",9);
106   }
107
108
109
110
111
112
113 }
114 // eo namespace bbtk
115
116 #endif