[Insight-users] Possible bug in itkAnalyzeImageIO? : Gipl not being found

Raghavendra Chandrashekara rc3@doc.ic.ac.uk
Fri, 28 Mar 2003 17:05:38 -0000


Just to be on the safe side I cleaned our copy of the ITK repository,
updated it again, and built everything from scratch. Unfortunately the
ramp.gipl image doesn't seem to be there anymore so I couldn't check the
program with the test image. Has the image been removed from the
Release-1-2-0 branch?

Here's the code that I am using:

#include <iostream>
#include <iomanip>

#include "itkImage.h"
#include "itkImageFileReader.h"
#include "itkGiplImageIO.h"
#include "itkImageFileWriter.h"

/* Program reads a GIPL image and writes it out again. */
int main(int argc, char** argv)
{
  if (argc != 3) {
    std::cout << std::setiosflags(std::ios::left) << "GIPLIOTest reads an
input image file and writes it out again." << std::endl
       << std::endl
       << "Usage: GIPLIOTest input.gipl output.gipl" << std::endl
       << std::endl
       << "Where:" << std::endl
       << std::endl
       << std::setw(30) << "input.gipl" << std::setw(50) << "is the input
image" << std::endl
       << std::setw(30) << "output.gipl" << std::setw(50) << "is the output
filename" << std::endl;
    exit(1);
  }

  typedef short PixelType;
  typedef itk::Image<PixelType, 3> ImageType;
  typedef itk::ImageFileReader<ImageType> ReaderType;
  typedef itk::ImageFileWriter<ImageType> WriterType;
  itk::GiplImageIO::Pointer pGiplImageIO = itk::GiplImageIO::New();

  try {
    ReaderType::Pointer pReader = ReaderType::New();
    WriterType::Pointer pWriter = WriterType::New();

    //    pReader->SetImageIO(pGiplImageIO);

    pReader->SetFileName(argv[1]);
    pWriter->SetFileName(argv[2]);

    pWriter->SetInput(pReader->GetOutput());

    pWriter->Update();
  }
  catch (itk::ExceptionObject& ex) {
    std::cout << "Exception object caught!" << std::endl;
    std::cout << ex << std::endl;
    exit(1);
  }

  return 0;
}

When I uncomment out the line that sets the GIPL IO object then everything
works fine! So it looks like the image that I am using is alright.

Thanks,

Raghavendra

----- Original Message -----
From: "Luis Ibanez" <luis.ibanez@kitware.com>
To: "Raghavendra Chandrashekara" <rc3@doc.ic.ac.uk>
Cc: <Insight-users@public.kitware.com>
Sent: Friday, March 28, 2003 1:28 PM
Subject: Re: [Insight-users] Possible bug in itkAnalyzeImageIO? : Gipl not
being found


> Hi Raghavendra,
>
> Yeap, the code looks right.
>
> 1) Could you post the piece of code you are using for
>     reading the gipl file ?
>
> 2)  Could you try reading the gipl test file
>      that is available in
>
>         Insight/Testing/Data/Baseline/IO
>
>      the file name is
>
>                ramp.gipl
>
> If this test file works, this may mean that there
> is something particular in your gipl file that
> prevents the reader from recognizing the format.
>
> Note that checking the extension .gipl is only the
> initial part of the test. Readers verify the content
> of the file in order to make sure they are capable
> of processing the file.
>
>
> Thanks
>
>    Luis
>
>
> --------------------------
>
> Raghavendra Chandrashekara wrote:
> > Hi Luis,
> >
> > There is a line registering the GiplImageIOFactory but it is on line 98,
> > this is the code:
> >
> > void
> > ImageIOFactory::RegisterBuiltInFactories()
> > {
> >   static bool firstTime = true;
> >
> >   static SimpleMutexLock mutex;
> >   {
> >     // This helper class makes sure the Mutex is unlocked
> >     // in the event an exception is thrown.
> >     MutexLockHolder<SimpleMutexLock> mutexHolder( mutex );
> >     if( firstTime )
> >       {
> >       ObjectFactoryBase::RegisterFactory( DicomImageIOFactory::New() );
> >       ObjectFactoryBase::RegisterFactory( MetaImageIOFactory::New() );
> >       ObjectFactoryBase::RegisterFactory( PNGImageIOFactory::New() );
> >       ObjectFactoryBase::RegisterFactory( VTKImageIOFactory::New() );
> >       ObjectFactoryBase::RegisterFactory( GiplImageIOFactory::New() );
> >       ObjectFactoryBase::RegisterFactory( AnalyzeImageIOFactory::New());
> >       firstTime = false;
> >       }
> >   }
> >
> > }
> >
> > Does it look correct to you? I'm using Release-1-2-0 also.
> >
> > Thanks,
> >
> > Raghavendra.
> >
> > ----- Original Message -----
> > From: "Luis Ibanez" <luis.ibanez@kitware.com>
> > To: "Raghavendra Chandrashekara" <rc3@doc.ic.ac.uk>
> > Cc: <insight-users@public.kitware.com>
> > Sent: Friday, March 28, 2003 12:31 PM
> > Subject: Re: [Insight-users] Possible bug in itkAnalyzeImageIO? : Gipl
not
> > being found
> >
> >
> >
> >>Hi Raghavendra,
> >>
> >>It looks like the GiplImageIO factory
> >>is not being found.
> >>
> >>Could you please double check the file
> >>
> >>Insight/Code/IO
> >>
> >>   itkImageIOFactory.cxx
> >>
> >>and see if in line 99, the following
> >>line is not commented out :
> >>
> >>
> >>  ObjectFactoryBase::RegisterFactory( GiplImageIOFactory::New() );
> >>
> >>
> >>This lines registers the Gipl reader/writer
> >>in the factory mechanism.
> >>
> >>(I'm assuming you are using ITK version 1.2)
> >>
> >>
> >>
> >>Regards,
> >>
> >>
> >>
> >>Luis
> >>
> >>
> >>---------------------------------------------
> >>Raghavendra Chandrashekara wrote:
> >>
> >>>Hi Kent,
> >>>
> >>>Okay I tried the patch that you sent. Now another exception is thrown,
> >>
> > this
> >
> >>>time by the itkImageFileReader class:
> >>>
> >>>Exception object caught!
> >>>
> >>>itk::ImageFileReaderException (0x815ace8)
> >>>Location: "Unknown"
> >>>File: /vol/vipdata/packages/InsightCVS/Code/IO/itkImageFileReader.txx
> >>>Line: 94
> >>>Description:  Could not create IO object for file
> >>>../../Data/Synthetic/cube.gipl
> >>>
> >>>Does this mean that the gipl image is not being recognised by any of
the
> >>
> > IO
> >
> >>>classes?
> >>>
> >>>Raghavendra.
> >>>
> >>>----- Original Message -----
> >>>From: "Kent Williams" <kent@mail.psychiatry.uiowa.edu>
> >>>To: "Raghavendra Chandrashekara" <rc3@doc.ic.ac.uk>
> >>>Sent: Wednesday, March 19, 2003 6:46 PM
> >>>Subject: Re: [Insight-users] Possible bug in itkAnalyzeImageIO?
> >>>
> >>>
> >>>I don't know why you're getting that far into CanRead, since the 1.2
> >>
> > version
> >
> >>>of itkAnalyzeImageIO.cxx checks for valid extensions first before
trying
> >>
> > to
> >
> >>>open the file.
> >>>
> >>>I think that it's incorrect to throw an exception in CanRead anyway; my
> >>>suggestion to  you is to patch around line 1000 in that file thusly:
> >>>
> >>>CHANGE:
> >>>    if( local_InputStream.fail() )
> >>>      {
> >>>        ExceptionObject exception(__FILE__, __LINE__);
> >>>        exception.SetDescription("File cannot be read");
> >>>        throw exception;
> >>>      }
> >>>    local_InputStream.read( (char *)&(this->m_hdr), sizeof(struct
> >>
> > dsr) );
> >
> >>>    if( local_InputStream.eof() )
> >>>      {
> >>>        ExceptionObject exception(__FILE__, __LINE__);
> >>>        exception.SetDescription("Unexpected end of file");
> >>>        throw exception;
> >>>      }
> >>>TO:
> >>>    if( local_InputStream.fail() )
> >>>      {
> >>>return false;
> >>>      }
> >>>    local_InputStream.read( (char *)&(this->m_hdr), sizeof(struct
> >>
> > dsr) );
> >
> >>>    if( local_InputStream.eof() )
> >>>      {
> >>>return false;
> >>>      }
> >>>
> >>>
> >>>
> >>>_______________________________________________
> >>>Insight-users mailing list
> >>>Insight-users@public.kitware.com
> >>>http://public.kitware.com/mailman/listinfo/insight-users
> >>>
> >>
> >>
> >>
> >>_______________________________________________
> >>Insight-users mailing list
> >>Insight-users@public.kitware.com
> >>http://public.kitware.com/mailman/listinfo/insight-users
> >>
> >
> >
> >
>
>
>
> _______________________________________________
> Insight-users mailing list
> Insight-users@public.kitware.com
> http://public.kitware.com/mailman/listinfo/insight-users
>