[Insight-users] Error ->>> ImageToVectorImageFilter + ImageToListAdaptor

Ricardo Ferrari rjf.araraquara at gmail.com
Sat Nov 7 18:08:01 EST 2009


Hi Itk-users,

After my message to Luis (please see below) I've found a way to create
vector samples from different image contrasts by using the itk::FixedArray
class.

However, in addition to my previous question (which still remains) about how
to use the " ImageToVectorImageFilter + ImageToListAdaptor " to to build
vector samples (as performed with the itk::FixedArray), I do have another
question.

Is there any way to define the number of contrasts (as used in the line
typedef itk::FixedArray< TInputPixelType, NumberOfContrasts >
TMeasurementVectorType; ) in the running time ?

Thank you again,

Ricardo



///
const int NumberOfContrasts = 1; //3;
const int Dimension = 3;

/// Pixel type definition
typedef signed short
TInputPixelType;
typedef signed short
TOutputPixelType;

/// Define type of the input and output images
typedef itk::Image< TInputPixelType, Dimension >
TInputImageType;
typedef itk::Image< TOutputPixelType, Dimension >
TOutputImageType;


    typedef itk::FixedArray< TInputPixelType, NumberOfContrasts >
TMeasurementVectorType;
    typedef itk::Image< TMeasurementVectorType, Dimension > TArrayImageType;

    typedef itk::ScalarToArrayCastImageFilter< TInputImageType,
TArrayImageType > CasterType;
    CasterType::Pointer caster = CasterType::New();
    caster->SetInput( 0, img );
    caster->Update();

    typedef itk::Statistics::ImageToListAdaptor< CasterType::OutputImageType
> ImageToListAdaptorType;
    ImageToListAdaptorType::Pointer adaptor = ImageToListAdaptorType::New();
    adaptor->SetImage( caster->GetOutput() );

    ///
    /// Create the GMM
    ///
    TGMM< TArrayImageType, TOutputImageType > gmm;
    gmm.SetInputArrayImage( caster->GetOutput() );




-----
Hi Luis,

I am trying to use the two following itk classes to get Vector Samples into
an Gaussian Mixture Model classifier. Although, I am following your
suggestion (please see
http://www.cmake.org/pipermail/insight-users/2007-April/022003.html ) I am
still getting an error.

I really appreciate if you could help on this.

Thanks,
Ricardo



#include "io.h"
#include "itkImageToVectorImageFilter.
h"
#include "itkScalarToArrayCastImageFilter.h"
#include "itkImageToListAdaptor.h"

/// Pixel type definition
typedef signed short
                 TInputPixelType;

/// Define type of the input and output images
typedef itk::Image< TInputPixelType, Dimension >
TInputImageType;


///
/// Main function
///
int main( int argc, char **argv )
{
   // Read a minc image
   TInputImageType::Pointer img = ReadMincImage< TInputImageType >(
"test.mnc" );

   typedef itk::ImageToVectorImageFilter< TInputImageType >
ImageToVectorImageFilterType;
   ImageToVectorImageFilterType::Pointer vectorImage =
ImageToVectorImageFilterType::New();
   vectorImage->SetNthInput( 0, img );
   vectorImage->Update();

   typedef itk::Statistics::ImageToListAdaptor<
ImageToVectorImageFilterType::OutputImageType > ImageToListAdaptorType;
   ImageToListAdaptorType::Pointer adaptor = ImageToListAdaptorType::New();
   adaptor->SetImage( vectorImage->GetOutput() );

   return 0;
}


[100%] Building CXX object
segmentation/gmm/CMakeFiles/gmm_classifier.dir/main.cpp.o
In file included from
/usr/local/include/InsightToolkit/Common/itkConceptChecking.h:23,
                from
/usr/local/include/InsightToolkit/Common/itkImageHelper.h:20,
                from
/usr/local/include/InsightToolkit/Common/itkImageBase.h:35,
                from
/usr/local/include/InsightToolkit/Common/itkImage.h:20,
                from /home/ferrari/Workspace/MIP_PROJECTS/trunk/io/io.h:6,
                from
/home/ferrari/Workspace/MIP_PROJECTS/trunk/segmentation/gmm/main.cpp:2:
/usr/local/include/InsightToolkit/Common/itkPixelTraits.h: In instantiation
of ?itk::PixelTraits<itk::VariableLengthVector<short int> >?:
/usr/local/include/InsightToolkit/Numerics/Statistics/itkImageToListAdaptor.h:97:
instantiated from
?itk::Statistics::ImageToListAdaptor<itk::VectorImage<short int, 3u>,
itk::VariableLengthVector<short int> >?
/home/ferrari/Workspace/MIP_PROJECTS/trunk/segmentation/gmm/main.cpp:51:
instantiated from here
/usr/local/include/InsightToolkit/Common/itkPixelTraits.h:41: error:
?Length? is not a member of ?itk::VariableLengthVector<short int>?
In file included from
/home/ferrari/Workspace/MIP_PROJECTS/trunk/segmentation/gmm/main.cpp:8:
/usr/local/include/InsightToolkit/Numerics/Statistics/itkImageToListAdaptor.h:
In member function ?const TMeasurementVector&
itk::Statistics::ImageToListAdaptor<TImage,
TMeasurementVector>::GetMeasurementVector(const typename
TImage::PixelContainer::ElementIdentifier&) const [with TImage =
itk::VectorImage<short int, 3u>, TMeasurementVector =
itk::VariableLengthVector<short int>]?:
/home/ferrari/Workspace/MIP_PROJECTS/trunk/segmentation/gmm/main.cpp:56:
instantiated from here
/usr/local/include/InsightToolkit/Numerics/Statistics/itkImageToListAdaptor.h:323:
warning: taking address of temporary
/usr/local/include/InsightToolkit/Numerics/Statistics/itkImageToListAdaptor.h:323:
warning: returning reference to temporary
make[2]: *** [segmentation/gmm/CMakeFiles/gmm_classifier.dir/main.cpp.o]
Error 1
make[1]: *** [segmentation/gmm/CMakeFiles/gmm_classifier.dir/all] Error 2
make: *** [all] Error 2
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.itk.org/pipermail/insight-users/attachments/20091107/4f7b2704/attachment.htm>


More information about the Insight-users mailing list