[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