Public Member Functions | Private Member Functions | Private Attributes

creaImageIO::WxAnySimpleDlg Class Reference
[View]

Simple Wxwidgets interface to select file(s) or directory or from creaImageIO database to display. More...

#include <creaImageIOWxAnySimpleDlg.h>

Collaboration diagram for creaImageIO::WxAnySimpleDlg:
Collaboration graph
[legend]

List of all members.

Public Member Functions

 WxAnySimpleDlg (wxWindow *parent, wxString i_title=_T(""), const std::string i_namedescp="localdatabase_Descriptor.dscp", const std::string i_namedb="Local Database")
 Ctor.
 ~WxAnySimpleDlg ()
void setExts (std::vector< std::string >)
void OnReadFile (wxCommandEvent &event)
 Callback to read file(s).
void OnReadDirectory (wxCommandEvent &event)
 Callback to read directory, no recursive.
void OnReadGimmick (wxCommandEvent &event)
 Callback to select from creaImageIO database.
std::vector< vtkImageData * > getVtkImagesSelected ()
 return a vtkImageData vector of selected images, if available
wxString getInfoImage ()
void set (bool i_dicom)
std::vector< boost::any > & getImagesSelected ()
std::vector< size_t > getDims ()
std::vector< std::type_info * > getTypes ()
template<typename TImage >
std::vector< typename
TImage::Pointer > 
getTemplatedImagesSelected ()
bool AllSameType ()

Private Member Functions

template<class TImage >
void split3Din3Dvtk (TImage *i_Img)
template<typename TImage >
void split4Din3Dvtk (TImage *i_Img)
void readImg (const std::string &i_name)
void readDicomImg (const std::vector< std::string > &i_names)
const size_t getNumberOfDimensions (const std::string &i_name)
const std::type_info & getType (const std::string &i_name)

Private Attributes

std::vector< size_t > m_AnyDims
std::vector< std::type_info * > m_AnyType
std::vector< boost::any > m_AnyImages
std::vector< std::string > m_exts
std::string namedescp
std::string namedb
wxString infoimage
std::string m_dir
bool m_dicom
SimpleView m_view
 interface to read data
std::vector< vtkImageData * > m_Vresults

Detailed Description

Simple Wxwidgets interface to select file(s) or directory or from creaImageIO database to display.

Definition at line 21 of file creaImageIOWxAnySimpleDlg.h.


Constructor & Destructor Documentation

creaImageIO::WxAnySimpleDlg::WxAnySimpleDlg ( wxWindow *  parent,
wxString  i_title = _T(""),
const std::string  i_namedescp = "localdatabase_Descriptor.dscp",
const std::string  i_namedb = "Local Database" 
)

Ctor.

Button to select Bruker directory

Definition at line 25 of file creaImageIOWxAnySimpleDlg.cpp.

References m_dicom, namedb, namedescp, OnReadDirectory(), OnReadFile(), and OnReadGimmick().

    : wxDialog(parent, -1,_T("DISPLAY IMAGES"), wxDefaultPosition, wxSize(230,150))
   {
        namedescp    = i_namedescp; 
        namedb       = i_namedb;

       if(!i_title.empty())
       {
            this->SetTitle(i_title);  
       }
       // Button to select file(s)
       wxButton *fileBut = new wxButton(this, -1,_T("Select a file to display"), wxPoint(10,7) );
       Connect( fileBut->GetId(), wxEVT_COMMAND_BUTTON_CLICKED , (wxObjectEventFunction) &WxAnySimpleDlg::OnReadFile ); 

       // Button to select directory
       wxButton *directoryBut = new wxButton(this, -1,_T("Select a directory to display"), wxPoint(10,40) );
       Connect( directoryBut->GetId(), wxEVT_COMMAND_BUTTON_CLICKED , (wxObjectEventFunction) &WxAnySimpleDlg::OnReadDirectory ); 

       // button to select creaImageIO
       wxButton *gimmickBut = new wxButton(this, -1,_T("Select Gimmick"), wxPoint(10,70) );
       Connect( gimmickBut->GetId(), wxEVT_COMMAND_BUTTON_CLICKED , (wxObjectEventFunction) &WxAnySimpleDlg::OnReadGimmick ); 

        m_dicom = true;

Here is the call graph for this function:

creaImageIO::WxAnySimpleDlg::~WxAnySimpleDlg (  )  [inline]

Definition at line 31 of file creaImageIOWxAnySimpleDlg.h.

{};


Member Function Documentation

bool creaImageIO::WxAnySimpleDlg::AllSameType (  ) 

Definition at line 581 of file creaImageIOWxAnySimpleDlg.cpp.

      {
           if(m_AnyType.size() == 1)
           {
               return true;
           }
           else
           {
               return false;
           }

std::vector< size_t> creaImageIO::WxAnySimpleDlg::getDims (  )  [inline]

Definition at line 52 of file creaImageIOWxAnySimpleDlg.h.

{ return m_AnyDims;} // comment out const // JPR

std::vector<boost::any>& creaImageIO::WxAnySimpleDlg::getImagesSelected (  )  [inline]

Definition at line 49 of file creaImageIOWxAnySimpleDlg.h.

{ return m_AnyImages;}

wxString creaImageIO::WxAnySimpleDlg::getInfoImage (  ) 

Definition at line 179 of file creaImageIOWxAnySimpleDlg.cpp.

References infoimage.

    {

const size_t creaImageIO::WxAnySimpleDlg::getNumberOfDimensions ( const std::string &  i_name  )  [private]

Definition at line 195 of file creaImageIOWxAnySimpleDlg.cpp.

     {
            typedef itk::ImageIOBase::IOComponentType ScalarPixelType;
            itk::ImageIOBase::Pointer imageIO =  itk::ImageIOFactory::CreateImageIO(i_name.c_str(), itk::ImageIOFactory::ReadMode);
            imageIO->SetFileName(i_name.c_str());
            imageIO->ReadImageInformation();

template<typename TImage >
std::vector<typename TImage::Pointer> creaImageIO::WxAnySimpleDlg::getTemplatedImagesSelected (  )  [inline]

Definition at line 72 of file creaImageIOWxAnySimpleDlg.h.

          {
             std::vector<typename TImage::Pointer> imgs;
             std::vector<boost::any>::iterator it = m_AnyImages.begin();
             for(; it != m_AnyImages.end(); it++)
             {
                 imgs.push_back(boost::any_cast<TImage*> (*it));
             }
             return imgs;
          }

const std::type_info & creaImageIO::WxAnySimpleDlg::getType ( const std::string &  i_name  )  [private]

Definition at line 186 of file creaImageIOWxAnySimpleDlg.cpp.

             : just to check but not needed, we hardly suppose that we load only same type and dim of images
    const std::type_info & WxAnySimpleDlg::getType(const std::string &i_name)
    {
            typedef itk::ImageIOBase::IOComponentType ScalarPixelType;
            itk::ImageIOBase::Pointer imageIO =  itk::ImageIOFactory::CreateImageIO(i_name.c_str(), itk::ImageIOFactory::ReadMode);
            imageIO->SetFileName(i_name.c_str());
            imageIO->ReadImageInformation();

std::vector<std::type_info *> creaImageIO::WxAnySimpleDlg::getTypes (  )  [inline]

Definition at line 55 of file creaImageIOWxAnySimpleDlg.h.

{ return m_AnyType;} // comment out const // JPR

std::vector<vtkImageData*> creaImageIO::WxAnySimpleDlg::getVtkImagesSelected (  )  [inline]

return a vtkImageData vector of selected images, if available

Definition at line 44 of file creaImageIOWxAnySimpleDlg.h.

{return m_Vresults;}

void creaImageIO::WxAnySimpleDlg::OnReadDirectory ( wxCommandEvent &  event  ) 

Callback to read directory, no recursive.

Definition at line 95 of file creaImageIOWxAnySimpleDlg.cpp.

Referenced by WxAnySimpleDlg().

      {
         int resultShowModal;
         bool bvalid = false;
         long style = wxDD_DEFAULT_STYLE | wxDD_DIR_MUST_EXIST;
         wxDirDialog* dirDlg = new wxDirDialog( 0, _T("Select the directory to display"), _T(""), style);
         
         resultShowModal = dirDlg->ShowModal();
         if ( resultShowModal==wxID_OK )
         {  
            std::string path = crea::wx2std(dirDlg->GetPath());
            typedef boost::filesystem::directory_iterator dir_it;
            dir_it itr(path);
            dir_it end_itr;
            /*if (boost::filesystem::exists(path))
            {*/
                for(;itr != end_itr; ++itr)
                {
                       bvalid = m_exts.size() == 0? true : false;
                       std::vector<std::string>::iterator it = m_exts.begin();
                       std::string ext = itr->filename().substr(itr->filename().find_last_of("."));
                       for(; it != m_exts.end(); it++)
                       {
                           if(ext == (*it) )
                           {
                               bvalid = true;
                               break;
                           }
                       }
                       if (!boost::filesystem::is_directory(itr->status()) && bvalid)
                       {
                           readImg(itr->string().c_str());
                       }
                }
         }
         SetReturnCode( resultShowModal );
//         Close();

Here is the caller graph for this function:

void creaImageIO::WxAnySimpleDlg::OnReadFile ( wxCommandEvent &  event  ) 

Callback to read file(s).

Definition at line 59 of file creaImageIOWxAnySimpleDlg.cpp.

Referenced by WxAnySimpleDlg().

      {
          int resultShowModal;
          wxFileDialog* fileDlg = new wxFileDialog( 0,  _T("Select file"), _T(""), _T(""), crea::std2wx("*"), wxOPEN |wxFD_MULTIPLE, wxDefaultPosition);
    
          resultShowModal = fileDlg->ShowModal();
          if ( resultShowModal==wxID_OK )
          {
                wxArrayString wxArray;
                fileDlg->GetPaths(wxArray);
                if(wxArray.size() >0)
                {
                    for( int i = 0; i < wxArray.GetCount(); i++)
                    {
                        std::string name = crea::wx2std(wxArray[i]);
                        // FOR THE MOMENT ONLY short 3D et short 4D
                        readImg(name);
                    }
                } 
                else {
                    // TO DO WARNING MESSAGES
                }
          }
          SetReturnCode( resultShowModal );
//         Close();

Here is the caller graph for this function:

void creaImageIO::WxAnySimpleDlg::OnReadGimmick ( wxCommandEvent &  event  ) 

Callback to select from creaImageIO database.

Definition at line 139 of file creaImageIOWxAnySimpleDlg.cpp.

Referenced by WxAnySimpleDlg().

      {
          // Run Gimmick
         WxGimmickReaderDialog dlg(0,-1, 
                   namedescp,
                   namedb, 
                   _T("Select image(s)        - Gimmick! (c) CREATIS-LRMN 2008"),
                   wxDefaultPosition,
                   wxSize(810,750),
                   GIMMICK_2D_IMAGE_SELECTION,
                   GIMMICK_3D_IMAGE_SELECTION,
                   _3D,
                   1);
         dlg.ShowModal();
         if (dlg.GetReturnCode() == wxID_OK)
         {
            std::vector<std::string> out;
            dlg.stopReading();
            dlg.GetSelectedFiles(out);
            if(m_dicom)
            {
                readDicomImg( out);
            }
            else
            {
                std::vector<std::string>::iterator ii = out.begin();
                for (;ii != out.end();ii++)
                {
                    readImg( (*ii).c_str() );
                }
            }
            dlg.OnExit();
         }
         SetReturnCode( dlg.GetReturnCode() );
//         Close();

Here is the caller graph for this function:

void creaImageIO::WxAnySimpleDlg::readDicomImg ( const std::vector< std::string > &  i_names  )  [private]

Definition at line 483 of file creaImageIOWxAnySimpleDlg.cpp.

      {
          typedef itk::Image<short,3> TImage;
          typedef itk::GDCMImageIO GDCMType;
          typedef itk::DICOMSeriesFileNames dicnames;
          GDCMType::Pointer gdcmIO = GDCMType::New(); 
          dicnames::Pointer generator = dicnames::New();


            typedef itk::ImageSeriesReader<TImage> ReaderType; 
            ReaderType::Pointer reader = ReaderType::New(); 
            reader->SetImageIO(gdcmIO);
            reader->SetFileNames(i_names);
        //    reader->SetFileName( i_name ); 
            try 
            { 
                reader->Update(); 
            } 
            catch( itk::ExceptionObject & err ) 
            { 
            //    std::cout << "Caught an exception reading" << i_name << ": " << std::endl; 
                std::cout << err << " " << __FILE__ << " " << __LINE__ << std::endl; 
                throw err; 
            } 
            catch(...) 
            { 
                //std::cout << "Error while reading image " << i_name << std::endl; 
                throw; 
            } 
            //m_Iresults.push_back(reader->GetOutput()); 

void creaImageIO::WxAnySimpleDlg::readImg ( const std::string &  i_name  )  [private]

Definition at line 204 of file creaImageIOWxAnySimpleDlg.cpp.

     {
          size_t dims = getNumberOfDimensions(i_name);
          const std::type_info  *type= &getType(i_name);
          switch(dims)
          {
           case 3:
               if (getType(i_name) ==  typeid(unsigned char))
               {
                    typedef itk::Image<unsigned char, 3> TImage;
                    typedef itk::ImageFileReader<TImage> ReaderType; 
                    ReaderType::Pointer reader = ReaderType::New(); 
                    reader->SetFileName( i_name ); 
                    reader->Update(); 
                    reader->GetOutput()->Register();
                    m_AnyImages.push_back(reader->GetOutput());
               }
               else if (getType(i_name) ==  typeid(signed char)) 
               {
                    typedef itk::Image<signed char, 3> TImage;
                    typedef itk::ImageFileReader<TImage> ReaderType; 
                    ReaderType::Pointer reader = ReaderType::New(); 
                    reader->SetFileName( i_name ); 
                    reader->Update(); 
                    reader->GetOutput()->Register();
                    m_AnyImages.push_back(reader->GetOutput());
               }
               else if (getType(i_name) ==  typeid(short))
               {
                    typedef itk::Image<short, 3> TImage;
                    typedef itk::ImageFileReader<TImage> ReaderType; 
                    ReaderType::Pointer reader = ReaderType::New(); 
                    reader->SetFileName( i_name ); 
                    reader->Update(); 
                    reader->GetOutput()->Register();
                    m_AnyImages.push_back(reader->GetOutput());
               }
               else if (getType(i_name) ==  typeid(unsigned short)) 
               {
                    typedef itk::Image<unsigned short, 3> TImage;
                    typedef itk::ImageFileReader<TImage> ReaderType; 
                    ReaderType::Pointer reader = ReaderType::New(); 
                    reader->SetFileName( i_name ); 
                    reader->Update(); 
                    reader->GetOutput()->Register();
                    m_AnyImages.push_back(reader->GetOutput());
              }
              else if (getType(i_name) ==  typeid(unsigned int)) 
              {
                    typedef itk::Image<unsigned int, 3> TImage;
                    typedef itk::ImageFileReader<TImage> ReaderType; 
                    ReaderType::Pointer reader = ReaderType::New(); 
                    reader->SetFileName( i_name ); 
                    reader->Update(); 
                    reader->GetOutput()->Register();
                    m_AnyImages.push_back(reader->GetOutput());
              }
              else if (getType(i_name) ==  typeid(signed int)) 
              {
                    typedef itk::Image<signed int, 3> TImage;
                    typedef itk::ImageFileReader<TImage> ReaderType; 
                    ReaderType::Pointer reader = ReaderType::New(); 
                    reader->SetFileName( i_name ); 
                    reader->Update(); 
                    reader->GetOutput()->Register();
                    m_AnyImages.push_back(reader->GetOutput());
              }
              else if (getType(i_name) ==  typeid(unsigned long)) 
              {
                    typedef itk::Image<unsigned long, 3> TImage;
                    typedef itk::ImageFileReader<TImage> ReaderType; 
                    ReaderType::Pointer reader = ReaderType::New(); 
                    reader->SetFileName( i_name ); 
                    reader->Update(); 
                    reader->GetOutput()->Register();
                    m_AnyImages.push_back(reader->GetOutput());
              }
              else if (getType(i_name) ==  typeid(signed long)) 
              {
                    typedef itk::Image<signed long, 3> TImage;
                    typedef itk::ImageFileReader<TImage> ReaderType; 
                    ReaderType::Pointer reader = ReaderType::New(); 
                    reader->SetFileName( i_name ); 
                    reader->Update(); 
                    reader->GetOutput()->Register();
                    m_AnyImages.push_back(reader->GetOutput());
              }
              else if (getType(i_name) ==  typeid(float)) 
              {
                    typedef itk::Image<float, 3> TImage;
                    typedef itk::ImageFileReader<TImage> ReaderType; 
                    ReaderType::Pointer reader = ReaderType::New(); 
                    reader->SetFileName( i_name ); 
                    reader->Update(); 
                    reader->GetOutput()->Register();
                    m_AnyImages.push_back(reader->GetOutput());
              }
              else if (getType(i_name) ==  typeid(double)) 
              {
                    typedef itk::Image<double, 3> TImage;
                    typedef itk::ImageFileReader<TImage> ReaderType; 
                    ReaderType::Pointer reader = ReaderType::New(); 
                    reader->SetFileName( i_name ); 
                    reader->Update(); 
                    reader->GetOutput()->Register();
                    m_AnyImages.push_back(reader->GetOutput());
              }
              else
              {
                  //????FCY, so what the type????
              }
              break;
              //assume that we have only one 4D file
            case 4:
                if (getType(i_name) ==  typeid(unsigned char))
                {
                    typedef itk::Image<unsigned char, 4> TImage;
                    typedef itk::ImageFileReader<TImage> ReaderType; 
                    ReaderType::Pointer reader = ReaderType::New(); 
                    reader->SetFileName( i_name ); 
                    reader->Update(); 
                    reader->GetOutput()->Register();
                    m_AnyImages.push_back(reader->GetOutput());
                    split4Din3Dvtk<TImage>(reader->GetOutput());
                }
                else if (getType(i_name) ==  typeid(signed char)) 
                {
                    typedef itk::Image<signed char, 4> TImage;
                    typedef itk::ImageFileReader<TImage> ReaderType; 
                    ReaderType::Pointer reader = ReaderType::New(); 
                    reader->SetFileName( i_name ); 
                    reader->Update(); 
                    reader->GetOutput()->Register();
                    m_AnyImages.push_back(reader->GetOutput());
                    split4Din3Dvtk<TImage>(reader->GetOutput());
                }
                else    if (getType(i_name) ==  typeid(unsigned short))
                {
                    typedef itk::Image<unsigned short, 4> TImage;
                    typedef itk::ImageFileReader<TImage> ReaderType; 
                    ReaderType::Pointer reader = ReaderType::New(); 
                    reader->SetFileName( i_name ); 
                    reader->Update(); 
                    reader->GetOutput()->Register();
                    m_AnyImages.push_back(reader->GetOutput());
                    split4Din3Dvtk<TImage>(reader->GetOutput());
                }
                else if(getType(i_name) == typeid(short))
                {
                    typedef itk::Image<short, 4> TImage;
                    typedef itk::ImageFileReader<TImage> ReaderType; 
                    ReaderType::Pointer reader = ReaderType::New(); 
                    reader->SetFileName( i_name ); 
                    try 
                    { 
                        reader->Update(); 
                    } 
                    catch( itk::ExceptionObject & err ) 
                    { 
                        std::cout << "Caught an exception reading" << i_name << ": " << std::endl; 
                        std::cout << err << " " << __FILE__ << " " << __LINE__ << std::endl; 
                        throw err; 
                    } 
                    catch(...) 
                    { 
                        std::cout << "Error while reading image " << i_name << std::endl; 
                        throw; 
                    } 
                    reader->GetOutput()->Register();
                    m_AnyImages.push_back(reader->GetOutput());
                    split4Din3Dvtk<TImage>(reader->GetOutput());
                }
                else if (getType(i_name) ==  typeid(unsigned short)) 
                {
                    typedef itk::Image<unsigned short, 4> TImage;
                    typedef itk::ImageFileReader<TImage> ReaderType; 
                    ReaderType::Pointer reader = ReaderType::New(); 
                    reader->SetFileName( i_name ); 
                    reader->Update(); 
                    reader->GetOutput()->Register();
                    m_AnyImages.push_back(reader->GetOutput());
                    split4Din3Dvtk<TImage>(reader->GetOutput());
               }
               else if (getType(i_name) ==  typeid(unsigned int)) 
               {
                    typedef itk::Image<unsigned int, 4> TImage;
                    typedef itk::ImageFileReader<TImage> ReaderType; 
                    ReaderType::Pointer reader = ReaderType::New(); 
                    reader->SetFileName( i_name ); 
                    reader->Update(); 
                    reader->GetOutput()->Register();
                    m_AnyImages.push_back(reader->GetOutput());
                    split4Din3Dvtk<TImage>(reader->GetOutput());
               }
               else if (getType(i_name) ==  typeid(signed int)) 
               {
                    typedef itk::Image<signed int, 4> TImage;
                    typedef itk::ImageFileReader<TImage> ReaderType; 
                    ReaderType::Pointer reader = ReaderType::New(); 
                    reader->SetFileName( i_name ); 
                    reader->Update(); 
                    reader->GetOutput()->Register();
                    m_AnyImages.push_back(reader->GetOutput());
                    split4Din3Dvtk<TImage>(reader->GetOutput());
               }
               else if (getType(i_name) ==  typeid(unsigned long)) 
               {
                    typedef itk::Image<unsigned long, 4> TImage;
                    typedef itk::ImageFileReader<TImage> ReaderType; 
                    ReaderType::Pointer reader = ReaderType::New(); 
                    reader->SetFileName( i_name ); 
                    reader->Update(); 
                    reader->GetOutput()->Register();
                    m_AnyImages.push_back(reader->GetOutput());
                    split4Din3Dvtk<TImage>(reader->GetOutput());
               }
               else if (getType(i_name) ==  typeid(signed long)) 
               {
                    typedef itk::Image<signed long, 4> TImage;
                    typedef itk::ImageFileReader<TImage> ReaderType; 
                    ReaderType::Pointer reader = ReaderType::New(); 
                    reader->SetFileName( i_name ); 
                    reader->Update(); 
                    reader->GetOutput()->Register();
                    m_AnyImages.push_back(reader->GetOutput());
                    split4Din3Dvtk<TImage>(reader->GetOutput());
               }
               else if (getType(i_name) ==  typeid(float)) 
               {
                    typedef itk::Image<float, 4> TImage;
                    typedef itk::ImageFileReader<TImage> ReaderType; 
                    ReaderType::Pointer reader = ReaderType::New(); 
                    reader->SetFileName( i_name ); 
                    reader->Update(); 
                    reader->GetOutput()->Register();
                    m_AnyImages.push_back(reader->GetOutput());
                    split4Din3Dvtk<TImage>(reader->GetOutput());
               }
               else if (getType(i_name) ==  typeid(double)) 
               {
                    typedef itk::Image<double, 4> TImage;
                    typedef itk::ImageFileReader<TImage> ReaderType; 
                    ReaderType::Pointer reader = ReaderType::New(); 
                    reader->SetFileName( i_name ); 
                    reader->Update(); 
                    reader->GetOutput()->Register();
                    m_AnyImages.push_back(reader->GetOutput());
                    split4Din3Dvtk<TImage>(reader->GetOutput());
               }
               else
               {
                  //????FCY, so what the type????
               }
               break;
           }
           
           // Test to know if we have to add new type
           bool btest = false;
           if( m_AnyDims.size() != 0)
           {
               btest = true;
           }
           else
           {
               m_AnyDims.push_back(dims);
               m_AnyType.push_back((std::type_info*)&getType(i_name));  //JPR cast
           }
           if (btest)
           {
               if(m_AnyDims.front() != dims || m_AnyType.front()->before(getType(i_name)))
               {
                   m_AnyDims.push_back(dims);
                   m_AnyType.push_back((std::type_info*)&getType(i_name)); //JPR cast
               }
               else{}
           }

void creaImageIO::WxAnySimpleDlg::set ( bool  i_dicom  )  [inline]

Definition at line 48 of file creaImageIOWxAnySimpleDlg.h.

{m_dicom= i_dicom;}

void creaImageIO::WxAnySimpleDlg::setExts ( std::vector< std::string >  i_exts  ) 

Definition at line 87 of file creaImageIOWxAnySimpleDlg.cpp.

     {

template<typename TImage >
void creaImageIO::WxAnySimpleDlg::split3Din3Dvtk ( TImage *  i_Img  )  [private]

Definition at line 517 of file creaImageIOWxAnySimpleDlg.cpp.

References m_Vresults.

      {
          typedef itk::ImageToVTKImageFilter< TImage > ConnectorType;
          typename ConnectorType::Pointer       connector = ConnectorType::New();
          connector->SetInput(i_Img);
          connector->GetImporter()->SetDataScalarTypeToUnsignedChar();
          connector->Update();
          vtkImageData *im = vtkImageData::New();
          im->ShallowCopy(connector->GetOutput());
          im->Update();

template<typename TImage >
void creaImageIO::WxAnySimpleDlg::split4Din3Dvtk ( TImage *  i_Img  )  [private]

Definition at line 532 of file creaImageIOWxAnySimpleDlg.cpp.

References m_dir, and m_Vresults.

      {
          if(i_Img->GetImageDimension() == 4)
          {
              // size of fourth dimension 
              int dsize = i_Img->GetLargestPossibleRegion().GetSize(3);
              // Output Type
              typedef itk::Image<unsigned char,3> ImageOutputType;  
              typedef itk::ImageSeriesWriter<TImage, ImageOutputType >  SeriesWriterType;
              typedef itk::MetaImageIO MetaImageType;
              MetaImageType::Pointer metaIO;
              typename SeriesWriterType::Pointer seriesWriter = SeriesWriterType::New();
            
              // from JPR file to generate output files
              typedef itk::NumericSeriesFileNames NamesGeneratorType;
              NamesGeneratorType::Pointer namesGenerator = NamesGeneratorType::New();
              namesGenerator->SetStartIndex(0);
              namesGenerator->SetEndIndex(dsize-1); 
              namesGenerator->SetIncrementIndex(1);
              std::string format = m_dir;
              format += "/image%03d.mhd";
              namesGenerator->SetSeriesFormat( format.c_str() );
             
              const std::vector<std::string> names = namesGenerator->GetFileNames();
              seriesWriter->SetFileNames( names );
              seriesWriter->SetInput(i_Img);
              seriesWriter->SetImageIO(metaIO);
              try
              {
                 seriesWriter->Update();
                 vtkMetaImageReader *vReader = vtkMetaImageReader::New();
                 std::vector<std::string>::const_iterator it = names.begin();
                 for( ;it !=  names.end(); ++it)
                 {
                     vReader->SetFileName((*it).c_str());
                     vReader->Update();
                     m_Vresults.push_back(vReader->GetOutput());
                     
                 }
              }
              catch( itk::ExceptionObject & excp )
              {
                 std::cerr << "Exception thrown while writing the series " << std::endl;
                 std::cerr << excp << std::endl;
                 //return EXIT_FAILURE;
              }


Member Data Documentation

Definition at line 92 of file creaImageIOWxAnySimpleDlg.h.

Referenced by getInfoImage().

std::vector< size_t> creaImageIO::WxAnySimpleDlg::m_AnyDims [private]

Definition at line 86 of file creaImageIOWxAnySimpleDlg.h.

std::vector<boost::any> creaImageIO::WxAnySimpleDlg::m_AnyImages [private]

Definition at line 88 of file creaImageIOWxAnySimpleDlg.h.

std::vector< std::type_info *> creaImageIO::WxAnySimpleDlg::m_AnyType [private]

Definition at line 87 of file creaImageIOWxAnySimpleDlg.h.

Definition at line 100 of file creaImageIOWxAnySimpleDlg.h.

Referenced by WxAnySimpleDlg().

std::string creaImageIO::WxAnySimpleDlg::m_dir [private]

Definition at line 93 of file creaImageIOWxAnySimpleDlg.h.

Referenced by split4Din3Dvtk().

std::vector<std::string> creaImageIO::WxAnySimpleDlg::m_exts [private]

Definition at line 89 of file creaImageIOWxAnySimpleDlg.h.

interface to read data

Definition at line 102 of file creaImageIOWxAnySimpleDlg.h.

std::vector<vtkImageData*> creaImageIO::WxAnySimpleDlg::m_Vresults [private]

Definition at line 105 of file creaImageIOWxAnySimpleDlg.h.

Referenced by split3Din3Dvtk(), and split4Din3Dvtk().

std::string creaImageIO::WxAnySimpleDlg::namedb [private]

Definition at line 91 of file creaImageIOWxAnySimpleDlg.h.

Referenced by WxAnySimpleDlg().

Definition at line 90 of file creaImageIOWxAnySimpleDlg.h.

Referenced by WxAnySimpleDlg().


The documentation for this class was generated from the following files: