+++ /dev/null
-#include <cstdlib>
-#include <iostream>
-#include <string>
-
-#include <itkImage.h>
-#include <itkImageFileReader.h>
-#include <itkImageRegionConstIterator.h>
-#include <itkMatrix.h>
-#include <itkRGBPixel.h>
-#include <itkVector.h>
-
-#include <cpPlugins/Extensions/Algorithms/IterativeGaussianModelEstimator.h>
-
-// -------------------------------------------------------------------------
-const unsigned int Dim = 2;
-typedef double TScalar;
-typedef unsigned char TChannel;
-typedef itk::RGBPixel< TChannel > TPixel;
-typedef itk::Image< TPixel, Dim > TImage;
-
-// -------------------------------------------------------------------------
-int main( int argc, char* argv[] )
-{
- if( argc < 2 )
- {
- std::cerr
- << "Usage: " << argv[ 0 ]
- << " input_image" << std::endl;
- return( 1 );
-
- } // fi
- std::string input_image_file = argv[ 1 ];
-
- // Read image
- itk::ImageFileReader< TImage >::Pointer reader =
- itk::ImageFileReader< TImage >::New( );
- reader->SetFileName( input_image_file );
- try
- {
- reader->Update( );
- }
- catch( itk::ExceptionObject& err )
- {
- std::cerr << "Error caught: " << err << std::endl;
- return( 1 );
-
- } // yrt
- TImage::ConstPointer input_image = reader->GetOutput( );
-
- // Compute gaussian model
- typedef cpPlugins::Extensions::Algorithms::IterativeGaussianModelEstimator< TScalar, 3 > TEstimator;
-
- TEstimator::Pointer estimator = TEstimator::New( );
- estimator->Clear( );
-
- itk::ImageRegionConstIterator< TImage > it(
- input_image,
- input_image->GetRequestedRegion( )
- );
- for( it.GoToBegin( ); !it.IsAtEnd( ); ++it )
- {
- estimator->AddSample(
- TScalar( it.Get( ).GetRed( ) ),
- TScalar( it.Get( ).GetGreen( ) ),
- TScalar( it.Get( ).GetBlue( ) )
- );
-
- } // rof
-
- itk::Vector< TScalar, 3 > mean;
- itk::Matrix< TScalar, 3, 3 > cova;
-
- estimator->GetModel( mean, cova );
- std::cout
- << "Covariance = " << std::endl << cova << std::endl;
- std::cout
- << "Inverse covariance = "
- << std::endl << cova.GetInverse( ) << std::endl;
- std::cout
- << "Mean = " << std::endl << mean << std::endl;
-
- return( 0 );
-}
-
-// eof - $RCSfile$