[Insight-users] reading a 2D series and writing it as a 3D image in TIFF

Atwood, Robert C r.atwood at imperial.ac.uk
Thu Sep 18 06:53:10 EDT 2008


 Hi Luis, Nadia: 
Indeed I have used multi-frame TIFF files but not out of choice, the
possibility of finding an appliation that will read them is rather small
in my experience. Most apps just display the first frame and ignore the
rest.
 
In my case I had some so-called 'TIFF stacks' from ages-old Kontron
output, and found it would not be read by available applications --
fortunately the ITK tiff input actually would read it so then I could
write it as another format like .MHD  and recover the images. 

Robert 


> -----Original Message-----
> From: insight-users-bounces at itk.org 
> [mailto:insight-users-bounces at itk.org] On Behalf Of Luis Ibanez
> Sent: 15 September 2008 22:45
> To: nadiaalvi at yahoo.com
> Cc: Insight Users
> Subject: Re: [Insight-users] reading a 2D series and writing 
> it as a 3D image in TIFF
> 
> 
> Hi Nadia,
> 
> Thanks for the clarification.
> 
> Yes, this means that the TIFFImageIO class is being used for
> writing the file.
> 
> 
> We checked on this today and the itk::TIFFImageIO class
> can indeed write a 3D image in a single file by using the
> multi-frame feature of the TIFF library.
> 
> 
> At this point, the filenames generator will be the suspect.
> Is there a chance that you can send me the three images
> that you are trying to read as input ?
> 
> 
> BTW: What are you using for looking at the output TIFF image ?
> 
> 
>    Please let us know,
> 
> 
>      Thanks
> 
> 
>         Luis
> 
> 
> -----------------
> Nadia Alvi wrote:
> > Hi,
> >  
> > Thanks again.
> >  
> > I tried that, and the console output is:
> >  
> > RTTI typeinfo : class itk:TIFFImageIO
> >  
> > That means it IS using the TIFFImageIO, right? but when i 
> explicitly 
> > specify the ImageIO, it writes the same slice multiple times.
> >  
> > do you have any clue of what can be wrong?
> >  
> > Thanks
> >  
> > Nadia
> > 
> > 
> > --- On *Tue, 9/9/08, Luis Ibanez /<luis.ibanez at kitware.com>/* wrote:
> > 
> >     From: Luis Ibanez <luis.ibanez at kitware.com>
> >     Subject: Re: [Insight-users] need help with my Code
> >     To: nadiaalvi at yahoo.com
> >     Date: Tuesday, September 9, 2008, 5:13 PM
> > 
> > Hi Nadia,
> > 
> > My mistake,
> > 
> > the line:
> > 
> >     writer->GetImageIO->Print( std::cout );
> > 
> > in my email, should have been:
> > 
> >     writer->GetImageIO()->Print( std::cout );
> > 
> > 
> > My apologies for the mishap.
> > 
> > 
> >     Luis
> > 
> > 
> > ------------------
> > Nadia Alvi wrote:
> >> Thanks a lot Luis,
> >>  
> >> Sorry for replying you late.
> >>  
> >> By TIFF I mean sequence of 2d Image slices grouped 
> togather as TIFF 
> >> image. Is this what u meant by multiframe TIFF?
> >>  
> >> I tried the code to see what ImageIO it is using, but it 
> is giving the 
> >> compilation error as
> >> (204): error C2227: left of '->Print' must point to
> > class/struct/union
> >>  
> >> Could u please tell me what i am doing wrong?
> >>  
> >> many thanks
> >>  
> >> Nadia
> >>  
> >> 
> >> --- On *Mon, 9/1/08, Luis Ibanez 
> /<luis.ibanez at kitware.com>/* wrote:
> >> 
> >>     From: Luis Ibanez <luis.ibanez at kitware.com>
> >>     Subject: Re: [Insight-users] need help with my Code
> >>     To: nadiaalvi at yahoo.com
> >>     Cc: insight-users at itk.org
> >>     Date: Monday, September 1, 2008, 11:15 AM
> >> 
> >> Hi Nadia,
> >> 
> >> As far as I know, TIFF can't store 3D images.
> >> 
> >> I don't quite understand how the code can
> >> generate a 3D TIFF image for you...
> >> 
> >> Are you talking about a multi-frame TIFF,... maybe ?
> >> 
> >> 
> >> To figure out what ImageIO was used you can do the
> >> following (of course, first remove the SetImageIO),
> >> 
> >> then,
> >> 
> >> after the call to
> >> 
> >>                writer->Update()
> >> 
> >> add the following call
> >> 
> >>     writer->GetImageIO->Print( std::cout );
> >> 
> >> The text that you will get in the console should
> >> include the class name of he ImageIO that was
> >> selected during the search of ImageIOFactories.
> >> 
> >> 
> >> Please post that output to the list,
> >> 
> >> 
> >>     Thanks
> >> 
> >> 
> >>        Luis
> >> 
> >> 
> >> 
> >> -----------------
> >> Nadia Alvi wrote:
> >>> Hi Luis,
> >>>  
> >>> Thanks for your reply.
> >>>  
> >>> I am trying to read a sequence of three 2d tif images and 
> write them
> > as 
> >>> one tiff file (with three slices). So that the output 
> image would be
> > one 
> >>> tiff image with 3 slices.
> >>>  
> >>> This is the exactly the same thing that is explained in 
> section 7.11.1
> > 
> >>> of ITKSoftwareGuide(i.e. Reading Image Series).
> >>> I want to mention one interesting thing. While 
> experimenting with the 
> >>> code, when I removed the code line, reader1->SetImageIO( 
> >>> itk::TIFFImageIO::New() ); , the code worked perfectly 
> fine. Is this 
> >>> because it is now using some other ImageIO?
> >>>  
> >>> I am really very thankful for any help.
> >>>  
> >>> Kind regards
> >>> Nadia
> >>> 
> >>> 
> >>> --- On *Sun, 8/31/08, Luis Ibanez /<luis.ibanez at kitware.com>/*
> >> wrote:
> >>> 
> >>>     From: Luis Ibanez <luis.ibanez at kitware.com>
> >>>     Subject: Re: [Insight-users] need help with my Code
> >>>     To: nadiaalvi at yahoo.com
> >>>     Cc: insight-users at itk.org
> >>>     Date: Sunday, August 31, 2008, 10:04 AM
> >>> 
> >>> Hi Nadia,
> >>> 
> >>> 
> >>>     The TIFF format doesn't support 3D images.
> >>> 
> >>> 
> >>> Are you trying to write a 3D TIFF image ?
> >>> 
> >>> or
> >>> 
> >>> Are you trying to write 3 TIFF files each one with a 2D image ?
> >>> 
> >>> 
> >>> Please let us know,
> >>> 
> >>> 
> >>>     Thanks
> >>> 
> >>> 
> >>>        Luis
> >>> 
> >>> 
> >>> -----------------
> >>> Nadia Alvi wrote:
> >>>> 
> >>>>     Hi All,
> >>>>      
> >>>>     Please see the code attached.
> >>>>     It should read the 3 slices and write them as a tiff file but
> > it
> >>>>     only reads the 2nd slice and write it 3 times in a tiff file.
> >>>>     Apparently it is incrementing the start index by 1 
> and reading
> >> that
> >>>>     slice 3 times.
> >>>>     Can some body please help me in finding what i m doing wrong?
> >>>>     Many many thanks
> >>>>     Nadia
> >>>>      
> >>>>    
> >>>
> >>
> > 
> //////////////////////////////////////////////////////////////
> /////////////////////////////////////////////////////////////////
> >>>> 
> >>>>     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;
> >>>> 
> >>>>       WriterType::Pointer writer = WriterType::New();
> >>>>       ReaderType::Pointer reader1 = ReaderType::New();
> >>>>       typedef itk::NumericSeriesFileNames    NameGeneratorType;
> >>>>       NameGeneratorType::Pointer nameGenerator =
> >> NameGeneratorType::New();
> >>>>       nameGenerator->SetSeriesFormat(
> >>>>     "clint_binary_080320_noDescription%04d.tiff" );
> >>>>       nameGenerator->SetStartIndex(1);
> >>>>       nameGenerator->SetEndIndex(3);
> >>>>       nameGenerator->SetIncrementIndex(1);
> >>>> 
> >>>>       reader1->SetImageIO( itk::TIFFImageIO::New() );
> >>>>       reader1->SetFileNames( nameGenerator->GetFileNames() 
> > );
> >>>> 
> >>>>       writer->SetFileName("labeledImage.tif");
> >>>>       writer->SetInput(reader1->GetOutput());
> >>>>       try
> >>>>         {
> >>>>       
> >>>>       writer->Update();
> >>>>         }
> >>>> 
> >>>> 
> >>>> 
> >>>> 
> >>>>
> >> 
> --------------------------------------------------------------
> ----------
> >>>> 
> >>>> _______________________________________________
> >>>> Insight-users mailing list
> >>>> Insight-users at itk.org
> >>>> http://www.itk.org/mailman/listinfo/insight-users
> >>> 
> >>> 
> >> 
> >> 
> > 
> > 
> _______________________________________________
> Insight-users mailing list
> Insight-users at itk.org
> http://www.itk.org/mailman/listinfo/insight-users
> 


More information about the Insight-users mailing list