1 // =========================================================================
2 // @author Leonardo Florez Valencia
3 // @email florez-l@javeriana.edu.co
4 // =========================================================================
5 #ifndef __CTBronchi__Functions__h__
6 #define __CTBronchi__Functions__h__
9 #include <itkImageFileReader.h>
10 #include <itkImageFileWriter.h>
14 // -----------------------------------------------------------------------
15 double MeasureTime( itk::ProcessObject* f )
17 std::chrono::time_point< std::chrono::high_resolution_clock > s, e;
18 std::chrono::duration< double > t;
19 s = std::chrono::high_resolution_clock::now( );
21 e = std::chrono::high_resolution_clock::now( );
26 // -----------------------------------------------------------------------
27 template< class _TImagePtr >
28 void ReadImage( _TImagePtr& image, const std::string& fname )
30 typedef typename _TImagePtr::ObjectType _TImage;
31 typedef itk::ImageFileReader< _TImage > _TReader;
32 typename _TReader::Pointer reader = _TReader::New( );
33 reader->SetFileName( fname );
34 double t = MeasureTime( reader );
35 std::cout << "Read \"" << fname << "\" in " << t << " s" << std::endl;
36 image = reader->GetOutput( );
37 image->DisconnectPipeline( );
40 // -----------------------------------------------------------------------
41 template< class _TImage >
42 void WriteImage( const _TImage* image, const std::string& fname )
44 typedef itk::ImageFileWriter< _TImage > _TWriter;
45 typename _TWriter::Pointer writer = _TWriter::New( );
46 writer->SetFileName( fname );
47 writer->SetInput( image );
48 double t = MeasureTime( writer );
49 std::cout << "Wrote \"" << fname << "\" in " << t << " s" << std::endl;
54 #endif // __CTBronchi__Functions__h__