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 "QmitkTranslationTransformView.h"
00019 #include "mitkImageAccessByItk.h"
00020 #include <itkTranslationTransform.h>
00021 #include <QValidator>
00022
00023 QmitkTranslationTransformView::QmitkTranslationTransformView(QWidget* parent, Qt::WindowFlags f ) : QmitkRigidRegistrationTransformsGUIBase(parent, f)
00024 {
00025 }
00026
00027 QmitkTranslationTransformView::~QmitkTranslationTransformView()
00028 {
00029 }
00030
00031 itk::Object::Pointer QmitkTranslationTransformView::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 QmitkTranslationTransformView::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::TranslationTransform< double, VImageDimension>::Pointer TransformPointer = itk::TranslationTransform< double, VImageDimension>::New();
00047 TransformPointer->SetIdentity();
00048 m_TransformObject = TransformPointer.GetPointer();
00049 return TransformPointer.GetPointer();
00050 }
00051
00052 itk::Array<double> QmitkTranslationTransformView::GetTransformParameters()
00053 {
00054 itk::Array<double> transformValues;
00055 transformValues.SetSize(4);
00056 transformValues.fill(0);
00057 transformValues[0] = m_Controls.m_UseOptimizerScalesTranslation->isChecked();
00058 transformValues[1] = m_Controls.m_ScalesTranslationTransformTranslationX->text().toDouble();
00059 transformValues[2] = m_Controls.m_ScalesTranslationTransformTranslationY->text().toDouble();
00060 transformValues[3] = m_Controls.m_ScalesTranslationTransformTranslationZ->text().toDouble();
00061 return transformValues;
00062 }
00063
00064 void QmitkTranslationTransformView::SetTransformParameters(itk::Array<double> transformValues)
00065 {
00066 m_Controls.m_UseOptimizerScalesTranslation->setChecked(transformValues[0]);
00067 m_Controls.m_ScalesTranslationTransformTranslationX->setText(QString::number(transformValues[1]));
00068 m_Controls.m_ScalesTranslationTransformTranslationY->setText(QString::number(transformValues[2]));
00069 m_Controls.m_ScalesTranslationTransformTranslationZ->setText(QString::number(transformValues[3]));
00070 }
00071
00072 QString QmitkTranslationTransformView::GetName()
00073 {
00074 return "Translation";
00075 }
00076
00077 void QmitkTranslationTransformView::SetupUI(QWidget* parent)
00078 {
00079 m_Controls.setupUi(parent);
00080 QValidator* validatorLineEditInputFloat = new QDoubleValidator(0, 20000000, 8, this);
00081 m_Controls.m_ScalesTranslationTransformTranslationX->setValidator(validatorLineEditInputFloat);
00082 m_Controls.m_ScalesTranslationTransformTranslationY->setValidator(validatorLineEditInputFloat);
00083 m_Controls.m_ScalesTranslationTransformTranslationZ->setValidator(validatorLineEditInputFloat);
00084 }
00085
00086 itk::Array<double> QmitkTranslationTransformView::GetScales()
00087 {
00088 itk::Array<double> scales;
00089 scales.SetSize(3);
00090 scales.Fill(1.0);
00091 if (m_Controls.m_UseOptimizerScalesTranslation->isChecked())
00092 {
00093 scales[0] = m_Controls.m_ScalesTranslationTransformTranslationX->text().toDouble();
00094 scales[1] = m_Controls.m_ScalesTranslationTransformTranslationY->text().toDouble();
00095 scales[2] = m_Controls.m_ScalesTranslationTransformTranslationZ->text().toDouble();
00096 }
00097 return scales;
00098 }
00099
00100 vtkTransform* QmitkTranslationTransformView::Transform(vtkMatrix4x4* , vtkTransform* vtktransform, itk::Array<double> transformParams)
00101 {
00102 if (m_MovingImage.IsNotNull())
00103 {
00104 if (transformParams.size() == 2)
00105 {
00106 vtktransform->Translate(transformParams[0], transformParams[1], 0);
00107 }
00108 else if (transformParams.size() == 3)
00109 {
00110 vtktransform->Translate(transformParams[0], transformParams[1], transformParams[2]);
00111 std::cout<<"Translation is: "<<transformParams[0] << transformParams[1] << transformParams[2] << std::endl;
00112 }
00113 }
00114 return vtktransform;
00115 }
00116
00117 int QmitkTranslationTransformView::GetNumberOfTransformParameters()
00118 {
00119 if (m_FixedImage.IsNotNull())
00120 {
00121 if (m_FixedImage->GetDimension() == 2)
00122 {
00123 m_Controls.m_ScalesTranslationTransformTranslationZ->hide();
00124 m_Controls.textLabel4_4_2->hide();
00125
00126 return 2;
00127 }
00128 else
00129 {
00130 m_Controls.m_ScalesTranslationTransformTranslationZ->show();
00131 m_Controls.textLabel4_4_2->show();
00132
00133 return 3;
00134 }
00135 }
00136 else
00137 return 0;
00138 }