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