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 "QmitkLBFGSBOptimizerView.h" 00019 #include "mitkImageAccessByItk.h" 00020 #include <itkLBFGSBOptimizer.h> 00021 00022 QmitkLBFGSBOptimizerView::QmitkLBFGSBOptimizerView(QWidget* parent, Qt::WindowFlags f ) : QmitkRigidRegistrationOptimizerGUIBase (parent, f), 00023 m_NumberTransformParameters(16) 00024 { 00025 00026 } 00027 00028 QmitkLBFGSBOptimizerView::~QmitkLBFGSBOptimizerView() 00029 { 00030 } 00031 00032 itk::Object::Pointer QmitkLBFGSBOptimizerView::GetOptimizer() 00033 { 00034 itk::LBFGSBOptimizer::Pointer OptimizerPointer = itk::LBFGSBOptimizer::New(); 00035 // Set up boundary conditions 00036 itk::LBFGSBOptimizer::BoundValueType lower(12); 00037 itk::LBFGSBOptimizer::BoundValueType upper(12); 00038 itk::LBFGSBOptimizer::BoundSelectionType select(12); 00039 00040 lower.Fill( -1 ); 00041 upper.Fill( 10 ); 00042 select.Fill( 2 ); 00043 00044 OptimizerPointer->SetLowerBound( lower ); 00045 OptimizerPointer->SetUpperBound( upper ); 00046 OptimizerPointer->SetBoundSelection( select ); 00047 OptimizerPointer->SetCostFunctionConvergenceFactor(1e+1); 00048 OptimizerPointer->SetMaximumNumberOfCorrections(5); 00049 OptimizerPointer->SetProjectedGradientTolerance(1e-5); 00050 OptimizerPointer->SetMaximumNumberOfEvaluations(500); 00051 OptimizerPointer->SetMaximumNumberOfIterations( 200 ); 00052 return OptimizerPointer.GetPointer(); 00053 } 00054 00055 itk::Array<double> QmitkLBFGSBOptimizerView::GetOptimizerParameters() 00056 { 00057 itk::Array<double> optimizerValues; 00058 optimizerValues.SetSize(1); 00059 optimizerValues.fill(0); 00060 optimizerValues[0] = m_Controls.m_Maximize->isChecked(); 00061 return optimizerValues; 00062 } 00063 00064 void QmitkLBFGSBOptimizerView::SetOptimizerParameters(itk::Array<double> optimizerValues) 00065 { 00066 m_Controls.m_Maximize->setChecked(optimizerValues[0]); 00067 } 00068 00069 void QmitkLBFGSBOptimizerView::SetNumberOfTransformParameters(int transformParameters) 00070 { 00071 m_NumberTransformParameters = transformParameters; 00072 } 00073 00074 QString QmitkLBFGSBOptimizerView::GetName() 00075 { 00076 return "LBFGSB"; 00077 } 00078 00079 void QmitkLBFGSBOptimizerView::SetupUI(QWidget* parent) 00080 { 00081 m_Controls.setupUi(parent); 00082 /*QValidator* validatorLineEditInput = */ new QIntValidator(0, 20000000, this); 00083 /*QValidator* validatorLineEditInputFloat = */ new QDoubleValidator(0, 20000000, 8, this); 00084 }