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 "QmitkScaleTransformView.h"
00019 #include "mitkImageAccessByItk.h"
00020 #include <itkScaleTransform.h>
00021 #include <QValidator>
00022
00023 QmitkScaleTransformView::QmitkScaleTransformView(QWidget* parent, Qt::WindowFlags f ) : QmitkRigidRegistrationTransformsGUIBase(parent, f)
00024 {
00025 }
00026
00027 QmitkScaleTransformView::~QmitkScaleTransformView()
00028 {
00029 }
00030
00031 itk::Object::Pointer QmitkScaleTransformView::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 QmitkScaleTransformView::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::ScaleTransform< double, VImageDimension>::Pointer transformPointer = itk::ScaleTransform< double, VImageDimension>::New();
00047 transformPointer->SetIdentity();
00048 m_TransformObject = transformPointer.GetPointer();
00049 return transformPointer.GetPointer();
00050 }
00051
00052 itk::Array<double> QmitkScaleTransformView::GetTransformParameters()
00053 {
00054 itk::Array<double> transformValues;
00055 transformValues.SetSize(4);
00056 transformValues.fill(0);
00057 transformValues[0] = m_Controls.m_UseOptimizerScalesScale->isChecked();
00058 transformValues[1] = m_Controls.m_ScalesScaleTransformScaleX->text().toDouble();
00059 transformValues[2] = m_Controls.m_ScalesScaleTransformScaleY->text().toDouble();
00060 transformValues[3] = m_Controls.m_ScalesScaleTransformScaleZ->text().toDouble();
00061 return transformValues;
00062 }
00063
00064 void QmitkScaleTransformView::SetTransformParameters(itk::Array<double> transformValues)
00065 {
00066 m_Controls.m_UseOptimizerScalesScale->setChecked(transformValues[0]);
00067 m_Controls.m_ScalesScaleTransformScaleX->setText(QString::number(transformValues[1]));
00068 m_Controls.m_ScalesScaleTransformScaleY->setText(QString::number(transformValues[2]));
00069 m_Controls.m_ScalesScaleTransformScaleZ->setText(QString::number(transformValues[3]));
00070 }
00071
00072 QString QmitkScaleTransformView::GetName()
00073 {
00074 return "Scale";
00075 }
00076
00077 void QmitkScaleTransformView::SetupUI(QWidget* parent)
00078 {
00079 m_Controls.setupUi(parent);
00080 QValidator* validatorLineEditInputFloat = new QDoubleValidator(0, 20000000, 8, this);
00081 m_Controls.m_ScalesScaleTransformScaleX->setValidator(validatorLineEditInputFloat);
00082 m_Controls.m_ScalesScaleTransformScaleY->setValidator(validatorLineEditInputFloat);
00083 m_Controls.m_ScalesScaleTransformScaleZ->setValidator(validatorLineEditInputFloat);
00084 }
00085
00086 itk::Array<double> QmitkScaleTransformView::GetScales()
00087 {
00088 itk::Array<double> scales;
00089 scales.SetSize(3);
00090 scales.Fill(1.0);
00091 if (m_Controls.m_UseOptimizerScalesScale->isChecked())
00092 {
00093 scales[0] = m_Controls.m_ScalesScaleTransformScaleX->text().toDouble();
00094 scales[1] = m_Controls.m_ScalesScaleTransformScaleY->text().toDouble();
00095 scales[2] = m_Controls.m_ScalesScaleTransformScaleZ->text().toDouble();
00096 }
00097 return scales;
00098 }
00099
00100 vtkTransform* QmitkScaleTransformView::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 QmitkScaleTransformView::GetNumberOfTransformParameters()
00114 {
00115 if (m_FixedImage.IsNotNull())
00116 {
00117 if (m_FixedImage->GetDimension() == 2)
00118 {
00119 m_Controls.m_ScalesScaleTransformScaleZ->hide();
00120 m_Controls.textLabel3_5->hide();
00121 return 2;
00122 }
00123 else
00124 {
00125 m_Controls.m_ScalesScaleTransformScaleZ->show();
00126 m_Controls.textLabel3_5->show();
00127 this->repaint();
00128 return 3;
00129 }
00130 }
00131 else
00132 return 0;
00133 }