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 "QmitkGradientDescentOptimizerView.h" 00019 #include "mitkImageAccessByItk.h" 00020 #include <itkGradientDescentOptimizer.h> 00021 00022 QmitkGradientDescentOptimizerView::QmitkGradientDescentOptimizerView(QWidget* parent, Qt::WindowFlags f ) : QmitkRigidRegistrationOptimizerGUIBase (parent, f), 00023 m_NumberTransformParameters(16) 00024 { 00025 00026 } 00027 00028 QmitkGradientDescentOptimizerView::~QmitkGradientDescentOptimizerView() 00029 { 00030 } 00031 00032 itk::Object::Pointer QmitkGradientDescentOptimizerView::GetOptimizer() 00033 { 00034 itk::GradientDescentOptimizer::Pointer OptimizerPointer = itk::GradientDescentOptimizer::New(); 00035 OptimizerPointer->SetMaximize( m_Controls.m_Maximize->isChecked()); 00036 OptimizerPointer->SetLearningRate(m_Controls.m_LearningRateGradientDescent->text().toFloat()); 00037 OptimizerPointer->SetNumberOfIterations( m_Controls.m_IterationsGradientDescent->text().toInt() ); 00038 return OptimizerPointer.GetPointer(); 00039 } 00040 00041 itk::Array<double> QmitkGradientDescentOptimizerView::GetOptimizerParameters() 00042 { 00043 itk::Array<double> optimizerValues; 00044 optimizerValues.SetSize(3); 00045 optimizerValues.fill(0); 00046 optimizerValues[0] = m_Controls.m_Maximize->isChecked(); 00047 optimizerValues[1] = m_Controls.m_LearningRateGradientDescent->text().toFloat(); 00048 optimizerValues[2] = m_Controls.m_IterationsGradientDescent->text().toInt(); 00049 return optimizerValues; 00050 } 00051 00052 void QmitkGradientDescentOptimizerView::SetOptimizerParameters(itk::Array<double> optimizerValues) 00053 { 00054 m_Controls.m_Maximize->setChecked(optimizerValues[0]); 00055 m_Controls.m_LearningRateGradientDescent->setText(QString::number(optimizerValues[1])); 00056 m_Controls.m_IterationsGradientDescent->setText(QString::number(optimizerValues[2])); 00057 } 00058 00059 void QmitkGradientDescentOptimizerView::SetNumberOfTransformParameters(int transformParameters) 00060 { 00061 m_NumberTransformParameters = transformParameters; 00062 } 00063 00064 QString QmitkGradientDescentOptimizerView::GetName() 00065 { 00066 return "GradientDescent"; 00067 } 00068 00069 void QmitkGradientDescentOptimizerView::SetupUI(QWidget* parent) 00070 { 00071 m_Controls.setupUi(parent); 00072 QValidator* validatorLineEditInput = new QIntValidator(0, 20000000, this); 00073 m_Controls.m_IterationsGradientDescent->setValidator(validatorLineEditInput); 00074 QValidator* validatorLineEditInputFloat = new QDoubleValidator(0, 20000000, 8, this); 00075 m_Controls.m_LearningRateGradientDescent->setValidator(validatorLineEditInputFloat); 00076 }