[Insight-users] Possible bug in Gipl file not being recognized
Luis Ibanez
luis.ibanez@kitware.com
Fri, 28 Mar 2003 18:08:08 -0500
Hi Raghavendra,
The ramp.gipl file was added to Testing after the 1.2 release.
You can get it through CVS at:
http://www.itk.org/cgi-bin/cvsweb.cgi/Insight/Testing/Data/Baseline/IO/?cvsroot=Insight
---
Your test shows that your Gipl file is ok.
What seems to be failing is the testing criteria of the GIPL
reader for recognizing your file as a gipl-file.
Could you please post the header (just the header, not the data)
of your GIPL file. It should have an extra field, or a missing
field that is making the GiplImageIO reject the file.
You can also check the GiplImageIO.cxx file in Insight/Code/IO
and verify the revision criteria in the method "CanReadFile()".
Thanks
Luis
----------------------------------------
Raghavendra Chandrashekara wrote:
> 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
>>
>
>
> _______________________________________________
> Insight-users mailing list
> Insight-users@public.kitware.com
> http://public.kitware.com/mailman/listinfo/insight-users
>