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