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