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 "QmitkRegularStepGradientDescentOptimizerView.h"
00019 #include "mitkImageAccessByItk.h"
00020 #include <itkRegularStepGradientDescentOptimizer.h>
00021
00022 QmitkRegularStepGradientDescentOptimizerView::QmitkRegularStepGradientDescentOptimizerView(QWidget* parent, Qt::WindowFlags f ) : QmitkRigidRegistrationOptimizerGUIBase (parent, f),
00023 m_NumberTransformParameters(16)
00024 {
00025
00026 }
00027
00028 QmitkRegularStepGradientDescentOptimizerView::~QmitkRegularStepGradientDescentOptimizerView()
00029 {
00030 }
00031
00032 itk::Object::Pointer QmitkRegularStepGradientDescentOptimizerView::GetOptimizer()
00033 {
00034 itk::RegularStepGradientDescentOptimizer::Pointer OptimizerPointer = itk::RegularStepGradientDescentOptimizer::New();
00035 OptimizerPointer->SetMaximize( m_Controls.m_Maximize->isChecked() );
00036 OptimizerPointer->SetGradientMagnitudeTolerance( m_Controls.m_GradientMagnitudeToleranceRegularStepGradientDescent->text().toFloat() );
00037 OptimizerPointer->SetMinimumStepLength( m_Controls.m_MinimumStepLengthRegularStepGradientDescent->text().toFloat() );
00038 OptimizerPointer->SetMaximumStepLength( m_Controls.m_MaximumStepLengthRegularStepGradientDescent->text().toFloat() );
00039 OptimizerPointer->SetRelaxationFactor( m_Controls.m_RelaxationFactorRegularStepGradientDescent->text().toFloat() );
00040 OptimizerPointer->SetNumberOfIterations( m_Controls.m_IterationsRegularStepGradientDescent->text().toInt() );
00041 return OptimizerPointer.GetPointer();
00042 }
00043
00044 itk::Array<double> QmitkRegularStepGradientDescentOptimizerView::GetOptimizerParameters()
00045 {
00046 itk::Array<double> optimizerValues;
00047 optimizerValues.SetSize(6);
00048 optimizerValues.fill(0);
00049 optimizerValues[0] = m_Controls.m_Maximize->isChecked();
00050 optimizerValues[1] = m_Controls.m_GradientMagnitudeToleranceRegularStepGradientDescent->text().toFloat();
00051 optimizerValues[2] = m_Controls.m_MinimumStepLengthRegularStepGradientDescent->text().toFloat();
00052 optimizerValues[3] = m_Controls.m_MaximumStepLengthRegularStepGradientDescent->text().toFloat();
00053 optimizerValues[4] = m_Controls.m_RelaxationFactorRegularStepGradientDescent->text().toFloat();
00054 optimizerValues[5] = m_Controls.m_IterationsRegularStepGradientDescent->text().toInt();
00055 return optimizerValues;
00056 }
00057
00058 void QmitkRegularStepGradientDescentOptimizerView::SetOptimizerParameters(itk::Array<double> optimizerValues)
00059 {
00060 m_Controls.m_Maximize->setChecked(optimizerValues[0]);
00061 m_Controls.m_GradientMagnitudeToleranceRegularStepGradientDescent->setText(QString::number(optimizerValues[1]));
00062 m_Controls.m_MinimumStepLengthRegularStepGradientDescent->setText(QString::number(optimizerValues[2]));
00063 m_Controls.m_MaximumStepLengthRegularStepGradientDescent->setText(QString::number(optimizerValues[3]));
00064 m_Controls.m_RelaxationFactorRegularStepGradientDescent->setText(QString::number(optimizerValues[4]));
00065 m_Controls.m_IterationsRegularStepGradientDescent->setText(QString::number(optimizerValues[5]));
00066 }
00067
00068 void QmitkRegularStepGradientDescentOptimizerView::SetNumberOfTransformParameters(int transformParameters)
00069 {
00070 m_NumberTransformParameters = transformParameters;
00071 }
00072
00073 QString QmitkRegularStepGradientDescentOptimizerView::GetName()
00074 {
00075 return "RegularStepGradientDescent";
00076 }
00077
00078 void QmitkRegularStepGradientDescentOptimizerView::SetupUI(QWidget* parent)
00079 {
00080 m_Controls.setupUi(parent);
00081 QValidator* validatorLineEditInput = new QIntValidator(0, 20000000, this);
00082 m_Controls.m_IterationsRegularStepGradientDescent->setValidator(validatorLineEditInput);
00083 QValidator* validatorLineEditInputFloat = new QDoubleValidator(0, 20000000, 8, this);
00084 m_Controls.m_GradientMagnitudeToleranceRegularStepGradientDescent->setValidator(validatorLineEditInputFloat);
00085 m_Controls.m_MinimumStepLengthRegularStepGradientDescent->setValidator(validatorLineEditInputFloat);
00086 m_Controls.m_MaximumStepLengthRegularStepGradientDescent->setValidator(validatorLineEditInputFloat);
00087 QValidator* validatorLineEditInputFloat0to1 = new QDoubleValidator(0.000001, 0.999999, 8, this);
00088 m_Controls.m_RelaxationFactorRegularStepGradientDescent->setValidator(validatorLineEditInputFloat0to1);
00089 }