Public Member Functions | Protected Attributes

QmitkAffineTransformView Class Reference

Widget for rigid registration. More...

#include <QmitkAffineTransformView.h>

Inheritance diagram for QmitkAffineTransformView:
Inheritance graph
[legend]
Collaboration diagram for QmitkAffineTransformView:
Collaboration graph
[legend]

List of all members.

Public Member Functions

 QmitkAffineTransformView (QWidget *parent=0, Qt::WindowFlags f=0)
 ~QmitkAffineTransformView ()
virtual itk::Object::Pointer GetTransform ()
virtual itk::Array< double > GetTransformParameters ()
virtual void SetTransformParameters (itk::Array< double > transformValues)
virtual QString GetName ()
virtual void SetupUI (QWidget *parent)
virtual itk::Array< double > GetScales ()
virtual vtkTransform * Transform (vtkMatrix4x4 *vtkmatrix, vtkTransform *vtktransform, itk::Array< double > transformParams)
virtual int GetNumberOfTransformParameters ()

Protected Attributes

Ui::QmitkAffineTransformControls m_Controls
itk::Object::Pointer m_TransformObject
double m_CenterX
double m_CenterY
double m_CenterZ

Detailed Description

Widget for rigid registration.

Displays options for rigid registration.

Definition at line 31 of file QmitkAffineTransformView.h.


Constructor & Destructor Documentation

QmitkAffineTransformView::QmitkAffineTransformView ( QWidget *  parent = 0,
Qt::WindowFlags  f = 0 
)

Definition at line 24 of file QmitkAffineTransformView.cpp.

QmitkAffineTransformView::~QmitkAffineTransformView (  )

Definition at line 29 of file QmitkAffineTransformView.cpp.

{
}

Member Function Documentation

QString QmitkAffineTransformView::GetName (  ) [virtual]

Implements QmitkRigidRegistrationTransformsGUIBase.

Definition at line 122 of file QmitkAffineTransformView.cpp.

{
  return "Affine";
}
int QmitkAffineTransformView::GetNumberOfTransformParameters (  ) [virtual]

Implements QmitkRigidRegistrationTransformsGUIBase.

Definition at line 210 of file QmitkAffineTransformView.cpp.

References m_Controls, QmitkRigidRegistrationTransformsGUIBase::m_FixedImage, Ui_QmitkAffineTransformControls::m_ScalesAffineTransformScale7, Ui_QmitkAffineTransformControls::m_ScalesAffineTransformScale8, Ui_QmitkAffineTransformControls::m_ScalesAffineTransformScale9, Ui_QmitkAffineTransformControls::m_ScalesAffineTransformScaleTranslationX, Ui_QmitkAffineTransformControls::m_ScalesAffineTransformScaleTranslationY, Ui_QmitkAffineTransformControls::m_ScalesAffineTransformScaleTranslationZ, Ui_QmitkAffineTransformControls::textLabel11_3, Ui_QmitkAffineTransformControls::textLabel12_3, Ui_QmitkAffineTransformControls::textLabel13_2, Ui_QmitkAffineTransformControls::textLabel2_7, Ui_QmitkAffineTransformControls::textLabel3_6, Ui_QmitkAffineTransformControls::textLabel4_4, Ui_QmitkAffineTransformControls::textLabel5_4, and Ui_QmitkAffineTransformControls::textLabel6_4.

itk::Array< double > QmitkAffineTransformView::GetScales (  ) [virtual]

Implements QmitkRigidRegistrationTransformsGUIBase.

Definition at line 145 of file QmitkAffineTransformView.cpp.

References m_Controls, Ui_QmitkAffineTransformControls::m_ScalesAffineTransformScale1, Ui_QmitkAffineTransformControls::m_ScalesAffineTransformScale2, Ui_QmitkAffineTransformControls::m_ScalesAffineTransformScale3, Ui_QmitkAffineTransformControls::m_ScalesAffineTransformScale4, Ui_QmitkAffineTransformControls::m_ScalesAffineTransformScale5, Ui_QmitkAffineTransformControls::m_ScalesAffineTransformScale6, Ui_QmitkAffineTransformControls::m_ScalesAffineTransformScale7, Ui_QmitkAffineTransformControls::m_ScalesAffineTransformScale8, Ui_QmitkAffineTransformControls::m_ScalesAffineTransformScale9, Ui_QmitkAffineTransformControls::m_ScalesAffineTransformScaleTranslationX, Ui_QmitkAffineTransformControls::m_ScalesAffineTransformScaleTranslationY, and Ui_QmitkAffineTransformControls::m_ScalesAffineTransformScaleTranslationZ.

{
  itk::Array<double> scales;
  scales.SetSize(12);
  scales.Fill(1.0);
  scales[0] = m_Controls.m_ScalesAffineTransformScale1->text().toDouble();
  scales[1] = m_Controls.m_ScalesAffineTransformScale2->text().toDouble();
  scales[2] = m_Controls.m_ScalesAffineTransformScale3->text().toDouble();
  scales[3] = m_Controls.m_ScalesAffineTransformScale4->text().toDouble();
  scales[4] = m_Controls.m_ScalesAffineTransformScale5->text().toDouble();
  scales[5] = m_Controls.m_ScalesAffineTransformScale6->text().toDouble();
  scales[6] = m_Controls.m_ScalesAffineTransformScale7->text().toDouble();
  scales[7] = m_Controls.m_ScalesAffineTransformScale8->text().toDouble();
  scales[8] = m_Controls.m_ScalesAffineTransformScale9->text().toDouble();
  scales[9] = m_Controls.m_ScalesAffineTransformScaleTranslationX->text().toDouble();
  scales[10] = m_Controls.m_ScalesAffineTransformScaleTranslationY->text().toDouble();
  scales[11] = m_Controls.m_ScalesAffineTransformScaleTranslationZ->text().toDouble();
  return scales;
}
itk::Object::Pointer QmitkAffineTransformView::GetTransform (  ) [virtual]
itk::Array< double > QmitkAffineTransformView::GetTransformParameters (  ) [virtual]

Implements QmitkRigidRegistrationTransformsGUIBase.

Definition at line 79 of file QmitkAffineTransformView.cpp.

References Ui_QmitkAffineTransformControls::m_CenterForInitializerAffine, m_Controls, Ui_QmitkAffineTransformControls::m_MomentsAffine, Ui_QmitkAffineTransformControls::m_ScalesAffineTransformScale1, Ui_QmitkAffineTransformControls::m_ScalesAffineTransformScale2, Ui_QmitkAffineTransformControls::m_ScalesAffineTransformScale3, Ui_QmitkAffineTransformControls::m_ScalesAffineTransformScale4, Ui_QmitkAffineTransformControls::m_ScalesAffineTransformScale5, Ui_QmitkAffineTransformControls::m_ScalesAffineTransformScale6, Ui_QmitkAffineTransformControls::m_ScalesAffineTransformScale7, Ui_QmitkAffineTransformControls::m_ScalesAffineTransformScale8, Ui_QmitkAffineTransformControls::m_ScalesAffineTransformScale9, Ui_QmitkAffineTransformControls::m_ScalesAffineTransformScaleTranslationX, Ui_QmitkAffineTransformControls::m_ScalesAffineTransformScaleTranslationY, Ui_QmitkAffineTransformControls::m_ScalesAffineTransformScaleTranslationZ, and Ui_QmitkAffineTransformControls::m_UseOptimizerScalesAffine.

{
  itk::Array<double> transformValues;
  transformValues.SetSize(15);
  transformValues.fill(0);
  transformValues[0] = m_Controls.m_UseOptimizerScalesAffine->isChecked();
  transformValues[1] = m_Controls.m_ScalesAffineTransformScale1->text().toDouble();
  transformValues[2] = m_Controls.m_ScalesAffineTransformScale2->text().toDouble();
  transformValues[3] = m_Controls.m_ScalesAffineTransformScale3->text().toDouble();
  transformValues[4] = m_Controls.m_ScalesAffineTransformScale4->text().toDouble();
  transformValues[5] = m_Controls.m_ScalesAffineTransformScale5->text().toDouble();
  transformValues[6] = m_Controls.m_ScalesAffineTransformScale6->text().toDouble();
  transformValues[7] = m_Controls.m_ScalesAffineTransformScale7->text().toDouble();
  transformValues[8] = m_Controls.m_ScalesAffineTransformScale8->text().toDouble();
  transformValues[9] = m_Controls.m_ScalesAffineTransformScale9->text().toDouble();
  transformValues[10] = m_Controls.m_ScalesAffineTransformScaleTranslationX->text().toDouble();
  transformValues[11] = m_Controls.m_ScalesAffineTransformScaleTranslationY->text().toDouble();
  transformValues[12] = m_Controls.m_ScalesAffineTransformScaleTranslationZ->text().toDouble();
  transformValues[13] = m_Controls.m_CenterForInitializerAffine->isChecked();
  transformValues[14] = m_Controls.m_MomentsAffine->isChecked();
  return transformValues;
}
void QmitkAffineTransformView::SetTransformParameters ( itk::Array< double >  transformValues ) [virtual]

Implements QmitkRigidRegistrationTransformsGUIBase.

Definition at line 102 of file QmitkAffineTransformView.cpp.

References Ui_QmitkAffineTransformControls::m_CenterForInitializerAffine, m_Controls, Ui_QmitkAffineTransformControls::m_GeometryAffine, Ui_QmitkAffineTransformControls::m_MomentsAffine, Ui_QmitkAffineTransformControls::m_ScalesAffineTransformScale1, Ui_QmitkAffineTransformControls::m_ScalesAffineTransformScale2, Ui_QmitkAffineTransformControls::m_ScalesAffineTransformScale3, Ui_QmitkAffineTransformControls::m_ScalesAffineTransformScale4, Ui_QmitkAffineTransformControls::m_ScalesAffineTransformScale5, Ui_QmitkAffineTransformControls::m_ScalesAffineTransformScale6, Ui_QmitkAffineTransformControls::m_ScalesAffineTransformScale7, Ui_QmitkAffineTransformControls::m_ScalesAffineTransformScale8, Ui_QmitkAffineTransformControls::m_ScalesAffineTransformScale9, Ui_QmitkAffineTransformControls::m_ScalesAffineTransformScaleTranslationX, Ui_QmitkAffineTransformControls::m_ScalesAffineTransformScaleTranslationY, Ui_QmitkAffineTransformControls::m_ScalesAffineTransformScaleTranslationZ, and Ui_QmitkAffineTransformControls::m_UseOptimizerScalesAffine.

{
  m_Controls.m_UseOptimizerScalesAffine->setChecked(transformValues[0]);
  m_Controls.m_ScalesAffineTransformScale1->setText(QString::number(transformValues[1]));
  m_Controls.m_ScalesAffineTransformScale2->setText(QString::number(transformValues[2]));
  m_Controls.m_ScalesAffineTransformScale3->setText(QString::number(transformValues[3]));
  m_Controls.m_ScalesAffineTransformScale4->setText(QString::number(transformValues[4]));
  m_Controls.m_ScalesAffineTransformScale5->setText(QString::number(transformValues[5]));
  m_Controls.m_ScalesAffineTransformScale6->setText(QString::number(transformValues[6]));
  m_Controls.m_ScalesAffineTransformScale7->setText(QString::number(transformValues[7]));
  m_Controls.m_ScalesAffineTransformScale8->setText(QString::number(transformValues[8]));
  m_Controls.m_ScalesAffineTransformScale9->setText(QString::number(transformValues[9]));
  m_Controls.m_ScalesAffineTransformScaleTranslationX->setText(QString::number(transformValues[10]));
  m_Controls.m_ScalesAffineTransformScaleTranslationY->setText(QString::number(transformValues[11]));
  m_Controls.m_ScalesAffineTransformScaleTranslationZ->setText(QString::number(transformValues[12]));
  m_Controls.m_CenterForInitializerAffine->setChecked(transformValues[13]);
  m_Controls.m_MomentsAffine->setChecked(transformValues[14]);
  m_Controls.m_GeometryAffine->setChecked(!transformValues[14]);
}
void QmitkAffineTransformView::SetupUI ( QWidget *  parent ) [virtual]

Implements QmitkRigidRegistrationTransformsGUIBase.

Definition at line 127 of file QmitkAffineTransformView.cpp.

References m_Controls, Ui_QmitkAffineTransformControls::m_ScalesAffineTransformScale1, Ui_QmitkAffineTransformControls::m_ScalesAffineTransformScale2, Ui_QmitkAffineTransformControls::m_ScalesAffineTransformScale3, Ui_QmitkAffineTransformControls::m_ScalesAffineTransformScale4, Ui_QmitkAffineTransformControls::m_ScalesAffineTransformScale5, Ui_QmitkAffineTransformControls::m_ScalesAffineTransformScale6, Ui_QmitkAffineTransformControls::m_ScalesAffineTransformScale7, Ui_QmitkAffineTransformControls::m_ScalesAffineTransformScale8, Ui_QmitkAffineTransformControls::m_ScalesAffineTransformScale9, Ui_QmitkAffineTransformControls::m_ScalesAffineTransformScaleTranslationX, Ui_QmitkAffineTransformControls::m_ScalesAffineTransformScaleTranslationY, Ui_QmitkAffineTransformControls::m_ScalesAffineTransformScaleTranslationZ, and Ui_QmitkAffineTransformControls::setupUi().

{
  m_Controls.setupUi(parent);
  QValidator* validatorLineEditInputFloat = new QDoubleValidator(0, 20000000, 8, this);
  m_Controls.m_ScalesAffineTransformScale1->setValidator(validatorLineEditInputFloat);
  m_Controls.m_ScalesAffineTransformScale2->setValidator(validatorLineEditInputFloat);
  m_Controls.m_ScalesAffineTransformScale3->setValidator(validatorLineEditInputFloat);
  m_Controls.m_ScalesAffineTransformScale4->setValidator(validatorLineEditInputFloat);
  m_Controls.m_ScalesAffineTransformScale5->setValidator(validatorLineEditInputFloat);
  m_Controls.m_ScalesAffineTransformScale6->setValidator(validatorLineEditInputFloat);
  m_Controls.m_ScalesAffineTransformScale7->setValidator(validatorLineEditInputFloat);
  m_Controls.m_ScalesAffineTransformScale8->setValidator(validatorLineEditInputFloat);
  m_Controls.m_ScalesAffineTransformScale9->setValidator(validatorLineEditInputFloat);
  m_Controls.m_ScalesAffineTransformScaleTranslationX->setValidator(validatorLineEditInputFloat);
  m_Controls.m_ScalesAffineTransformScaleTranslationY->setValidator(validatorLineEditInputFloat);
  m_Controls.m_ScalesAffineTransformScaleTranslationZ->setValidator(validatorLineEditInputFloat);
}
vtkTransform * QmitkAffineTransformView::Transform ( vtkMatrix4x4 *  vtkmatrix,
vtkTransform *  vtktransform,
itk::Array< double >  transformParams 
) [virtual]

Implements QmitkRigidRegistrationTransformsGUIBase.

Definition at line 165 of file QmitkAffineTransformView.cpp.

References m_CenterX, m_CenterY, m_CenterZ, QmitkRigidRegistrationTransformsGUIBase::m_FixedImage, and QmitkRigidRegistrationTransformsGUIBase::m_MovingImage.

{
  if (m_MovingImage.IsNotNull())
  {
    // -  the 9 rotation-coefficients are copied
    //    directly to the top left part of the matrix
    int m = 0;
    for (unsigned int i = 0; i < m_FixedImage->GetDimension(); i++)
    {
      for (unsigned int j = 0; j < m_FixedImage->GetDimension(); j++)
      {
        vtkmatrix->SetElement(i, j, transformParams[m]);
        m++;
      }
    }

    // -  the 3 translation-coefficients are corrected to take
    //    into account the center of the transformation
    float center[4];
    center[0] = m_CenterX;
    center[1] = m_CenterY;
    center[2] = m_CenterZ;
    center[3] = 1;
    std::cout<< "rotation center: " << center[0] << " " << center[1] << " " << center [2] << std::endl;

    float translation[4];
    vtkmatrix->MultiplyPoint(center, translation);
    if (m_FixedImage->GetDimension() == 2)
    {
      vtkmatrix->SetElement(0, 3, -translation[0] + center[0] + transformParams[4]);
      vtkmatrix->SetElement(1, 3, -translation[1] + center[1] + transformParams[5]);
    }
    else if (m_FixedImage->GetDimension() == 3)
    {
      vtkmatrix->SetElement(0, 3, -translation[0] + center[0] + transformParams[9]);
      vtkmatrix->SetElement(1, 3, -translation[1] + center[1] + transformParams[10]);
      vtkmatrix->SetElement(2, 3, -translation[2] + center[2] + transformParams[11]);
    }

    // set the transform matrix to init the transform
    vtktransform->SetMatrix(vtkmatrix);
  }
  return vtktransform;
}

Member Data Documentation

Definition at line 67 of file QmitkAffineTransformView.h.

Referenced by Transform().

Definition at line 68 of file QmitkAffineTransformView.h.

Referenced by Transform().

Definition at line 69 of file QmitkAffineTransformView.h.

Referenced by Transform().

itk::Object::Pointer QmitkAffineTransformView::m_TransformObject [protected]

Definition at line 65 of file QmitkAffineTransformView.h.

Referenced by GetTransform().


The documentation for this class was generated from the following files:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Defines