double antsImageMIHelper( typename itk::Image< float , Dimension >::Pointer image1, typename itk::Image< float , Dimension >::Pointer image2 ) { typedef itk::Image< float , Dimension > ImageType; if( image1.IsNotNull() & image2.IsNotNull() ) { double mi = 1; typedef itk::MattesMutualInformationImageToImageMetricv4 <ImageType, ImageType, ImageType> MetricType; unsigned int bins = 32; typename MetricType::Pointer metric = MetricType::New(); metric->SetFixedImage( image1 ); metric->SetMovingImage( image2 ); metric->SetNumberOfHistogramBins( bins ); metric->Initialize(); mi = metric->GetValue(); return mi; } else { return 1; } }