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 "QmitkMattesMutualInformationMetricView.h"
00019 #include <itkMattesMutualInformationImageToImageMetric.h>
00020 #include "mitkImageAccessByItk.h"
00021
00022 QmitkMattesMutualInformationMetricView::QmitkMattesMutualInformationMetricView(QWidget* parent, Qt::WindowFlags f ) : QmitkRigidRegistrationMetricsGUIBase (parent, f)
00023 {
00024
00025 }
00026
00027 QmitkMattesMutualInformationMetricView::~QmitkMattesMutualInformationMetricView()
00028 {
00029 }
00030
00031 itk::Object::Pointer QmitkMattesMutualInformationMetricView::GetMetric()
00032 {
00033 if (m_MovingImage.IsNotNull())
00034 {
00035 AccessByItk(m_MovingImage, GetMetric2);
00036 return m_MetricObject;
00037 }
00038 return NULL;
00039 }
00040
00041 template < class TPixelType, unsigned int VImageDimension >
00042 itk::Object::Pointer QmitkMattesMutualInformationMetricView::GetMetric2(itk::Image<TPixelType, VImageDimension>* )
00043 {
00044 typedef typename itk::Image< TPixelType, VImageDimension > FixedImageType;
00045 typedef typename itk::Image< TPixelType, VImageDimension > MovingImageType;
00046 typename itk::MattesMutualInformationImageToImageMetric<FixedImageType, MovingImageType>::Pointer MetricPointer = itk::MattesMutualInformationImageToImageMetric<FixedImageType, MovingImageType>::New();
00047 bool useSampling = m_Controls.m_UseSamplingMattesMutualInformation->isChecked();
00048 if( useSampling )
00049 {
00050
00051 MetricPointer->SetNumberOfSpatialSamples( m_Controls.m_NumberOfSpatialSamplesMattesMutualInformation->text().toInt() );
00052 }
00053 else
00054 {
00055 MetricPointer->UseAllPixelsOn();
00056 }
00057 MetricPointer->SetNumberOfHistogramBins(m_Controls.m_NumberOfHistogramBinsMattesMutualInformation->text().toInt());
00058 MetricPointer->ReinitializeSeed( 76926294 );
00059 MetricPointer->SetComputeGradient(m_Controls.m_ComputeGradient->isChecked());
00060 m_MetricObject = MetricPointer.GetPointer();
00061 return MetricPointer.GetPointer();
00062 }
00063
00064 itk::Array<double> QmitkMattesMutualInformationMetricView::GetMetricParameters()
00065 {
00066 itk::Array<double> metricValues;
00067 metricValues.SetSize(4);
00068 metricValues.fill(0);
00069 metricValues[0] = m_Controls.m_ComputeGradient->isChecked();
00070 metricValues[1] = m_Controls.m_UseSamplingMattesMutualInformation->isChecked();
00071 metricValues[2] = m_Controls.m_NumberOfSpatialSamplesMattesMutualInformation->text().toInt();
00072 metricValues[3] = m_Controls.m_NumberOfHistogramBinsMattesMutualInformation->text().toInt();
00073 return metricValues;
00074 }
00075
00076 void QmitkMattesMutualInformationMetricView::SetMetricParameters(itk::Array<double> metricValues)
00077 {
00078 m_Controls.m_ComputeGradient->setChecked(metricValues[0]);
00079 m_Controls.m_UseSamplingMattesMutualInformation->setChecked(metricValues[1]);
00080 m_Controls.m_NumberOfSpatialSamplesMattesMutualInformation->setText(QString::number(metricValues[2]));
00081 m_Controls.m_NumberOfHistogramBinsMattesMutualInformation->setText(QString::number(metricValues[3]));
00082 }
00083
00084 QString QmitkMattesMutualInformationMetricView::GetName()
00085 {
00086 return "MattesMutualInformation";
00087 }
00088
00089 void QmitkMattesMutualInformationMetricView::SetupUI(QWidget* parent)
00090 {
00091 m_Controls.setupUi(parent);
00092 QValidator* validatorLineEditInput = new QIntValidator(0, 20000000, this);
00093 m_Controls.m_NumberOfSpatialSamplesMattesMutualInformation->setValidator(validatorLineEditInput);
00094 m_Controls.m_NumberOfHistogramBinsMattesMutualInformation->setValidator(validatorLineEditInput);
00095 }