[Insight-users] Wrong matrix obtained using	ScalarImageToRunLengthMatrixFilter
    Françoise LEFEBVRE 
    lefebvre at imnc.in2p3.fr
       
    Tue Jul 24 12:03:20 EDT 2012
    
    
  
Hi,
I implemented the following source code in order to compute run length 
parameters using first the ScalarImageToRunLengthMatrixFilter class 
followed by HistogramToRunLengthFeaturesFilter.
The code for the first step is :
     typedef itk::Image<unsigned char,2> ImageType2UC;
     typedef 
itk::Statistics::ScalarImageToRunLengthMatrixFilter<ImageType2UC>
                 ScalarImageToRunLengthMatrixFilterType;
     typedef ScalarImageToRunLengthMatrixFilterType::HistogramType
                 RunLengthHistogramType;
     ScalarImageToRunLengthMatrixFilterType::Pointer filterRL = 
ScalarImageToRunLengthMatrixFilterType::New();
     ImageType2UC::OffsetType offset = {1, 0};
     filterRL->SetOffset(offset);
     filterRL->SetNumberOfBinsPerAxis(3);
     filterRL->SetPixelValueMinMax(1, 3);
     filterRL->SetInput(imTest);
     filterRL->Update();
     RunLengthHistogramType::ConstIterator it = 
filterRL->GetOutput()->Begin();
     for (int j =0; j < filterRL->GetOutput()->GetSize(0); j++)
     {
         QString strLg;
         for (int i =0; i < filterRL->GetOutput()->GetSize(1); i++, ++it)
             strLg += QString().sprintf("%3d", it.GetFrequency());
         qDebug() << strLg;
     }
I tested it on a very simple matrix (from Chu et al, 1990)
1  1  2  3  3
2  2  3  1  1
3  1  2  2  3
2  3  1  1  2
1  1  2  2  3
The resulting matrix was :
  5  6  0
  6  0  0
  0  0  0
whereas the expected one is :
1 4 0
3 3 0
5 1 0
Has someone any experience using those classes ?
Thank you in advance,
-- 
Françoise LEFEBVRE
IMNC (Imagerie et Modélisation en Neurobiologie et Cancérologie)
Campus d'Orsay - Bât 440
91405 ORSAY Cedex
01 69 15 51 87
    
    
More information about the Insight-users
mailing list