36 #include "itkNumericTraits.h"
38 #include "vtkImageData.h"
39 #include "vtkImageAppend.h"
41 #include "vtkJPEGReader.h"
42 #include "vtkBMPReader.h"
43 #include "vtkPNGReader.h"
44 #include "vtkTIFFReader.h"
45 #include "vtkMetaImageReader.h"
53 m_FileType(GoFigure::
PNG),
58 unsigned int max_uint = itk::NumericTraits< unsigned int >::max();
151 if ( iUserFileList.size() == 0 )
153 std::cerr <<
"iUserFileList.empty()" << std::endl;
170 GoFigureFileInfoHelperMultiIndexContainer::index< m_TCoord >::type::iterator
176 GoFigureFileInfoHelperMultiIndexContainer::index< m_TCoord >::type::reverse_iterator
177 r_tm_it =
m_FileList.get< m_TCoord >().rbegin();
182 GoFigureFileInfoHelperMultiIndexContainer::index< m_ZCoord >::type::iterator
188 GoFigureFileInfoHelperMultiIndexContainer::index< m_ZCoord >::type::reverse_iterator
189 r_zs_it =
m_FileList.get< m_ZCoord >().rbegin();
194 GoFigureFileInfoHelperMultiIndexContainer::index< m_Channel >::type::iterator
195 ch_it =
m_FileList.get< m_Channel >().begin();
200 GoFigureFileInfoHelperMultiIndexContainer::index< m_Channel >::type::reverse_iterator
201 r_ch_it =
m_FileList.get< m_Channel >().rbegin();
210 const std::string & iFileName,
211 vtkImageAppend *iBuilder)
217 AddToVolumeBuilder< vtkJPEGReader >(iCounter, iFileName, iBuilder);
222 AddToVolumeBuilder< vtkBMPReader >(iCounter, iFileName, iBuilder);
227 AddToVolumeBuilder< vtkPNGReader >(iCounter, iFileName, iBuilder);
232 AddToVolumeBuilder< vtkTIFFReader >(iCounter, iFileName, iBuilder);
237 AddToVolumeBuilder< vtkMetaImageReader >(iCounter, iFileName,
243 itkGenericExceptionMacro(<<
"stacks of 2D LSM are not supported at this time.");
248 itkGenericExceptionMacro(<<
"unsupported type: " <<
m_FileType <<
".");
262 this->InvokeEvent( StartEvent() );
264 std::map< unsigned int, std::list< std::string > > filelistperchannel;
280 std::map< unsigned int, std::list< std::string > >::iterator
281 fch_it = filelistperchannel.begin();
282 std::map< unsigned int, std::list< std::string > >::iterator
283 fch_end = filelistperchannel.end();
286 size_t size = filelistperchannel.size() * fch_it->second.size();
288 while ( fch_it != fch_end )
292 vtkSmartPointer< vtkImageAppend > volumeBuilder =
293 vtkSmartPointer< vtkImageAppend >::New();
294 volumeBuilder->SetNumberOfThreads(VTK_MAX_THREADS);
295 volumeBuilder->SetAppendAxis(2);
297 std::list< std::string >::iterator f_it = fch_it->second.begin();
298 std::list< std::string >::iterator f_end = fch_it->second.end();
300 while ( f_it != f_end )
304 this->SetProgress( static_cast< float >( kk ) / static_cast< float >( size ) );
311 volumeBuilder->Update();
312 vtkImageData *temp_output = volumeBuilder->GetOutput();
314 double zspacing = 1.;
344 this->InvokeEvent( EndEvent() );
351 vtkSmartPointer< vtkImageData >
354 std::map< unsigned int, vtkImageData * >::iterator
373 vtkSmartPointer< vtkImageData >
375 const unsigned int & iT)
377 std::list< std::string > filenames =
380 if ( filenames.empty() )
386 vtkSmartPointer< vtkImageAppend > volumeBuilder =
387 vtkSmartPointer< vtkImageAppend >::New();
388 volumeBuilder->SetNumberOfThreads(VTK_MAX_THREADS);
389 volumeBuilder->SetAppendAxis(2);
391 std::list< std::string >::iterator f_it = filenames.begin();
392 std::list< std::string >::iterator f_end = filenames.end();
395 while ( f_it != f_end )
401 volumeBuilder->Update();
402 vtkSmartPointer< vtkImageData > temp_output = vtkSmartPointer< vtkImageData >::New();
403 temp_output->ShallowCopy( volumeBuilder->GetOutput() );
414 std::map< unsigned int, vtkImageData * >
422 std::vector< std::vector< int > >
std::map< unsigned int, vtkImageData * > GetOutputs()
unsigned int m_UpdateZSlice
vtkSmartPointer< vtkImageData > GetImage(const unsigned int &iChannel, const unsigned int &iT)
unsigned int m_UpdateTimePoint
void SetZSlice(const unsigned int &iZs)
vtkSmartPointer< vtkImageData > GetOutput(const unsigned int &iChannel)
unsigned int m_MinChannel
void SetMegaCaptureHeader(const std::string &iHeader)
void SetTimePoint(const unsigned int &iTm)
unsigned int m_MinTimePoint
unsigned int m_MaxTimePoint
MegaCaptureHeaderReader * m_HeaderReader
std::map< unsigned int, vtkImageData * > m_OutputImageMap
std::vector< std::vector< int > > GetChannelColor()
unsigned int m_TimeInterval
unsigned int m_MaxChannel
void AddToVTKVolumeBuilder(const int &iCounter, const std::string &iFileName, vtkImageAppend *iBuilder)
GoFigureFileInfoHelperMultiIndexContainer m_FileList
std::vector< std::vector< int > > m_ChannelColor
GoFigure::FileType m_FileType
void SetInput(const GoFigureFileInfoHelperMultiIndexContainer &UserFileList)
set the input as a GoFigure format file list