Quantcast

read and write image series

classic Classic list List threaded Threaded
3 messages Options
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

read and write image series

shirani kannangara

Hi vtk/itk users
I am constructing a program to read and write medical image(3D) data set ,
 image data(raw data -VHPAbdomen.mhd)in ITk version 4.2 ,CMake2.8.9. IT built with 2 warnings.
 itk codes are as follows.But it does not display output properly. It is as follows.My raw data file is attached herewith.I used ImageSeriesReadWrite.cxx


codes
#include "itkImage.h"
#include "itkImageSeriesReader.h"
#include "itkImageFileWriter.h"
#include "itkNumericSeriesFileNames.h"
#include "itkPNGImageIO.h"
    #include <iostream>
        #include <string>
    using namespace std;
    
 int main(  int argc, char **argv[])

{
    if( argc <4 );
    
  {std::cout << "Usage: " << std::endl;
    std::cout<<argv[0] <<  " firstSliceValue lastSliceValue  outputImageFile " << std::endl;
   return EXIT_FAILURE;
    }
   
  //std::cout<<"sliceValue:"<<std::endl;
  typedef unsigned char                       PixelType;
  const unsigned int   Dimension = 3;

  typedef itk::Image< PixelType, Dimension>  ImageType;

  typedef itk::ImageSeriesReader< ImageType >  ReaderType;
  typedef itk::ImageFileWriter<   ImageType >  WriterType;


  ReaderType::Pointer reader = ReaderType::New();
  WriterType::Pointer writer = WriterType::New();

  const unsigned int first = 1;
  const unsigned int last  = 450;
  //char * outputFilename = argv[3];
   char**outputFilename=  argv[3];
  
  typedef itk::NumericSeriesFileNames NameGeneratorType;

  NameGeneratorType::Pointer nameGenerator = NameGeneratorType::New();
  
  nameGenerator->SetSeriesFormat( "D:\\To_SMK\\VHPAbdomen%03d.mhd" );
  nameGenerator->SetStartIndex( first );
  nameGenerator->SetEndIndex( last);
  nameGenerator->SetIncrementIndex(1);

  reader->SetImageIO( itk::PNGImageIO::New() );

  reader->SetFileNames( nameGenerator->GetFileNames()  );
  writer->SetInput( reader->GetOutput() );
  writer->SetFileName("test.mhd");
try
    {
    writer->Update();
    }
  catch( itk::ExceptionObject & err )
    {
    std::cerr << "ExceptionObject caught !" << std::endl;
    std::cerr << err << std::endl;
    return EXIT_FAILURE;
    };
  
  return 0;

  }
  
OUTPUT 

D:\image\Debug>ImageReadWrite.exe
Usage:
0022D9E0 firstSliceValue lastSliceValue  outputImageFile

D:\image\Debug>ImageReadWrite.exe(1 450 test.mhd)
Usage:
00E71324 firstSliceValue lastSliceValue  outputImageFile

D:\image\Debug>ImageReadWrite.exe(1,450,test.mhd)
Usage:
0115131C firstSliceValue lastSliceValue  outputImageFile

D:\image\Debug>

PL help me to get it corrected
Thankas 

Shirani


_____________________________________
Powered by www.kitware.com

Visit other Kitware open-source projects at
http://www.kitware.com/opensource/opensource.html

Kitware offers ITK Training Courses, for more information visit:
http://www.kitware.com/products/protraining.php

Please keep messages on-topic and check the ITK FAQ at:
http://www.itk.org/Wiki/ITK_FAQ

Follow this link to subscribe/unsubscribe:
http://www.itk.org/mailman/listinfo/insight-users

VHPAbdomen.mhd (8K) Download Attachment
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: read and write image series

Bill Lorensen-2
Change this line:
  if( argc <4 );
to
  if( argc <4 )


On Tue, Sep 18, 2012 at 6:23 AM, shirani kannangara <[hidden email]> wrote:

Hi vtk/itk users
I am constructing a program to read and write medical image(3D) data set ,
 image data(raw data -VHPAbdomen.mhd)in ITk version 4.2 ,CMake2.8.9. IT built with 2 warnings.
 itk codes are as follows.But it does not display output properly. It is as follows.My raw data file is attached herewith.I used ImageSeriesReadWrite.cxx


codes
#include "itkImage.h"
#include "itkImageSeriesReader.h"
#include "itkImageFileWriter.h"
#include "itkNumericSeriesFileNames.h"
#include "itkPNGImageIO.h"
    #include <iostream>
        #include <string>
    using namespace std;
    
 int main(  int argc, char **argv[])

{
    if( argc <4 );
    
  {std::cout << "Usage: " << std::endl;
    std::cout<<argv[0] <<  " firstSliceValue lastSliceValue  outputImageFile " << std::endl;
   return EXIT_FAILURE;
    }
   
  //std::cout<<"sliceValue:"<<std::endl;
  typedef unsigned char                       PixelType;
  const unsigned int   Dimension = 3;

  typedef itk::Image< PixelType, Dimension>  ImageType;

  typedef itk::ImageSeriesReader< ImageType >  ReaderType;
  typedef itk::ImageFileWriter<   ImageType >  WriterType;


  ReaderType::Pointer reader = ReaderType::New();
  WriterType::Pointer writer = WriterType::New();

  const unsigned int first = 1;
  const unsigned int last  = 450;
  //char * outputFilename = argv[3];
   char**outputFilename=  argv[3];
  
  typedef itk::NumericSeriesFileNames NameGeneratorType;

  NameGeneratorType::Pointer nameGenerator = NameGeneratorType::New();
  
  nameGenerator->SetSeriesFormat( "D:\\To_SMK\\VHPAbdomen%03d.mhd" );
  nameGenerator->SetStartIndex( first );
  nameGenerator->SetEndIndex( last);
  nameGenerator->SetIncrementIndex(1);

  reader->SetImageIO( itk::PNGImageIO::New() );

  reader->SetFileNames( nameGenerator->GetFileNames()  );
  writer->SetInput( reader->GetOutput() );
  writer->SetFileName("test.mhd");
try
    {
    writer->Update();
    }
  catch( itk::ExceptionObject & err )
    {
    std::cerr << "ExceptionObject caught !" << std::endl;
    std::cerr << err << std::endl;
    return EXIT_FAILURE;
    };
  
  return 0;

  }
  
OUTPUT 

D:\image\Debug>ImageReadWrite.exe
Usage:
0022D9E0 firstSliceValue lastSliceValue  outputImageFile

D:\image\Debug>ImageReadWrite.exe(1 450 test.mhd)
Usage:
00E71324 firstSliceValue lastSliceValue  outputImageFile

D:\image\Debug>ImageReadWrite.exe(1,450,test.mhd)
Usage:
0115131C firstSliceValue lastSliceValue  outputImageFile

D:\image\Debug>

PL help me to get it corrected
Thankas 

Shirani


_____________________________________
Powered by www.kitware.com

Visit other Kitware open-source projects at
http://www.kitware.com/opensource/opensource.html

Kitware offers ITK Training Courses, for more information visit:
http://www.kitware.com/products/protraining.php

Please keep messages on-topic and check the ITK FAQ at:
http://www.itk.org/Wiki/ITK_FAQ

Follow this link to subscribe/unsubscribe:
http://www.itk.org/mailman/listinfo/insight-users




--
Unpaid intern in BillsBasement at noware dot com


_____________________________________
Powered by www.kitware.com

Visit other Kitware open-source projects at
http://www.kitware.com/opensource/opensource.html

Kitware offers ITK Training Courses, for more information visit:
http://www.kitware.com/products/protraining.php

Please keep messages on-topic and check the ITK FAQ at:
http://www.itk.org/Wiki/ITK_FAQ

Follow this link to subscribe/unsubscribe:
http://www.itk.org/mailman/listinfo/insight-users
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: read and write image series

alex Dowson
 
Hi Shirani

 
First of all you need to learn C++ properly and Read the ITK software user guide can be download from here. Remember one advice for free “Half effect doesn’t produce Half Result , It produce nothing.”  Smile
 
 
 
Also in your sample it doesnot make any sense what you trying to do because since you reading .mhd file there is no need for ImageSeriesReader because
when you load .mhd file it will load the associate .raw file with sequence given in .mhd file. Also in your e-mail your not telling peoples what you want to do
in that case no one can help you .
 
 
So Correct you code like as given. It will load your 3D RGB image and produce the slice as color png images. Is that what you loooking for ?
 
 
#include "itkImage.h"
#include "itkRGBPixel.h"
#include "itkImageFileReader.h"
#include "itkImageSeriesWriter.h"
#include "itkNumericSeriesFileNames.h"
 
 
 
typedef unsigned char                       PixelType;
const unsigned int   Dimension = 3;
 
typedef itk::RGBPixel<PixelType>           RGBPixelType;
 
 
typedef itk::Image< RGBPixelType, Dimension>  ImageType;
 
typedef itk::ImageFileReader<ImageType >   ReaderType;
typedef itk::ImageFileWriter< ImageType >  WriterType;
 
 
ReaderType::Pointer reader = ReaderType::New();
reader->SetFileName( "D:\\To_SMK\\VHPAbdomen%03d.mhd" );
 
 
 
 
const unsigned int first = atoi( argv[1] );
const unsigned int last  = atoi( argv[2] );
const char * outputFilename = argv[3];
 
typedef itk::NumericSeriesFileNames    NameGeneratorType;
NameGeneratorType::Pointer nameGenerator = NameGeneratorType::New();
nameGenerator->SetSeriesFormat( "vwe%03d.png" );
nameGenerator->SetStartIndex( first );
nameGenerator->SetEndIndex( last );
nameGenerator->SetIncrementIndex( 1 );
 
 
typedef itk::Image< RGBPixelType, 2 >     Image2DType;
 
typedef itk::ImageSeriesWriter< ImageType, Image2DType > SeriesWriterType;
SeriesWriterType::Pointer seriesWriter = SeriesWriterType::New();
seriesWriter->SetInput( reader->GetOutput() );
seriesWriter->SetFileNames( nameGenerator->GetFileNames() );
 
 
try
{
    seriesWriter->Update();
}
catch( itk::ExceptionObject & excp )
{
    std::cerr << "Error reading the series " << std::endl;
    std::cerr << excp << std::endl;
}
 
 
 
Alex
 
 
 
 
 
 
Sent: Wednesday, September 19, 2012 4:55 AM
Subject: Re: [Insight-users] read and write image series
 
Change this line:
  if( argc <4 );
to
  if( argc <4 )


On Tue, Sep 18, 2012 at 6:23 AM, shirani kannangara <[hidden email]> wrote:

Hi vtk/itk users
I am constructing a program to read and write medical image(3D) data set ,
image data(raw data -VHPAbdomen.mhd)in ITk version 4.2 ,CMake2.8.9. IT built with 2 warnings.
itk codes are as follows.But it does not display output properly. It is as follows.My raw data file is attached herewith.I used ImageSeriesReadWrite.cxx
#include "itkImage.h"
#include "itkImageSeriesReader.h"
#include "itkImageFileWriter.h"
#include "itkNumericSeriesFileNames.h"
#include "itkPNGImageIO.h"


codes
 
   #include <iostream>
        #include <string>
   using namespace std;
   
int main(  int argc, char **argv[])
 
{
    if( argc <4 );
   
  {std::cout << "Usage: " << std::endl;
    std::cout<<argv[0] <<  " firstSliceValue lastSliceValue  outputImageFile " << std::endl;
   return EXIT_FAILURE;
    }
  
  //std::cout<<"sliceValue:"<<std::endl;
  typedef unsigned char                       PixelType;
  const unsigned int   Dimension = 3;
 
  typedef itk::Image< PixelType, Dimension>  ImageType;
 
  typedef itk::ImageSeriesReader< ImageType >  ReaderType;
  typedef itk::ImageFileWriter<   ImageType >  WriterType;
 
 
  ReaderType::Pointer reader = ReaderType::New();
  WriterType::Pointer writer = WriterType::New();
 
  const unsigned int first = 1;
  const unsigned int last  = 450;
  //char * outputFilename = argv[3];
   char**outputFilename=  argv[3];
  typedef itk::NumericSeriesFileNames NameGeneratorType;
 
  NameGeneratorType::Pointer nameGenerator = NameGeneratorType::New();
  nameGenerator->SetSeriesFormat( "D:\\To_SMK\\VHPAbdomen%03d.mhd" );
  nameGenerator->SetStartIndex( first );
  nameGenerator->SetEndIndex( last);
  nameGenerator->SetIncrementIndex(1);
 
  reader->SetImageIO( itk::PNGImageIO::New() );
 
  reader->SetFileNames( nameGenerator->GetFileNames()  );
  writer->SetInput( reader->GetOutput() );
  writer->SetFileName("test.mhd");
try
    {
    writer->Update();
    }
  catch( itk::ExceptionObject & err )
    {
    std::cerr << "ExceptionObject caught !" << std::endl;
    std::cerr << err << std::endl;
    return EXIT_FAILURE;
    };
  return 0;
 
  }
OUTPUT 
 
D:\image\Debug>ImageReadWrite.exe
Usage:
0022D9E0 firstSliceValue lastSliceValue  outputImageFile
 
D:\image\Debug>ImageReadWrite.exe(1 450 test.mhd)
Usage:
00E71324 firstSliceValue lastSliceValue  outputImageFile
 
D:\image\Debug>ImageReadWrite.exe(1,450,test.mhd)
Usage:
0115131C firstSliceValue lastSliceValue  outputImageFile
 
D:\image\Debug>
 
PL help me to get it corrected
Thankas
 
Shirani


_____________________________________
Powered by www.kitware.com

Visit other Kitware open-source projects at
http://www.kitware.com/opensource/opensource.html

Kitware offers ITK Training Courses, for more information visit:
http://www.kitware.com/products/protraining.php

Please keep messages on-topic and check the ITK FAQ at:
http://www.itk.org/Wiki/ITK_FAQ

Follow this link to subscribe/unsubscribe:
http://www.itk.org/mailman/listinfo/insight-users



 
--
Unpaid intern in BillsBasement at noware dot com


_____________________________________
Powered by www.kitware.com

Visit other Kitware open-source projects at
http://www.kitware.com/opensource/opensource.html

Kitware offers ITK Training Courses, for more information visit:
http://www.kitware.com/products/protraining.php

Please keep messages on-topic and check the ITK FAQ at:
http://www.itk.org/Wiki/ITK_FAQ

Follow this link to subscribe/unsubscribe:
http://www.itk.org/mailman/listinfo/insight-users

_____________________________________
Powered by www.kitware.com

Visit other Kitware open-source projects at
http://www.kitware.com/opensource/opensource.html

Kitware offers ITK Training Courses, for more information visit:
http://www.kitware.com/products/protraining.php

Please keep messages on-topic and check the ITK FAQ at:
http://www.itk.org/Wiki/ITK_FAQ

Follow this link to subscribe/unsubscribe:
http://www.itk.org/mailman/listinfo/insight-users
Loading...