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 "QmitkNormalizedMutualInformationHistogramMetricView.h"
00019 #include <itkNormalizedMutualInformationHistogramImageToImageMetric.h>
00020 #include "mitkImageAccessByItk.h"
00021
00022 #include "QValidator"
00023
00024 QmitkNormalizedMutualInformationHistogramMetricView::QmitkNormalizedMutualInformationHistogramMetricView(QWidget* parent, Qt::WindowFlags f ) : QmitkRigidRegistrationMetricsGUIBase (parent, f)
00025 {
00026 }
00027
00028 QmitkNormalizedMutualInformationHistogramMetricView::~QmitkNormalizedMutualInformationHistogramMetricView()
00029 {
00030 }
00031
00032 itk::Object::Pointer QmitkNormalizedMutualInformationHistogramMetricView::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 QmitkNormalizedMutualInformationHistogramMetricView::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::NormalizedMutualInformationHistogramImageToImageMetric<FixedImageType, MovingImageType>::Pointer MetricPointer = itk::NormalizedMutualInformationHistogramImageToImageMetric<FixedImageType, MovingImageType>::New();
00048 unsigned int nBins = m_Controls.m_NumberOfHistogramBinsNormalizedMutualInformationHistogram->text().toInt();
00049 typename itk::NormalizedMutualInformationHistogramImageToImageMetric<FixedImageType, MovingImageType>::HistogramType::SizeType histogramSize;
00050 histogramSize[0] = nBins;
00051 histogramSize[1] = nBins;
00052 MetricPointer->SetHistogramSize(histogramSize);
00053 MetricPointer->SetComputeGradient(m_Controls.m_ComputeGradient->isChecked());
00054 m_MetricObject = MetricPointer.GetPointer();
00055 return MetricPointer.GetPointer();
00056 }
00057
00058 itk::Array<double> QmitkNormalizedMutualInformationHistogramMetricView::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_NumberOfHistogramBinsNormalizedMutualInformationHistogram->text().toInt();
00065 return metricValues;
00066 }
00067
00068 void QmitkNormalizedMutualInformationHistogramMetricView::SetMetricParameters(itk::Array<double> metricValues)
00069 {
00070 m_Controls.m_ComputeGradient->setChecked(metricValues[0]);
00071 m_Controls.m_NumberOfHistogramBinsNormalizedMutualInformationHistogram->setText(QString::number(metricValues[1]));
00072 }
00073
00074 QString QmitkNormalizedMutualInformationHistogramMetricView::GetName()
00075 {
00076 return "NormalizedMutualInformationHistogram";
00077 }
00078
00079 void QmitkNormalizedMutualInformationHistogramMetricView::SetupUI(QWidget* parent)
00080 {
00081 m_Controls.setupUi(parent);
00082 QValidator* validatorLineEditInput = new QIntValidator(0, 20000000, this);
00083 m_Controls.m_NumberOfHistogramBinsNormalizedMutualInformationHistogram->setValidator(validatorLineEditInput);
00084 }