Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #include "QmitkScaleLogarithmicTransformView.h"
00019 #include "mitkImageAccessByItk.h"
00020 #include <itkScaleLogarithmicTransform.h>
00021 #include <QValidator>
00022
00023 QmitkScaleLogarithmicTransformView::QmitkScaleLogarithmicTransformView(QWidget* parent, Qt::WindowFlags f ) : QmitkRigidRegistrationTransformsGUIBase(parent, f)
00024 {
00025 }
00026
00027 QmitkScaleLogarithmicTransformView::~QmitkScaleLogarithmicTransformView()
00028 {
00029 }
00030
00031 itk::Object::Pointer QmitkScaleLogarithmicTransformView::GetTransform()
00032 {
00033 if (m_FixedImage.IsNotNull())
00034 {
00035 AccessByItk(m_FixedImage, GetTransform2);
00036 return m_TransformObject;
00037 }
00038 return NULL;
00039 }
00040
00041 template < class TPixelType, unsigned int VImageDimension >
00042 itk::Object::Pointer QmitkScaleLogarithmicTransformView::GetTransform2(itk::Image<TPixelType, VImageDimension>* )
00043 {
00044 typedef typename itk::Image< TPixelType, VImageDimension > FixedImageType;
00045 typedef typename itk::Image< TPixelType, VImageDimension > MovingImageType;
00046 typename itk::ScaleLogarithmicTransform< double, VImageDimension>::Pointer transformPointer = itk::ScaleLogarithmicTransform< double, VImageDimension>::New();
00047 transformPointer->SetIdentity();
00048 m_TransformObject = transformPointer.GetPointer();
00049 return transformPointer.GetPointer();
00050 }
00051
00052 itk::Array<double> QmitkScaleLogarithmicTransformView::GetTransformParameters()
00053 {
00054 itk::Array<double> transformValues;
00055 transformValues.SetSize(4);
00056 transformValues.fill(0);
00057 transformValues[0] = m_Controls.m_UseOptimizerScalesScaleLogarithmic->isChecked();
00058 transformValues[1] = m_Controls.m_ScalesScaleLogarithmicTransformScaleX->text().toDouble();
00059 transformValues[2] = m_Controls.m_ScalesScaleLogarithmicTransformScaleY->text().toDouble();
00060 transformValues[3] = m_Controls.m_ScalesScaleLogarithmicTransformScaleZ->text().toDouble();
00061 return transformValues;
00062 }
00063
00064 void QmitkScaleLogarithmicTransformView::SetTransformParameters(itk::Array<double> transformValues)
00065 {
00066 m_Controls.m_UseOptimizerScalesScaleLogarithmic->setChecked(transformValues[0]);
00067 m_Controls.m_ScalesScaleLogarithmicTransformScaleX->setText(QString::number(transformValues[1]));
00068 m_Controls.m_ScalesScaleLogarithmicTransformScaleY->setText(QString::number(transformValues[2]));
00069 m_Controls.m_ScalesScaleLogarithmicTransformScaleZ->setText(QString::number(transformValues[3]));
00070 }
00071
00072 QString QmitkScaleLogarithmicTransformView::GetName()
00073 {
00074 return "ScaleLogarithmic";
00075 }
00076
00077 void QmitkScaleLogarithmicTransformView::SetupUI(QWidget* parent)
00078 {
00079 m_Controls.setupUi(parent);
00080 QValidator* validatorLineEditInputFloat = new QDoubleValidator(0, 20000000, 8, this);
00081 m_Controls.m_ScalesScaleLogarithmicTransformScaleX->setValidator(validatorLineEditInputFloat);
00082 m_Controls.m_ScalesScaleLogarithmicTransformScaleY->setValidator(validatorLineEditInputFloat);
00083 m_Controls.m_ScalesScaleLogarithmicTransformScaleZ->setValidator(validatorLineEditInputFloat);
00084 }
00085
00086 itk::Array<double> QmitkScaleLogarithmicTransformView::GetScales()
00087 {
00088 itk::Array<double> scales;
00089 scales.SetSize(3);
00090 scales.Fill(1.0);
00091 if (m_Controls.m_UseOptimizerScalesScaleLogarithmic->isChecked())
00092 {
00093 scales[0] = m_Controls.m_ScalesScaleLogarithmicTransformScaleX->text().toDouble();
00094 scales[1] = m_Controls.m_ScalesScaleLogarithmicTransformScaleY->text().toDouble();
00095 scales[2] = m_Controls.m_ScalesScaleLogarithmicTransformScaleZ->text().toDouble();
00096 }
00097 return scales;
00098 }
00099
00100 vtkTransform* QmitkScaleLogarithmicTransformView::Transform(vtkMatrix4x4* vtkmatrix, vtkTransform* vtktransform, itk::Array<double> transformParams)
00101 {
00102 if (m_MovingImage.IsNotNull())
00103 {
00104 for( unsigned int i=0; i<transformParams.size(); i++)
00105 {
00106 vtkmatrix->SetElement(i, i, transformParams[i]);
00107 }
00108 vtktransform->SetMatrix(vtkmatrix);
00109 }
00110 return vtktransform;
00111 }
00112
00113 int QmitkScaleLogarithmicTransformView::GetNumberOfTransformParameters()
00114 {
00115 if (m_FixedImage.IsNotNull())
00116 {
00117 if (m_FixedImage->GetDimension() == 2)
00118 {
00119 m_Controls.m_ScalesScaleLogarithmicTransformScaleZ->hide();
00120 m_Controls.textLabel3_5_3->hide();
00121 return 2;
00122 }
00123 else
00124 {
00125 m_Controls.m_ScalesScaleLogarithmicTransformScaleZ->show();
00126 m_Controls.textLabel3_5_3->show();
00127 return 3;
00128 }
00129 }
00130 else
00131 return 0;
00132 }