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 "QmitkOnePlusOneEvolutionaryOptimizerView.h" 00019 #include "mitkImageAccessByItk.h" 00020 #include <itkOnePlusOneEvolutionaryOptimizer.h> 00021 #include <itkNormalVariateGenerator.h> 00022 00023 QmitkOnePlusOneEvolutionaryOptimizerView::QmitkOnePlusOneEvolutionaryOptimizerView(QWidget* parent, Qt::WindowFlags f ) : QmitkRigidRegistrationOptimizerGUIBase (parent, f), 00024 m_NumberTransformParameters(16) 00025 { 00026 00027 } 00028 00029 QmitkOnePlusOneEvolutionaryOptimizerView::~QmitkOnePlusOneEvolutionaryOptimizerView() 00030 { 00031 } 00032 00033 itk::Object::Pointer QmitkOnePlusOneEvolutionaryOptimizerView::GetOptimizer() 00034 { 00035 itk::OnePlusOneEvolutionaryOptimizer::Pointer OptimizerPointer = itk::OnePlusOneEvolutionaryOptimizer::New(); 00036 OptimizerPointer->SetMaximize( m_Controls.m_Maximize->isChecked() ); 00037 itk::Statistics::NormalVariateGenerator::Pointer generator = itk::Statistics::NormalVariateGenerator::New(); 00038 generator->Initialize(12345); 00039 OptimizerPointer->SetNormalVariateGenerator(generator); 00040 OptimizerPointer->SetShrinkFactor(m_Controls.m_ShrinkFactorOnePlusOneEvolutionary->text().toFloat()); 00041 OptimizerPointer->SetGrowthFactor(m_Controls.m_GrowthFactorOnePlusOneEvolutionary->text().toFloat()); 00042 OptimizerPointer->SetEpsilon(m_Controls.m_EpsilonOnePlusOneEvolutionary->text().toFloat()); 00043 OptimizerPointer->SetInitialRadius(m_Controls.m_InitialRadiusOnePlusOneEvolutionary->text().toFloat()); 00044 OptimizerPointer->SetMaximumIteration(m_Controls.m_IterationsOnePlusOneEvolutionary->text().toInt()); 00045 return OptimizerPointer.GetPointer(); 00046 } 00047 00048 itk::Array<double> QmitkOnePlusOneEvolutionaryOptimizerView::GetOptimizerParameters() 00049 { 00050 itk::Array<double> optimizerValues; 00051 optimizerValues.SetSize(6); 00052 optimizerValues.fill(0); 00053 optimizerValues[0] = m_Controls.m_Maximize->isChecked(); 00054 optimizerValues[1] = m_Controls.m_ShrinkFactorOnePlusOneEvolutionary->text().toFloat(); 00055 optimizerValues[2] = m_Controls.m_GrowthFactorOnePlusOneEvolutionary->text().toFloat(); 00056 optimizerValues[3] = m_Controls.m_EpsilonOnePlusOneEvolutionary->text().toFloat(); 00057 optimizerValues[4] = m_Controls.m_InitialRadiusOnePlusOneEvolutionary->text().toFloat(); 00058 optimizerValues[5] = m_Controls.m_IterationsOnePlusOneEvolutionary->text().toInt(); 00059 return optimizerValues; 00060 } 00061 00062 void QmitkOnePlusOneEvolutionaryOptimizerView::SetOptimizerParameters(itk::Array<double> optimizerValues) 00063 { 00064 m_Controls.m_Maximize->setChecked(optimizerValues[0]); 00065 m_Controls.m_ShrinkFactorOnePlusOneEvolutionary->setText(QString::number(optimizerValues[1])); 00066 m_Controls.m_GrowthFactorOnePlusOneEvolutionary->setText(QString::number(optimizerValues[2])); 00067 m_Controls.m_EpsilonOnePlusOneEvolutionary->setText(QString::number(optimizerValues[3])); 00068 m_Controls.m_InitialRadiusOnePlusOneEvolutionary->setText(QString::number(optimizerValues[4])); 00069 m_Controls.m_IterationsOnePlusOneEvolutionary->setText(QString::number(optimizerValues[5])); 00070 } 00071 00072 void QmitkOnePlusOneEvolutionaryOptimizerView::SetNumberOfTransformParameters(int transformParameters) 00073 { 00074 m_NumberTransformParameters = transformParameters; 00075 } 00076 00077 QString QmitkOnePlusOneEvolutionaryOptimizerView::GetName() 00078 { 00079 return "OnePlusOneEvolutionary"; 00080 } 00081 00082 void QmitkOnePlusOneEvolutionaryOptimizerView::SetupUI(QWidget* parent) 00083 { 00084 m_Controls.setupUi(parent); 00085 QValidator* validatorLineEditInput = new QIntValidator(0, 20000000, this); 00086 m_Controls.m_EpsilonOnePlusOneEvolutionary->setValidator(validatorLineEditInput); 00087 m_Controls.m_InitialRadiusOnePlusOneEvolutionary->setValidator(validatorLineEditInput); 00088 m_Controls.m_IterationsOnePlusOneEvolutionary->setValidator(validatorLineEditInput); 00089 QValidator* validatorLineEditInputFloat = new QDoubleValidator(0, 20000000, 8, this); 00090 m_Controls.m_ShrinkFactorOnePlusOneEvolutionary->setValidator(validatorLineEditInputFloat); 00091 m_Controls.m_GrowthFactorOnePlusOneEvolutionary->setValidator(validatorLineEditInputFloat); 00092 m_Controls.m_EpsilonOnePlusOneEvolutionary->setValidator(validatorLineEditInputFloat); 00093 m_Controls.m_InitialRadiusOnePlusOneEvolutionary->setValidator(validatorLineEditInputFloat); 00094 m_Controls.m_IterationsOnePlusOneEvolutionary->setValidator(validatorLineEditInputFloat); 00095 }