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;
  }
}