[Insight-users] Analyze Image Orientation problem
Luis Ibanez
luis.ibanez at kitware.com
Tue Mar 31 09:43:27 EDT 2009
Hi Oleksandr,
It seems that you are getting two separate errors.
A) The first one is a warning and refers to image orientation.
In this case, I would suggest to simply not use the Analyze
file format. Have you considered using nifti ?
B) The second one is also a limitation on the pixel
type supported by Analyze. The Junction filter uses
Long as the pixel type of the output image. This seems
to be an unnecessary restriction though.
The simple solution is to make the filter templated also
over the output image type, and to provide the current
output image type as the default for that template argument.
Please find attached the modified files, in which you
can replace the output image type for the junction filter.
C) The compilation error that you are reporting indicates
that you are not declaring consistently the image type
at the output of the filter, and the corresponding
file writer.
if you are going to connect:
writer->SetInput( filter->GetOutput() )
the the output of the filter *must* be of the same type
as the image type of the writer, *or* you could use a
cast image filter in the middle.
The Junction filter is templated only over the input
image type, therfore, it looks like you would have to
go for inserting a CastImageFilter between the junction
filter and the writer (if you want to use the Analyze
file format).
Or.... use the attached files.
Regards,
Luis
-----------------------
Oleksandr Dzyubak wrote:
> Quick question though. I am mostly working with the Analyze format images.
> I know that is an additional headache but...
>
> So if I just run the program as above but with the Analyze format images,
> I am getting an "exception caught":
>
> ========================WARNING: In
> /mnt/Public/Root_BUILDS/Lenny/InsightToolkit_3_12/InsightToolkit-3.12.0/Code/IO/itkAnalyzeImageIO.cxx,
> line 1345
> AnalyzeImageIO (0x86fb840): ERROR: Analyze 7.5 File Format Only Allows
> RPI, PIR, and RIP Orientation
>
> ExceptionObject caught !
>
> itk::ExceptionObject (0x86fb830)
> Location: "void itk::AnalyzeImageIO::DefineHeaderObjectDataType()"
> File:
> /mnt/Public/Root_BUILDS/Lenny/InsightToolkit_3_12/InsightToolkit-3.12.0/Code/IO/itkAnalyzeImageIO.cxx
>
> Line: 630
> Description: itk::ERROR: AnalyzeImageIO(0x86fb840): Pixel Type Unknown
> ==========================
>
> On the other hand if I change the typedef to fit into the Analyze
> requirements,
>
> typedef itk::Image<unsigned short, 3> ImageType;
> typedef itk::ImageFileReader<ImageType> ReaderType;
> typedef itk::JunctionDetectionFilter<ImageType> DetectorType;
> // typedef itk::ImageFileWriter<DetectorType::OutputImageType> WriterType;
> typedef itk::ImageFileWriter<ImageType> WriterType;
>
> I am getting the compile error:
>
> ****************** Begin Error ***********
>
> [100%] Building CXX object
> CMakeFiles/itkJunctionDetectionFilter3DTest.dir/itkJunctionDetectionFilter3DTest.o
>
> /mnt/Public/Programs/ITK_Test/Skeletons/Automatic_Junction_Detection/Src/itkJunctionDetectionFilter3DTest.cxx:
> In function ‘int main(int, char**)’:
> /mnt/Public/Programs/ITK_Test/Skeletons/Automatic_Junction_Detection/Src/itkJunctionDetectionFilter3DTest.cxx:83:
> error: no matching function for call to
> ‘itk::ImageFileWriter<itk::Image<short unsigned int, 3u>
> >::SetInput(itk::Image<short int, 3u>*)’
> /usr/local/include/InsightToolkit/IO/itkImageFileWriter.txx:58: note:
> candidates are: void itk::ImageFileWriter<TInputImage>::SetInput(const
> TInputImage*) [with TInputImage = itk::Image<short unsigned int, 3u>]
> make[2]: ***
> [CMakeFiles/itkJunctionDetectionFilter3DTest.dir/itkJunctionDetectionFilter3DTest.o]
> Error 1
> make[1]: *** [CMakeFiles/itkJunctionDetectionFilter3DTest.dir/all] Error 2
> make: *** [all] Error 2
>
> ****************** End Error ***********
>
> Any solution for that?
>
> Thanks,
> Alex
>
> Luis Ibanez wrote:
>
>>
>> Hi Oleksandr,
>>
>> I just finished reviewing this paper:
>> http://www.insight-journal.org/browse/publication/324
>>
>> The code was missing a bunch of "typename" keywords,
>> which is the usual problem of code developed in Windows
>> with Visual Studio 6.0.
>>
>> Please find attached the .tgz file with the corrections
>> required to compile it in GCC. (gcc 4.3.2, GNU/Linux
>> Ubuntu 8.10).
>>
>> Please give it a try at this modified code and let us
>> know if you find any problem.
>>
>> Note that you should compile this code for Release,
>> and allow it to run for at least 15min for the 2D
>> case, for it to finish processing the image.
>>
>>
>> BTW: If you find the paper useful, please take the
>> time of contributing a review for it. In this way
>> we will be able to integrate this paper code into
>> ITK in the near future.
>>
>>
>>
>> Regards,
>>
>>
>> Luis
>>
>>
>>
>> ---------------------------
>> Oleksandr Dzyubak wrote:
>>
>>> Thanks Luis,
>>>
>>> You were right on that one. So we are getting close.
>>> Now I am getting a family of errors as below concerning
>>> the variable "was not declared in this scope"...
>>>
>>> ********* Errors begin ********
>>> itkJunctionDetectionFilter.txx:78: error: expected `;' before
>>> ‘wallDister’
>>> itkJunctionDetectionFilter.txx:79: error: ‘wallDister’ was not
>>> declared in this scope
>>> .......
>>> etc.
>>> ********* Errors end ********
>>>
>>> Alex
>>>
>
>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: junctiondetectionCorrectedForLinux2.tgz
Type: application/x-compressed
Size: 9892 bytes
Desc: not available
URL: <http://www.itk.org/pipermail/insight-users/attachments/20090331/41a5c740/attachment.bin>
More information about the Insight-users
mailing list