00001 /*========================================================================= 00002 00003 Program: Medical Imaging & Interaction Toolkit 00004 Language: C++ 00005 Date: $Date$ 00006 Version: $Revision: -1 $ 00007 00008 Copyright (c) German Cancer Research Center, Division of Medical and 00009 Biological Informatics. All rights reserved. 00010 See MITKCopyright.txt or https://www.mitk.org/copyright.html for details. 00011 00012 This software is distributed WITHOUT ANY WARRANTY; without even 00013 the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 00014 PURPOSE. See the above copyright notices for more information. 00015 00016 =========================================================================*/ 00017 00018 #include "QmitkGradientDifferenceMetricView.h" 00019 #include <itkGradientDifferenceImageToImageMetric.h> 00020 #include "mitkImageAccessByItk.h" 00021 00022 #include "QValidator" 00023 00024 QmitkGradientDifferenceMetricView::QmitkGradientDifferenceMetricView(QWidget* parent, Qt::WindowFlags f ) : QmitkRigidRegistrationMetricsGUIBase (parent, f) 00025 { 00026 } 00027 00028 QmitkGradientDifferenceMetricView::~QmitkGradientDifferenceMetricView() 00029 { 00030 } 00031 00032 itk::Object::Pointer QmitkGradientDifferenceMetricView::GetMetric() 00033 { 00034 if (m_MovingImage.IsNotNull()) 00035 { 00036 AccessByItk(m_MovingImage, GetMetric2); 00037 return m_MetricObject; 00038 } 00039 return NULL; 00040 } 00041 00042 template < class TPixelType, unsigned int VImageDimension > 00043 itk::Object::Pointer QmitkGradientDifferenceMetricView::GetMetric2(itk::Image<TPixelType, VImageDimension>* /*itkImage1*/) 00044 { 00045 typedef typename itk::Image< TPixelType, VImageDimension > FixedImageType; 00046 typedef typename itk::Image< TPixelType, VImageDimension > MovingImageType; 00047 typename itk::GradientDifferenceImageToImageMetric<FixedImageType, MovingImageType>::Pointer MetricPointer = itk::GradientDifferenceImageToImageMetric<FixedImageType, MovingImageType>::New(); 00048 MetricPointer->SetComputeGradient(m_Controls.m_ComputeGradient->isChecked()); 00049 m_MetricObject = MetricPointer.GetPointer(); 00050 return MetricPointer.GetPointer(); 00051 } 00052 00053 itk::Array<double> QmitkGradientDifferenceMetricView::GetMetricParameters() 00054 { 00055 itk::Array<double> metricValues; 00056 metricValues.SetSize(1); 00057 metricValues.fill(0); 00058 metricValues[0] = m_Controls.m_ComputeGradient->isChecked(); 00059 return metricValues; 00060 } 00061 00062 void QmitkGradientDifferenceMetricView::SetMetricParameters(itk::Array<double> metricValues) 00063 { 00064 m_Controls.m_ComputeGradient->setChecked(metricValues[0]); 00065 } 00066 00067 QString QmitkGradientDifferenceMetricView::GetName() 00068 { 00069 return "GradientDifference"; 00070 } 00071 00072 void QmitkGradientDifferenceMetricView::SetupUI(QWidget* parent) 00073 { 00074 m_Controls.setupUi(parent); 00075 }