Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #include "QmitkMeanReciprocalSquareDifferenceMetricView.h"
00019 #include <itkMeanReciprocalSquareDifferenceImageToImageMetric.h>
00020 #include "mitkImageAccessByItk.h"
00021
00022 #include "QValidator"
00023
00024 QmitkMeanReciprocalSquareDifferenceMetricView::QmitkMeanReciprocalSquareDifferenceMetricView(QWidget* parent, Qt::WindowFlags f ) : QmitkRigidRegistrationMetricsGUIBase (parent, f)
00025 {
00026 }
00027
00028 QmitkMeanReciprocalSquareDifferenceMetricView::~QmitkMeanReciprocalSquareDifferenceMetricView()
00029 {
00030 }
00031
00032 itk::Object::Pointer QmitkMeanReciprocalSquareDifferenceMetricView::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 QmitkMeanReciprocalSquareDifferenceMetricView::GetMetric2(itk::Image<TPixelType, VImageDimension>* )
00044 {
00045 typedef typename itk::Image< TPixelType, VImageDimension > FixedImageType;
00046 typedef typename itk::Image< TPixelType, VImageDimension > MovingImageType;
00047 typename itk::MeanReciprocalSquareDifferenceImageToImageMetric<FixedImageType, MovingImageType>::Pointer MetricPointer = itk::MeanReciprocalSquareDifferenceImageToImageMetric<FixedImageType, MovingImageType>::New();
00048
00049
00050
00051
00052 MetricPointer->SetLambda( m_Controls.m_LambdaMeanReciprocalSquareDifference->text().toInt() );
00053 MetricPointer->SetComputeGradient(m_Controls.m_ComputeGradient->isChecked());
00054 m_MetricObject = MetricPointer.GetPointer();
00055 return MetricPointer.GetPointer();
00056 }
00057
00058 itk::Array<double> QmitkMeanReciprocalSquareDifferenceMetricView::GetMetricParameters()
00059 {
00060 itk::Array<double> metricValues;
00061 metricValues.SetSize(2);
00062 metricValues.fill(0);
00063 metricValues[0] = m_Controls.m_ComputeGradient->isChecked();
00064 metricValues[1] = m_Controls.m_LambdaMeanReciprocalSquareDifference->text().toInt();
00065 return metricValues;
00066 }
00067
00068 void QmitkMeanReciprocalSquareDifferenceMetricView::SetMetricParameters(itk::Array<double> metricValues)
00069 {
00070 m_Controls.m_ComputeGradient->setChecked(metricValues[0]);
00071 m_Controls.m_LambdaMeanReciprocalSquareDifference->setText(QString::number(metricValues[1]));
00072 }
00073
00074 QString QmitkMeanReciprocalSquareDifferenceMetricView::GetName()
00075 {
00076 return "MeanReciprocalSquareDifference";
00077 }
00078
00079 void QmitkMeanReciprocalSquareDifferenceMetricView::SetupUI(QWidget* parent)
00080 {
00081 m_Controls.setupUi(parent);
00082 QValidator* validatorLineEditInput = new QIntValidator(0, 20000000, this);
00083 m_Controls.m_LambdaMeanReciprocalSquareDifference->setValidator(validatorLineEditInput);
00084 }