[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
>