Public Member Functions | Static Public Attributes | Protected Slots | Protected Attributes | Friends

QmitkRigidRegistrationView Class Reference
[FunctionalitiesClasses related to rigid registration]

This functionality allows you to register 2D as well as 3D images in a rigid manner. More...

#include <QmitkRigidRegistrationView.h>

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

List of all members.

Public Member Functions

 QmitkRigidRegistrationView (QObject *parent=0, const char *name=0)
 default constructor
virtual ~QmitkRigidRegistrationView ()
 default destructor
virtual void CreateQtPartControl (QWidget *parent)
 method for creating the applications main widget
virtual void StdMultiWidgetAvailable (QmitkStdMultiWidget &stdMultiWidget)
 Sets the StdMultiWidget and connects it to the functionality.
virtual void StdMultiWidgetNotAvailable ()
 Removes the StdMultiWidget and disconnects it from the functionality.
virtual void CreateConnections ()
 method for creating the connections of main and control widget
virtual void Activated ()
 Method which is called when this functionality is selected in MITK.
virtual void Deactivated ()
 Method which is called whenever the functionality is deselected in MITK.
virtual void Visible ()
virtual void Hidden ()
void DataNodeHasBeenRemoved (const mitk::DataNode *node)

Static Public Attributes

static const std::string VIEW_ID = "org.mitk.views.rigidregistration"

Protected Slots

void FixedSelected (mitk::DataNode::Pointer fixedImage)
void MovingSelected (mitk::DataNode::Pointer movingImage)
bool CheckCalculate ()
void UndoTransformation ()
 Undo the last registration.
void RedoTransformation ()
 Redo the last registration.
void AddNewTransformationToUndoList ()
 Adds a new Transformation to the undo list and enables the undo button.
void Translate (int *translateVector)
 Translates the moving image in x, y and z direction given by translateVector.
void Rotate (int *rotateVector)
 Rotates the moving image in x, y and z direction given by rotateVector.
void Scale (int *scaleVector)
 Scales the moving image in x, y and z direction given by scaleVector.
void AlignCenters ()
 Automatically aligns the image centers.
void ShowRedGreen (bool show)
 Stores whether the image will be shown in gray values or in red for fixed image and green for moving image.
void ShowManualRegistrationFrame (bool show)
 Changes the visibility of the manual registration methods accordingly to the checkbox "Manual Registration" in GUI.
void OpacityUpdate (float opacity)
 Sets the selected opacity for moving image.
void OpacityUpdate (int opacity)
 Sets the selected opacity for moving image.
void SetImageColor (bool redGreen)
 Sets the images to grayvalues or fixed image to red and moving image to green.
void ClearTransformationLists ()
 Clears the undo and redo lists and sets the undo and redo buttons to disabled.
void SetUndoEnabled (bool enable)
void SetRedoEnabled (bool enable)
void CheckCalculateEnabled ()
void xTrans_valueChanged (int v)
void yTrans_valueChanged (int v)
void zTrans_valueChanged (int v)
void xRot_valueChanged (int v)
void yRot_valueChanged (int v)
void zRot_valueChanged (int v)
void xScale_valueChanged (int v)
void yScale_valueChanged (int v)
void zScale_valueChanged (int v)
void MovingImageChanged ()
void Calculate ()
 Starts the registration process.
void SetOptimizerValue (double value)
void StopOptimizationClicked ()
void UpdateTimestep ()
void SetImagesVisible (berry::ISelection::ConstPointer)
void CheckForMaskImages ()
void UseFixedMaskImageChecked (bool checked)
void UseMovingMaskImageChecked (bool checked)
void TabChanged (int index)
void SwitchImages ()

Protected Attributes

berry::ISelectionListener::Pointer m_SelListener
berry::IStructuredSelection::ConstPointer m_CurrentSelection
QmitkStdMultiWidgetm_MultiWidget
Ui::QmitkRigidRegistrationViewControls m_Controls
mitk::DataNode::Pointer m_MovingNode
mitk::DataNode::Pointer m_MovingMaskNode
mitk::DataNode::Pointer m_FixedNode
mitk::DataNode::Pointer m_FixedMaskNode
std::list
< mitk::Geometry3D::Pointer
m_UndoGeometryList
std::list< std::map
< mitk::DataNode::Pointer,
mitk::Geometry3D * > > 
m_UndoChildGeometryList
std::list
< mitk::Geometry3D::Pointer
m_RedoGeometryList
std::list< std::map
< mitk::DataNode::Pointer,
mitk::Geometry3D * > > 
m_RedoChildGeometryList
bool m_ShowRedGreen
float m_Opacity
float m_OriginalOpacity
bool m_Deactivated
int m_FixedDimension
int m_MovingDimension
int * translationParams
int * rotationParams
int * scalingParams
mitk::Color m_FixedColor
mitk::Color m_MovingColor
int m_TranslateSliderPos [3]
int m_RotateSliderPos [3]
int m_ScaleSliderPos [3]
QmitkStepperAdapterm_TimeStepperAdapter

Friends

struct SelListenerRigidRegistration

Detailed Description

This functionality allows you to register 2D as well as 3D images in a rigid manner.

Register means to align two images, so that they become as similar as possible. Therefore you can select from different transforms, metrics and optimizers. Registration results will directly be applied to the Moving Image.

See also:
QmitkFunctionality
Author:
Daniel Stein

Definition at line 47 of file QmitkRigidRegistrationView.h.


Constructor & Destructor Documentation

QmitkRigidRegistrationView::QmitkRigidRegistrationView ( QObject *  parent = 0,
const char *  name = 0 
)
QmitkRigidRegistrationView::~QmitkRigidRegistrationView (  ) [virtual]

Member Function Documentation

void QmitkRigidRegistrationView::Activated (  ) [virtual]

Method which is called when this functionality is selected in MITK.

Reimplemented from QmitkFunctionality.

Definition at line 268 of file QmitkRigidRegistrationView.cpp.

References berry::SmartPointer< TObjectType >::Cast(), CheckCalculateEnabled(), ClearTransformationLists(), mitk::RenderingManager::GetInstance(), berry::WorkbenchPart::GetSite(), berry::SmartPointer< TObjectType >::IsNull(), m_Controls, m_CurrentSelection, m_Deactivated, Ui_QmitkRigidRegistrationViewControls::m_OpacitySlider, m_SelListener, Ui_QmitkRigidRegistrationViewControls::m_ShowRedGreenValues, OpacityUpdate(), SelListenerRigidRegistration, and ShowRedGreen().

{
  m_Deactivated = false;
  mitk::RenderingManager::GetInstance()->RequestUpdateAll();
  QmitkFunctionality::Activated();
  if (m_SelListener.IsNull())
  {
    m_SelListener = berry::ISelectionListener::Pointer(new SelListenerRigidRegistration(this));
    this->GetSite()->GetWorkbenchWindow()->GetSelectionService()->AddPostSelectionListener(/*"org.mitk.views.datamanager",*/ m_SelListener);
    berry::ISelection::ConstPointer sel(
      this->GetSite()->GetWorkbenchWindow()->GetSelectionService()->GetSelection("org.mitk.views.datamanager"));
    m_CurrentSelection = sel.Cast<const IStructuredSelection>();
    m_SelListener.Cast<SelListenerRigidRegistration>()->DoSelectionChanged(sel);
  }
  this->OpacityUpdate(m_Controls.m_OpacitySlider->value());
  this->ShowRedGreen(m_Controls.m_ShowRedGreenValues->isChecked());
  this->ClearTransformationLists();
  this->CheckCalculateEnabled();
  /*
  m_Deactivated = false;
    mitk::RenderingManager::GetInstance()->RequestUpdateAll();
    QmitkFunctionality::Activated();
    if (m_SelListener.IsNull())
    {
      m_SelListener = berry::ISelectionListener::Pointer(new SelListenerRigidRegistration(this));
      this->GetSite()->GetWorkbenchWindow()->GetSelectionService()->AddPostSelectionListener(/ *"org.mitk.views.datamanager",* / m_SelListener);
      berry::ISelection::ConstPointer sel(
        this->GetSite()->GetWorkbenchWindow()->GetSelectionService()->GetSelection("org.mitk.views.datamanager"));
      m_CurrentSelection = sel.Cast<const IStructuredSelection>();
      m_SelListener.Cast<SelListenerRigidRegistration>()->DoSelectionChanged(sel);
    }
    this->OpacityUpdate(m_Controls.m_OpacitySlider->value());
    this->ShowRedGreen(m_Controls.m_ShowRedGreenValues->isChecked());
    this->ClearTransformationLists();
    this->CheckCalculateEnabled();*/

}
void QmitkRigidRegistrationView::AddNewTransformationToUndoList (  ) [protected, slot]

Adds a new Transformation to the undo list and enables the undo button.

Definition at line 519 of file QmitkRigidRegistrationView.cpp.

References QmitkFunctionality::GetDataStorage(), m_MovingNode, m_RedoChildGeometryList, m_RedoGeometryList, m_UndoChildGeometryList, m_UndoGeometryList, SetRedoEnabled(), and SetUndoEnabled().

Referenced by CreateConnections().

{
  mitk::BaseData::Pointer movingData = m_MovingNode->GetData();
  m_UndoGeometryList.push_back(static_cast<mitk::Geometry3D *>(movingData->GetGeometry(0)->Clone().GetPointer()));
  unsigned long size;
  mitk::DataStorage::SetOfObjects::ConstPointer children = this->GetDataStorage()->GetDerivations(m_MovingNode);
  size = children->Size();
  std::map<mitk::DataNode::Pointer, mitk::Geometry3D*> childGeometries;
  for (unsigned long i = 0; i < size; ++i)
  {
    childGeometries.insert(std::pair<mitk::DataNode::Pointer, mitk::Geometry3D*>(children->GetElement(i), children->GetElement(i)->GetData()->GetGeometry()));
  }
  m_UndoChildGeometryList.push_back(childGeometries);
  m_RedoGeometryList.clear();
  m_RedoChildGeometryList.clear();
  this->SetUndoEnabled(true);
  this->SetRedoEnabled(false);
}
void QmitkRigidRegistrationView::AlignCenters (  ) [protected, slot]

Automatically aligns the image centers.

Definition at line 907 of file QmitkRigidRegistrationView.cpp.

References int(), m_Controls, m_FixedNode, m_MovingNode, Ui_QmitkRigidRegistrationViewControls::m_XTransSlider, Ui_QmitkRigidRegistrationViewControls::m_YTransSlider, and Ui_QmitkRigidRegistrationViewControls::m_ZTransSlider.

Referenced by CreateConnections().

{
  if (m_FixedNode.IsNotNull() && m_MovingNode.IsNotNull())
  {
    mitk::Point3D fixedPoint = m_FixedNode->GetData()->GetGeometry()->GetCenter();
    mitk::Point3D movingPoint = m_MovingNode->GetData()->GetGeometry()->GetCenter();
    mitk::Vector3D translateVec;
    translateVec =  fixedPoint - movingPoint;
    m_Controls.m_XTransSlider->setValue((int)m_Controls.m_XTransSlider->value() + (int)translateVec[0]);
    m_Controls.m_YTransSlider->setValue((int)m_Controls.m_YTransSlider->value() + (int)translateVec[1]);
    m_Controls.m_ZTransSlider->setValue((int)m_Controls.m_ZTransSlider->value() + (int)translateVec[2]);
  }
}
void QmitkRigidRegistrationView::Calculate (  ) [protected, slot]

Starts the registration process.

Definition at line 1125 of file QmitkRigidRegistrationView.cpp.

References QmitkRigidRegistrationSelectorView::CalculateTransformation(), Ui_QmitkRigidRegistrationViewControls::frame_2, Ui_QmitkRigidRegistrationViewControls::frame_3, Ui_QmitkRigidRegistrationViewControls::m_CalculateTransformation, m_Controls, m_FixedMaskNode, m_FixedNode, m_MovingMaskNode, m_MovingNode, Ui_QmitkRigidRegistrationViewControls::m_StopOptimization, Ui_QmitkRigidRegistrationViewControls::m_UseFixedImageMask, Ui_QmitkRigidRegistrationViewControls::m_UseMovingImageMask, Ui_QmitkRigidRegistrationViewControls::qmitkRigidRegistrationSelector1, QmitkRigidRegistrationSelectorView::SetFixedMaskNode(), QmitkRigidRegistrationSelectorView::SetFixedNode(), QmitkRigidRegistrationSelectorView::SetMovingMaskNode(), QmitkRigidRegistrationSelectorView::SetMovingNode(), QmitkRigidRegistrationSelectorView::StopOptimization(), and Ui_QmitkRigidRegistrationViewControls::timeSlider.

Referenced by CreateConnections().

bool QmitkRigidRegistrationView::CheckCalculate (  ) [protected, slot]

checks if registration is possible

Definition at line 512 of file QmitkRigidRegistrationView.cpp.

References m_FixedNode, and m_MovingNode.

{
  if(m_MovingNode==m_FixedNode)
    return false;
  return true;
}
void QmitkRigidRegistrationView::CheckCalculateEnabled (  ) [protected, slot]

Definition at line 931 of file QmitkRigidRegistrationView.cpp.

References QmitkRigidRegistrationSelectorView::GetSelectedTransform(), Ui_QmitkRigidRegistrationViewControls::m_CalculateTransformation, m_Controls, m_FixedDimension, m_FixedNode, Ui_QmitkRigidRegistrationViewControls::m_ManualFrame, m_MovingDimension, m_MovingNode, and Ui_QmitkRigidRegistrationViewControls::qmitkRigidRegistrationSelector1.

Referenced by Activated(), CreateConnections(), CreateQtPartControl(), FixedSelected(), MovingImageChanged(), MovingSelected(), and UndoTransformation().

{
  if (m_FixedNode.IsNotNull() && m_MovingNode.IsNotNull())
  {
    m_Controls.m_ManualFrame->setEnabled(true);
    m_Controls.m_CalculateTransformation->setEnabled(true);
    if ( (m_FixedDimension != m_MovingDimension && std::max<int>(m_FixedDimension, m_MovingDimension) != 4) || m_FixedDimension < 2 /*|| m_FixedDimension > 3*/)
    {
      m_Controls.m_CalculateTransformation->setEnabled(false);
    }
    else if (m_Controls.qmitkRigidRegistrationSelector1->GetSelectedTransform() < 5 &&  (m_FixedDimension < 2) /*|| m_FixedDimension > 3)*/)
    {
      m_Controls.m_CalculateTransformation->setEnabled(false);
    }
    else if ((m_Controls.qmitkRigidRegistrationSelector1->GetSelectedTransform() > 4 && m_Controls.qmitkRigidRegistrationSelector1->GetSelectedTransform() < 13) && !(m_FixedDimension > 2))
    {
      m_Controls.m_CalculateTransformation->setEnabled(false);
    }
    else if (m_Controls.qmitkRigidRegistrationSelector1->GetSelectedTransform() > 12 &&  m_FixedDimension != 2)
    {
      m_Controls.m_CalculateTransformation->setEnabled(false);
    }
  }
  else
  {
    m_Controls.m_CalculateTransformation->setEnabled(false);
    m_Controls.m_ManualFrame->setEnabled(false);
  }
}
void QmitkRigidRegistrationView::CheckForMaskImages (  ) [protected, slot]
void QmitkRigidRegistrationView::ClearTransformationLists (  ) [protected, slot]

Clears the undo and redo lists and sets the undo and redo buttons to disabled.

Definition at line 677 of file QmitkRigidRegistrationView.cpp.

References m_RedoChildGeometryList, m_RedoGeometryList, m_UndoChildGeometryList, m_UndoGeometryList, SetRedoEnabled(), and SetUndoEnabled().

Referenced by Activated(), and Deactivated().

{
  this->SetUndoEnabled(false);
  this->SetRedoEnabled(false);
  m_UndoGeometryList.clear();
  m_UndoChildGeometryList.clear();
  m_RedoGeometryList.clear();
  m_RedoChildGeometryList.clear();
}
void QmitkRigidRegistrationView::CreateConnections (  ) [virtual]

method for creating the connections of main and control widget

Definition at line 236 of file QmitkRigidRegistrationView.cpp.

References AddNewTransformationToUndoList(), AlignCenters(), Calculate(), CheckCalculateEnabled(), Ui_QmitkRigidRegistrationViewControls::m_AutomaticTranslation, Ui_QmitkRigidRegistrationViewControls::m_CalculateTransformation, m_Controls, Ui_QmitkRigidRegistrationViewControls::m_LoadRigidRegistrationParameter, Ui_QmitkRigidRegistrationViewControls::m_LoadRigidRegistrationTestParameter, Ui_QmitkRigidRegistrationViewControls::m_ManualRegistrationCheckbox, Ui_QmitkRigidRegistrationViewControls::m_OpacitySlider, Ui_QmitkRigidRegistrationViewControls::m_RedoTransformation, Ui_QmitkRigidRegistrationViewControls::m_RigidTransform, Ui_QmitkRigidRegistrationViewControls::m_SaveRigidRegistrationParameter, Ui_QmitkRigidRegistrationViewControls::m_SaveRigidRegistrationTestParameter, Ui_QmitkRigidRegistrationViewControls::m_ShowRedGreenValues, Ui_QmitkRigidRegistrationViewControls::m_StopOptimization, Ui_QmitkRigidRegistrationViewControls::m_SwitchImages, Ui_QmitkRigidRegistrationViewControls::m_UndoTransformation, Ui_QmitkRigidRegistrationViewControls::m_UseFixedImageMask, Ui_QmitkRigidRegistrationViewControls::m_UseMovingImageMask, Ui_QmitkRigidRegistrationViewControls::m_XRotSlider, Ui_QmitkRigidRegistrationViewControls::m_XScaleSlider, Ui_QmitkRigidRegistrationViewControls::m_XTransSlider, Ui_QmitkRigidRegistrationViewControls::m_YRotSlider, Ui_QmitkRigidRegistrationViewControls::m_YScaleSlider, Ui_QmitkRigidRegistrationViewControls::m_YTransSlider, Ui_QmitkRigidRegistrationViewControls::m_ZRotSlider, Ui_QmitkRigidRegistrationViewControls::m_ZScaleSlider, Ui_QmitkRigidRegistrationViewControls::m_ZTransSlider, OpacityUpdate(), Ui_QmitkRigidRegistrationViewControls::qmitkRigidRegistrationSelector1, RedoTransformation(), SetOptimizerValue(), ShowManualRegistrationFrame(), ShowRedGreen(), StopOptimizationClicked(), SwitchImages(), TabChanged(), UndoTransformation(), UseFixedMaskImageChecked(), UseMovingMaskImageChecked(), xRot_valueChanged(), xScale_valueChanged(), xTrans_valueChanged(), yRot_valueChanged(), yScale_valueChanged(), yTrans_valueChanged(), zRot_valueChanged(), zScale_valueChanged(), and zTrans_valueChanged().

Referenced by CreateQtPartControl().

{
  connect( m_Controls.m_ManualRegistrationCheckbox, SIGNAL(toggled(bool)), this, SLOT(ShowManualRegistrationFrame(bool)));
  connect((QObject*)(m_Controls.m_SwitchImages),SIGNAL(clicked()),this,SLOT(SwitchImages()));
  connect(m_Controls.m_ShowRedGreenValues, SIGNAL(toggled(bool)), this, SLOT(ShowRedGreen(bool)));
  connect(m_Controls.m_UseFixedImageMask, SIGNAL(toggled(bool)), this, SLOT(UseFixedMaskImageChecked(bool)));
  connect(m_Controls.m_UseMovingImageMask, SIGNAL(toggled(bool)), this, SLOT(UseMovingMaskImageChecked(bool)));
  connect(m_Controls.m_RigidTransform, SIGNAL(currentChanged(int)), this, SLOT(TabChanged(int)));
  connect(m_Controls.m_OpacitySlider, SIGNAL(valueChanged(int)), this, SLOT(OpacityUpdate(int)));
  connect(m_Controls.m_CalculateTransformation, SIGNAL(clicked()), this, SLOT(Calculate()));
  connect(m_Controls.m_UndoTransformation,SIGNAL(clicked()),this,SLOT(UndoTransformation()));
  connect(m_Controls.m_RedoTransformation,SIGNAL(clicked()),this,SLOT(RedoTransformation()));
  connect(m_Controls.m_AutomaticTranslation,SIGNAL(clicked()),this,SLOT(AlignCenters()));
  connect(m_Controls.m_StopOptimization,SIGNAL(clicked()), this , SLOT(StopOptimizationClicked()));
  connect(m_Controls.m_XTransSlider, SIGNAL(valueChanged(int)), this, SLOT(xTrans_valueChanged(int)));
  connect(m_Controls.m_YTransSlider, SIGNAL(valueChanged(int)), this, SLOT(yTrans_valueChanged(int)));
  connect(m_Controls.m_ZTransSlider, SIGNAL(valueChanged(int)), this, SLOT(zTrans_valueChanged(int)));
  connect(m_Controls.m_XRotSlider, SIGNAL(valueChanged(int)), this, SLOT(xRot_valueChanged(int)));
  connect(m_Controls.m_YRotSlider, SIGNAL(valueChanged(int)), this, SLOT(yRot_valueChanged(int)));
  connect(m_Controls.m_ZRotSlider, SIGNAL(valueChanged(int)), this, SLOT(zRot_valueChanged(int)));
  connect(m_Controls.m_XScaleSlider, SIGNAL(valueChanged(int)), this, SLOT(xScale_valueChanged(int)));
  connect(m_Controls.m_YScaleSlider, SIGNAL(valueChanged(int)), this, SLOT(yScale_valueChanged(int)));
  connect(m_Controls.m_ZScaleSlider, SIGNAL(valueChanged(int)), this, SLOT(zScale_valueChanged(int)));
  connect(m_Controls.m_LoadRigidRegistrationParameter, SIGNAL(clicked()), m_Controls.qmitkRigidRegistrationSelector1, SLOT(LoadRigidRegistrationParameter()));
  connect(m_Controls.m_SaveRigidRegistrationParameter, SIGNAL(clicked()), m_Controls.qmitkRigidRegistrationSelector1, SLOT(SaveRigidRegistrationParameter()));
  connect(m_Controls.m_LoadRigidRegistrationTestParameter, SIGNAL(clicked()), m_Controls.qmitkRigidRegistrationSelector1, SLOT(LoadRigidRegistrationTestParameter()));
  connect(m_Controls.m_SaveRigidRegistrationTestParameter, SIGNAL(clicked()), m_Controls.qmitkRigidRegistrationSelector1, SLOT(SaveRigidRegistrationTestParameter()));
  connect(m_Controls.qmitkRigidRegistrationSelector1,SIGNAL(OptimizerChanged(double)),this,SLOT(SetOptimizerValue( double )));
  connect(m_Controls.qmitkRigidRegistrationSelector1,SIGNAL(TransformChanged()),this,SLOT(CheckCalculateEnabled()));
  connect(m_Controls.qmitkRigidRegistrationSelector1,SIGNAL(AddNewTransformationToUndoList()),this,SLOT(AddNewTransformationToUndoList()));
}
void QmitkRigidRegistrationView::CreateQtPartControl ( QWidget *  parent ) [virtual]

method for creating the applications main widget

Implements berry::QtViewPart.

Definition at line 191 of file QmitkRigidRegistrationView.cpp.

References CheckCalculateEnabled(), CreateConnections(), Ui_QmitkRigidRegistrationViewControls::frame, Ui_QmitkRigidRegistrationViewControls::label, Ui_QmitkRigidRegistrationViewControls::label_2, m_Controls, Ui_QmitkRigidRegistrationViewControls::m_FixedLabel, Ui_QmitkRigidRegistrationViewControls::m_ManualFrame, Ui_QmitkRigidRegistrationViewControls::m_MovingLabel, Ui_QmitkRigidRegistrationViewControls::m_OpacityLabel, Ui_QmitkRigidRegistrationViewControls::m_OpacitySlider, QmitkFunctionality::m_Parent, Ui_QmitkRigidRegistrationViewControls::m_RigidTransform, Ui_QmitkRigidRegistrationViewControls::m_ShowRedGreenValues, Ui_QmitkRigidRegistrationViewControls::m_SwitchImages, Ui_QmitkRigidRegistrationViewControls::m_UseFixedImageMask, Ui_QmitkRigidRegistrationViewControls::m_UseMovingImageMask, Ui_QmitkRigidRegistrationViewControls::setupUi(), Ui_QmitkRigidRegistrationViewControls::TextLabelFixed, Ui_QmitkRigidRegistrationViewControls::TextLabelMoving, and Ui_QmitkRigidRegistrationViewControls::timeSlider.

{
  m_Controls.setupUi(parent);
  m_Controls.m_ManualFrame->hide();
  m_Controls.timeSlider->hide();
  m_Controls.TextLabelFixed->hide();
  m_Controls.m_FixedLabel->hide();
  m_Controls.TextLabelMoving->hide();
  m_Controls.m_MovingLabel->hide();
  m_Controls.m_UseFixedImageMask->hide();
  m_Controls.m_UseMovingImageMask->hide();
  m_Controls.m_OpacityLabel->setEnabled(false);
  m_Controls.m_OpacitySlider->setEnabled(false);
  m_Controls.label->setEnabled(false);
  m_Controls.label_2->setEnabled(false);
  m_Controls.m_ShowRedGreenValues->setEnabled(false);
  m_Controls.m_SwitchImages->hide();
  if (m_Controls.m_RigidTransform->currentIndex() == 1)
  {
    m_Controls.frame->show();
  }
  else
  {
    m_Controls.frame->hide();
  }
  m_Controls.m_ManualFrame->setEnabled(false);
  m_Parent->setEnabled(false);

  this->CreateConnections();
  this->CheckCalculateEnabled();
}
void QmitkRigidRegistrationView::DataNodeHasBeenRemoved ( const mitk::DataNode node )
void QmitkRigidRegistrationView::Deactivated (  ) [virtual]

Method which is called whenever the functionality is deselected in MITK.

Reimplemented from QmitkFunctionality.

Definition at line 327 of file QmitkRigidRegistrationView.cpp.

References ClearTransformationLists(), berry::WorkbenchPart::GetSite(), m_Deactivated, m_FixedNode, m_MovingNode, m_SelListener, berry::ISelectionService::RemovePostSelectionListener(), and SetImageColor().

{
  m_Deactivated = true;
  this->SetImageColor(false);
  if (m_FixedNode.IsNotNull())
    m_FixedNode->SetOpacity(1.0);
  m_FixedNode = NULL;
  m_MovingNode = NULL;
  this->ClearTransformationLists();
  berry::ISelectionService* s = GetSite()->GetWorkbenchWindow()->GetSelectionService();
  if(s)
    s->RemovePostSelectionListener(m_SelListener);
  m_SelListener = NULL;
  /*
  m_Deactivated = true;
    this->SetImageColor(false);
    m_FixedNode = NULL;
    m_MovingNode = NULL;
    this->ClearTransformationLists();
    berry::ISelectionService* s = GetSite()->GetWorkbenchWindow()->GetSelectionService();
    if(s)
      s->RemovePostSelectionListener(m_SelListener);
    m_SelListener = NULL;
    mitk::RenderingManager::GetInstance()->RequestUpdateAll();
    QmitkFunctionality::Deactivated();*/

}
void QmitkRigidRegistrationView::FixedSelected ( mitk::DataNode::Pointer  fixedImage ) [protected, slot]

sets the fixed Image according to TreeNodeSelector widget

Definition at line 388 of file QmitkRigidRegistrationView.cpp.

References CheckCalculateEnabled(), CheckForMaskImages(), QmitkFunctionality::GetActiveStdMultiWidget(), QmitkFunctionality::GetDataStorage(), mitk::RenderingManager::GetInstance(), mitk::BaseController::GetTime(), QmitkStdMultiWidget::GetTimeNavigationController(), m_Controls, m_FixedColor, m_FixedDimension, Ui_QmitkRigidRegistrationViewControls::m_FixedLabel, m_FixedMaskNode, m_FixedNode, m_MultiWidget, m_ShowRedGreen, Ui_QmitkRigidRegistrationViewControls::m_SwitchImages, m_TimeStepperAdapter, Ui_QmitkRigidRegistrationViewControls::qmitkRigidRegistrationSelector1, QmitkRigidRegistrationSelectorView::SetFixedDimension(), QmitkRigidRegistrationSelectorView::SetFixedNode(), SetImageColor(), Ui_QmitkRigidRegistrationViewControls::TextLabelFixed, Ui_QmitkRigidRegistrationViewControls::timeSlider, and UpdateTimestep().

Referenced by SwitchImages().

{
  if (m_FixedNode.IsNotNull())
  {
    this->SetImageColor(false);
    m_FixedNode->SetOpacity(1.0);
  }
  m_FixedNode = fixedImage;
  if (m_FixedNode.IsNotNull())
  {
    m_FixedNode->SetOpacity(0.5);
    m_FixedNode->SetVisibility(true);
    m_Controls.TextLabelFixed->setText(QString::fromStdString(m_FixedNode->GetName()));
    m_Controls.m_FixedLabel->show();
    m_Controls.TextLabelFixed->show();
    m_Controls.m_SwitchImages->show();
    mitk::ColorProperty::Pointer colorProperty;
    colorProperty = dynamic_cast<mitk::ColorProperty*>(m_FixedNode->GetProperty("color"));
    if ( colorProperty.IsNotNull() )
    {
      m_FixedColor = colorProperty->GetColor();
    }
    this->SetImageColor(m_ShowRedGreen);
    mitk::RenderingManager::GetInstance()->RequestUpdateAll();
    if (dynamic_cast<mitk::Image*>(m_FixedNode->GetData()))
    {
      m_FixedDimension = dynamic_cast<mitk::Image*>(m_FixedNode->GetData())->GetDimension();
      m_Controls.qmitkRigidRegistrationSelector1->SetFixedDimension(m_FixedDimension);
      m_Controls.qmitkRigidRegistrationSelector1->SetFixedNode(m_FixedNode);
    }

    bool hasMask = false;
    mitk::DataStorage::SetOfObjects::ConstPointer children = this->GetDataStorage()->GetDerivations(m_FixedNode);
    unsigned long size;
    size = children->Size();
    for (unsigned long i = 0; i < size; ++i)
    {
      mitk::BoolProperty::Pointer isMaskProp = dynamic_cast<mitk::BoolProperty*>(children->GetElement(i)->GetProperty("binary"));
      if(isMaskProp.IsNotNull() && isMaskProp->GetValue() == true)
      {
        m_FixedMaskNode = children->GetElement(i);
        hasMask = true;
        this->CheckForMaskImages();
        break;
      }
    }
    if (!hasMask)
    {
      this->CheckForMaskImages();
      m_FixedMaskNode = NULL;
    }
  }
  else
  {
    m_Controls.m_FixedLabel->hide();
    m_Controls.TextLabelFixed->hide();
    m_Controls.m_SwitchImages->hide();
  }
  this->CheckCalculateEnabled();
  if(this->GetActiveStdMultiWidget())
  {
    m_TimeStepperAdapter = new QmitkStepperAdapter((QObject*) m_Controls.timeSlider, m_MultiWidget->GetTimeNavigationController()->GetTime(), "sliceNavigatorTimeFromRigidRegistration");
    connect( m_TimeStepperAdapter, SIGNAL( Refetch() ), this, SLOT( UpdateTimestep() ) );
  }
}
void QmitkRigidRegistrationView::Hidden (  ) [virtual]

Called when this functionality is hidden ( no matter what IsExclusiveFunctionality() returns )

Reimplemented from QmitkFunctionality.

Definition at line 355 of file QmitkRigidRegistrationView.cpp.

{
  /*m_Deactivated = true;
  this->SetImageColor(false);
  m_FixedNode = NULL;
  m_MovingNode = NULL;
  this->ClearTransformationLists();
  berry::ISelectionService* s = GetSite()->GetWorkbenchWindow()->GetSelectionService();
  if(s)
    s->RemovePostSelectionListener(m_SelListener);
  m_SelListener = NULL;
  //mitk::RenderingManager::GetInstance()->RequestUpdateAll();
  //QmitkFunctionality::Deactivated();*/
}
void QmitkRigidRegistrationView::MovingImageChanged (  ) [protected, slot]

Definition at line 1096 of file QmitkRigidRegistrationView.cpp.

References CheckCalculateEnabled(), m_Controls, m_MovingDimension, m_MovingNode, Ui_QmitkRigidRegistrationViewControls::m_XRotSlider, Ui_QmitkRigidRegistrationViewControls::m_XScaleSlider, Ui_QmitkRigidRegistrationViewControls::m_XTransSlider, Ui_QmitkRigidRegistrationViewControls::m_YRotSlider, Ui_QmitkRigidRegistrationViewControls::m_YScaleSlider, Ui_QmitkRigidRegistrationViewControls::m_YTransSlider, Ui_QmitkRigidRegistrationViewControls::m_ZRotSlider, Ui_QmitkRigidRegistrationViewControls::m_ZScaleSlider, Ui_QmitkRigidRegistrationViewControls::m_ZTransSlider, Ui_QmitkRigidRegistrationViewControls::qmitkRigidRegistrationSelector1, rotationParams, scalingParams, QmitkRigidRegistrationSelectorView::SetMovingDimension(), QmitkRigidRegistrationSelectorView::SetMovingNode(), and translationParams.

Referenced by MovingSelected(), xRot_valueChanged(), xScale_valueChanged(), xTrans_valueChanged(), yRot_valueChanged(), yScale_valueChanged(), yTrans_valueChanged(), zRot_valueChanged(), zScale_valueChanged(), and zTrans_valueChanged().

void QmitkRigidRegistrationView::MovingSelected ( mitk::DataNode::Pointer  movingImage ) [protected, slot]

sets the moving Image according to TreeNodeSelector widget

Definition at line 454 of file QmitkRigidRegistrationView.cpp.

References CheckCalculateEnabled(), CheckForMaskImages(), QmitkFunctionality::GetDataStorage(), mitk::RenderingManager::GetInstance(), m_Controls, m_FixedNode, m_MovingColor, Ui_QmitkRigidRegistrationViewControls::m_MovingLabel, m_MovingMaskNode, m_MovingNode, m_Opacity, m_OriginalOpacity, m_ShowRedGreen, MovingImageChanged(), OpacityUpdate(), Ui_QmitkRigidRegistrationViewControls::qmitkRigidRegistrationSelector1, SetImageColor(), QmitkRigidRegistrationSelectorView::SetMovingNodeChildren(), and Ui_QmitkRigidRegistrationViewControls::TextLabelMoving.

Referenced by SwitchImages().

{
  if (m_MovingNode.IsNotNull())
  {
    m_MovingNode->SetOpacity(m_OriginalOpacity);
    if (m_FixedNode == m_MovingNode)
      m_FixedNode->SetOpacity(0.5);
    this->SetImageColor(false);
  }
  m_MovingNode = movingImage;
  if (m_MovingNode.IsNotNull())
  {
    m_MovingNode->SetVisibility(true);
    m_Controls.TextLabelMoving->setText(QString::fromStdString(m_MovingNode->GetName()));
    m_Controls.m_MovingLabel->show();
    m_Controls.TextLabelMoving->show();
    mitk::ColorProperty::Pointer colorProperty;
    colorProperty = dynamic_cast<mitk::ColorProperty*>(m_MovingNode->GetProperty("color"));
    if ( colorProperty.IsNotNull() )
    {
      m_MovingColor = colorProperty->GetColor();
    }
    this->SetImageColor(m_ShowRedGreen);
    m_MovingNode->GetFloatProperty("opacity", m_OriginalOpacity);
    this->OpacityUpdate(m_Opacity);

    bool hasMask = false;
    mitk::DataStorage::SetOfObjects::ConstPointer children = this->GetDataStorage()->GetDerivations(m_MovingNode);
    m_Controls.qmitkRigidRegistrationSelector1->SetMovingNodeChildren(children);
    unsigned long size;
    size = children->Size();
    for (unsigned long i = 0; i < size; ++i)
    {
      mitk::BoolProperty::Pointer isMaskProp = dynamic_cast<mitk::BoolProperty*>(children->GetElement(i)->GetProperty("binary"));
      if(isMaskProp.IsNotNull() && isMaskProp->GetValue() == true)
      {
        m_MovingMaskNode = children->GetElement(i);
        hasMask = true;
        this->CheckForMaskImages();
        break;
      }
    }
    if (!hasMask)
    {
      m_MovingMaskNode = NULL;
      this->CheckForMaskImages();
    }
  }
  else
  {
    m_Controls.m_MovingLabel->hide();
    m_Controls.TextLabelMoving->hide();
  }
  mitk::RenderingManager::GetInstance()->RequestUpdateAll();
  this->MovingImageChanged();
  this->CheckCalculateEnabled();
}
void QmitkRigidRegistrationView::OpacityUpdate ( float  opacity ) [protected, slot]

Sets the selected opacity for moving image.

Parameters:
opacitythe selected opacity

Definition at line 661 of file QmitkRigidRegistrationView.cpp.

References mitk::RenderingManager::GetInstance(), m_MovingNode, and m_Opacity.

Referenced by Activated(), CreateConnections(), MovingSelected(), and OpacityUpdate().

{
  m_Opacity = opacity;
  if (m_MovingNode.IsNotNull())
  {
    m_MovingNode->SetOpacity(m_Opacity);
  }
  mitk::RenderingManager::GetInstance()->RequestUpdateAll();
}
void QmitkRigidRegistrationView::OpacityUpdate ( int  opacity ) [protected, slot]

Sets the selected opacity for moving image.

Parameters:
opacitythe selected opacity

Definition at line 671 of file QmitkRigidRegistrationView.cpp.

References OpacityUpdate().

{
  float fValue = ((float)opacity)/100.0f;
  this->OpacityUpdate(fValue);
}
void QmitkRigidRegistrationView::RedoTransformation (  ) [protected, slot]

Redo the last registration.

Definition at line 586 of file QmitkRigidRegistrationView.cpp.

References QmitkFunctionality::GetDataStorage(), mitk::RenderingManager::GetInstance(), m_MovingNode, m_MultiWidget, m_RedoChildGeometryList, m_RedoGeometryList, m_UndoChildGeometryList, m_UndoGeometryList, QmitkStdMultiWidget::mitkWidget4, SetRedoEnabled(), and SetUndoEnabled().

Referenced by CreateConnections().

{
  if(!m_RedoGeometryList.empty())
  {
    mitk::BaseData::Pointer movingData = m_MovingNode->GetData();
    m_UndoGeometryList.push_back(static_cast<mitk::Geometry3D *>(movingData->GetGeometry(0)->Clone().GetPointer()));
    unsigned long size;
    mitk::DataStorage::SetOfObjects::ConstPointer children = this->GetDataStorage()->GetDerivations(m_MovingNode);
    size = children->Size();
    std::map<mitk::DataNode::Pointer, mitk::Geometry3D*> childGeometries;
    for (unsigned long i = 0; i < size; ++i)
    {
      childGeometries.insert(std::pair<mitk::DataNode::Pointer, mitk::Geometry3D*>(children->GetElement(i), children->GetElement(i)->GetData()->GetGeometry()));
    }
    m_UndoChildGeometryList.push_back(childGeometries);

    movingData->SetGeometry(m_RedoGeometryList.back());
    m_RedoGeometryList.pop_back();

    std::map<mitk::DataNode::Pointer, mitk::Geometry3D*> oldChildGeometries;
    oldChildGeometries = m_RedoChildGeometryList.back();
    m_RedoChildGeometryList.pop_back();
    std::map<mitk::DataNode::Pointer, mitk::Geometry3D*>::iterator iter;
    for (unsigned long j = 0; j < size; ++j)
    {
      iter = oldChildGeometries.find(children->GetElement(j));
      children->GetElement(j)->GetData()->SetGeometry((*iter).second);
    }

    //\FIXME when geometry is substituted the matrix referenced by the actor created by the mapper
    //is still pointing to the old one. Workaround: delete mapper
    m_MovingNode->SetMapper(1, NULL);
    mitk::RenderingManager::GetInstance()->RequestUpdate(m_MultiWidget->mitkWidget4->GetRenderWindow());

    movingData->GetTimeSlicedGeometry()->UpdateInformation();
    this->SetUndoEnabled(true);
    mitk::RenderingManager::GetInstance()->RequestUpdateAll();
  }
  if(!m_RedoGeometryList.empty())
  {
    this->SetRedoEnabled(true);
  }
  else
  {
    this->SetRedoEnabled(false);
  }
}
void QmitkRigidRegistrationView::Rotate ( int *  rotateVector ) [protected, slot]

Rotates the moving image in x, y and z direction given by rotateVector.

Parameters:
rotateVectorContains the rotation around x, y and z axis.

Definition at line 731 of file QmitkRigidRegistrationView.cpp.

References QmitkFunctionality::GetDataStorage(), mitk::RenderingManager::GetInstance(), m_MovingNode, m_RedoGeometryList, and m_RotateSliderPos.

Referenced by xRot_valueChanged(), yRot_valueChanged(), and zRot_valueChanged().

{
  if (m_MovingNode.IsNotNull())
  {
    mitk::Vector3D rotateVec;

    rotateVec[0] = rotateVector[0] - m_RotateSliderPos[0];
    rotateVec[1] = rotateVector[1] - m_RotateSliderPos[1];
    rotateVec[2] = rotateVector[2] - m_RotateSliderPos[2];

    m_RotateSliderPos[0] = rotateVector[0];
    m_RotateSliderPos[1] = rotateVector[1];
    m_RotateSliderPos[2] = rotateVector[2];

    vtkMatrix4x4* rotationMatrix = vtkMatrix4x4::New();
    vtkMatrix4x4* translationMatrix = vtkMatrix4x4::New();
    rotationMatrix->Identity();
    translationMatrix->Identity();

    double (*rotMatrix)[4] = rotationMatrix->Element;
    double (*transMatrix)[4] = translationMatrix->Element;

    mitk::Point3D centerBB = m_MovingNode->GetData()->GetGeometry()->GetCenter();

    transMatrix[0][3] = centerBB[0];
    transMatrix[1][3] = centerBB[1];
    transMatrix[2][3] = centerBB[2];

    translationMatrix->Invert();

    m_MovingNode->GetData()->GetGeometry()->Compose( translationMatrix );
    mitk::DataStorage::SetOfObjects::ConstPointer children = this->GetDataStorage()->GetDerivations(m_MovingNode);
    unsigned long size;
    size = children->Size();
    mitk::DataNode::Pointer childNode;
    for (unsigned long i = 0; i < size; ++i)
    {
      childNode = children->GetElement(i);
      childNode->GetData()->GetGeometry()->Compose( translationMatrix );
      childNode->GetData()->Modified();
    }

    double radianX = rotateVec[0] * vnl_math::pi / 180;
    double radianY = rotateVec[1] * vnl_math::pi / 180;
    double radianZ = rotateVec[2] * vnl_math::pi / 180;

    if ( rotateVec[0] != 0 )
    {
      rotMatrix[1][1] = cos( radianX );
      rotMatrix[1][2] = -sin( radianX );
      rotMatrix[2][1] = sin( radianX );
      rotMatrix[2][2] = cos( radianX );
    }
    else if ( rotateVec[1] != 0 )
    {
      rotMatrix[0][0] = cos( radianY );
      rotMatrix[0][2] = sin( radianY );
      rotMatrix[2][0] = -sin( radianY );
      rotMatrix[2][2] = cos( radianY );
    }
    else if ( rotateVec[2] != 0 )
    {
      rotMatrix[0][0] = cos( radianZ );
      rotMatrix[0][1] = -sin( radianZ );
      rotMatrix[1][0] = sin( radianZ );
      rotMatrix[1][1] = cos( radianZ );
    }

    m_MovingNode->GetData()->GetGeometry()->Compose( rotationMatrix );
    for (unsigned long i = 0; i < size; ++i)
    {
      childNode = children->GetElement(i);
      childNode->GetData()->GetGeometry()->Compose( rotationMatrix );
      childNode->GetData()->Modified();
    }

    translationMatrix->Invert();

    m_MovingNode->GetData()->GetGeometry()->Compose( translationMatrix );
    for (unsigned long i = 0; i < size; ++i)
    {
      childNode = children->GetElement(i);
      childNode->GetData()->GetGeometry()->Compose( rotationMatrix );
      childNode->GetData()->Modified();
    }
    m_MovingNode->GetData()->Modified();
    m_RedoGeometryList.clear();
    mitk::RenderingManager::GetInstance()->RequestUpdateAll();
  }
}
void QmitkRigidRegistrationView::Scale ( int *  scaleVector ) [protected, slot]

Scales the moving image in x, y and z direction given by scaleVector.

Parameters:
scaleVectorContains the scaling around x, y and z axis.

Definition at line 822 of file QmitkRigidRegistrationView.cpp.

References QmitkFunctionality::GetDataStorage(), mitk::RenderingManager::GetInstance(), m_MovingNode, m_RedoGeometryList, and m_ScaleSliderPos.

Referenced by xScale_valueChanged(), yScale_valueChanged(), and zScale_valueChanged().

{
  if (m_MovingNode.IsNotNull())
  {

    mitk::Vector3D scaleVec;

    scaleVec[0] = scaleVector[0] - m_ScaleSliderPos[0];
    scaleVec[1] = scaleVector[1] - m_ScaleSliderPos[1];
    scaleVec[2] = scaleVector[2] - m_ScaleSliderPos[2];

    m_ScaleSliderPos[0] = scaleVector[0];
    m_ScaleSliderPos[1] = scaleVector[1];
    m_ScaleSliderPos[2] = scaleVector[2];

    vtkMatrix4x4* scalingMatrix = vtkMatrix4x4::New();
    scalingMatrix->Identity();

    double (*scaleMatrix)[4] = scalingMatrix->Element;

    if (scaleVec[0] >= 0)
    {
      for(int i = 0; i<scaleVec[0]; i++)
      {
        scaleMatrix[0][0] *= 0.95;
      }
    }
    else
    {
      for(int i = 0; i<-scaleVec[0]; i++)
      {
        scaleMatrix[0][0] *= 1/0.95;
      }
    }

    if (scaleVec[1] >= 0)
    {
      for(int i = 0; i<scaleVec[1]; i++)
      {
        scaleMatrix[1][1] *= 0.95;
      }
    }
    else
    {
      for(int i = 0; i<-scaleVec[1]; i++)
      {
        scaleMatrix[1][1] *= 1/0.95;
      }
    }

    if (scaleVec[2] >= 0)
    {
      for(int i = 0; i<scaleVec[2]; i++)
      {
        scaleMatrix[2][2] *= 0.95;
      }
    }
    else
    {
      for(int i = 0; i<-scaleVec[2]; i++)
      {
        scaleMatrix[2][2] *= 1/0.95;
      }
    }

    scalingMatrix->Invert();

    m_MovingNode->GetData()->GetGeometry()->Compose( scalingMatrix );
    m_MovingNode->GetData()->Modified();
    mitk::DataStorage::SetOfObjects::ConstPointer children = this->GetDataStorage()->GetDerivations(m_MovingNode);
    unsigned long size;
    size = children->Size();
    mitk::DataNode::Pointer childNode;
    for (unsigned long i = 0; i < size; ++i)
    {
      childNode = children->GetElement(i);
      childNode->GetData()->GetGeometry()->Compose( scalingMatrix );
      childNode->GetData()->Modified();
    }
    m_RedoGeometryList.clear();

    mitk::RenderingManager::GetInstance()->RequestUpdateAll();
  }
}
void QmitkRigidRegistrationView::SetImageColor ( bool  redGreen ) [protected, slot]

Sets the images to grayvalues or fixed image to red and moving image to green.

Parameters:
redGreenif true, then images will be shown in red and green

Definition at line 640 of file QmitkRigidRegistrationView.cpp.

References mitk::RenderingManager::GetInstance(), m_FixedColor, m_FixedNode, m_MovingColor, and m_MovingNode.

Referenced by Deactivated(), FixedSelected(), MovingSelected(), and ShowRedGreen().

{
  if (!redGreen && m_FixedNode.IsNotNull())
  {
    m_FixedNode->SetColor(m_FixedColor);
  }
  if (!redGreen && m_MovingNode.IsNotNull())
  {
    m_MovingNode->SetColor(m_MovingColor);
  }
  if (redGreen && m_FixedNode.IsNotNull())
  {
    m_FixedNode->SetColor(1.0f, 0.0f, 0.0f);
  }
  if (redGreen && m_MovingNode.IsNotNull())
  {
    m_MovingNode->SetColor(0.0f, 1.0f, 0.0f);
  }
  mitk::RenderingManager::GetInstance()->RequestUpdateAll();
}
void QmitkRigidRegistrationView::SetImagesVisible ( berry::ISelection::ConstPointer   ) [protected, slot]

Definition at line 1184 of file QmitkRigidRegistrationView.cpp.

References QmitkFunctionality::GetDataStorage(), and m_CurrentSelection.

{
  if (this->m_CurrentSelection->Size() == 0)
  {
    // show all images
    mitk::DataStorage::SetOfObjects::ConstPointer setOfObjects = this->GetDataStorage()->GetAll();
    for (mitk::DataStorage::SetOfObjects::ConstIterator nodeIt = setOfObjects->Begin()
      ; nodeIt != setOfObjects->End(); ++nodeIt)  // for each node
    {
      if ( (nodeIt->Value().IsNotNull()) && (nodeIt->Value()->GetProperty("visible")) && dynamic_cast<mitk::Geometry2DData*>(nodeIt->Value()->GetData())==NULL)
      {
        nodeIt->Value()->SetVisibility(true);
      }
    }
  }
  else
  {
    // hide all images
    mitk::DataStorage::SetOfObjects::ConstPointer setOfObjects = this->GetDataStorage()->GetAll();
    for (mitk::DataStorage::SetOfObjects::ConstIterator nodeIt = setOfObjects->Begin()
      ; nodeIt != setOfObjects->End(); ++nodeIt)  // for each node
    {
      if ( (nodeIt->Value().IsNotNull()) && (nodeIt->Value()->GetProperty("visible")) && dynamic_cast<mitk::Geometry2DData*>(nodeIt->Value()->GetData())==NULL)
      {
        nodeIt->Value()->SetVisibility(false);
      }
    }
  }
}
void QmitkRigidRegistrationView::SetOptimizerValue ( double  value ) [protected, slot]
void QmitkRigidRegistrationView::SetRedoEnabled ( bool  enable ) [protected, slot]
void QmitkRigidRegistrationView::SetUndoEnabled ( bool  enable ) [protected, slot]
void QmitkRigidRegistrationView::ShowManualRegistrationFrame ( bool  show ) [protected, slot]

Changes the visibility of the manual registration methods accordingly to the checkbox "Manual Registration" in GUI.

Parameters:
showif true, then manual registration methods will be shown

Definition at line 1172 of file QmitkRigidRegistrationView.cpp.

References m_Controls, and Ui_QmitkRigidRegistrationViewControls::m_ManualFrame.

Referenced by CreateConnections().

{
  if (show)
  {
    m_Controls.m_ManualFrame->show();
  }
  else
  {
    m_Controls.m_ManualFrame->hide();
  }
}
void QmitkRigidRegistrationView::ShowRedGreen ( bool  show ) [protected, slot]

Stores whether the image will be shown in gray values or in red for fixed image and green for moving image.

Parameters:
showif true, then images will be shown in red and green

Definition at line 634 of file QmitkRigidRegistrationView.cpp.

References m_ShowRedGreen, and SetImageColor().

Referenced by Activated(), and CreateConnections().

void QmitkRigidRegistrationView::StdMultiWidgetAvailable ( QmitkStdMultiWidget stdMultiWidget ) [virtual]

Sets the StdMultiWidget and connects it to the functionality.

Reimplemented from QmitkFunctionality.

Definition at line 223 of file QmitkRigidRegistrationView.cpp.

References m_MultiWidget, QmitkFunctionality::m_Parent, and QmitkStdMultiWidget::SetWidgetPlanesVisibility().

{
  m_Parent->setEnabled(true);
  m_MultiWidget = &stdMultiWidget;
  m_MultiWidget->SetWidgetPlanesVisibility(true);
}
void QmitkRigidRegistrationView::StdMultiWidgetNotAvailable (  ) [virtual]

Removes the StdMultiWidget and disconnects it from the functionality.

Reimplemented from QmitkFunctionality.

Definition at line 230 of file QmitkRigidRegistrationView.cpp.

References m_MultiWidget, and QmitkFunctionality::m_Parent.

{
  m_Parent->setEnabled(false);
  m_MultiWidget = NULL;
}
void QmitkRigidRegistrationView::StopOptimizationClicked (  ) [protected, slot]
void QmitkRigidRegistrationView::SwitchImages (  ) [protected, slot]

Definition at line 1270 of file QmitkRigidRegistrationView.cpp.

References FixedSelected(), m_FixedNode, m_MovingNode, and MovingSelected().

Referenced by CreateConnections().

{
  mitk::DataNode::Pointer newMoving = m_FixedNode;
  mitk::DataNode::Pointer newFixed = m_MovingNode;
  this->FixedSelected(newFixed);
  this->MovingSelected(newMoving);
}
void QmitkRigidRegistrationView::TabChanged ( int  index ) [protected, slot]

Definition at line 1258 of file QmitkRigidRegistrationView.cpp.

References Ui_QmitkRigidRegistrationViewControls::frame, and m_Controls.

Referenced by CreateConnections().

{
  if (index == 0)
  {
    m_Controls.frame->hide();
  }
  else
  {
    m_Controls.frame->show();
  }
}
void QmitkRigidRegistrationView::Translate ( int *  translateVector ) [protected, slot]

Translates the moving image in x, y and z direction given by translateVector.

Parameters:
translateVectorContains the translation in x, y and z direction.

Definition at line 687 of file QmitkRigidRegistrationView.cpp.

References QmitkFunctionality::GetDataStorage(), mitk::RenderingManager::GetInstance(), m_MovingNode, m_RedoGeometryList, and m_TranslateSliderPos.

Referenced by xTrans_valueChanged(), yTrans_valueChanged(), and zTrans_valueChanged().

{
  if (m_MovingNode.IsNotNull())
  {

    mitk::Vector3D translateVec;

    translateVec[0] = translateVector[0] - m_TranslateSliderPos[0];
    translateVec[1] = translateVector[1] - m_TranslateSliderPos[1];
    translateVec[2] = translateVector[2] - m_TranslateSliderPos[2];

    m_TranslateSliderPos[0] = translateVector[0];
    m_TranslateSliderPos[1] = translateVector[1];
    m_TranslateSliderPos[2] = translateVector[2];

    vtkMatrix4x4* translationMatrix = vtkMatrix4x4::New();
    translationMatrix->Identity();

    double (*transMatrix)[4] = translationMatrix->Element;

    transMatrix[0][3] = -translateVec[0];
    transMatrix[1][3] = -translateVec[1];
    transMatrix[2][3] = -translateVec[2];

    translationMatrix->Invert();

    m_MovingNode->GetData()->GetGeometry()->Compose( translationMatrix );
    m_MovingNode->GetData()->Modified();
    mitk::DataStorage::SetOfObjects::ConstPointer children = this->GetDataStorage()->GetDerivations(m_MovingNode);
    unsigned long size;
    size = children->Size();
    mitk::DataNode::Pointer childNode;
    for (unsigned long i = 0; i < size; ++i)
    {
      childNode = children->GetElement(i);
      childNode->GetData()->GetGeometry()->Compose( translationMatrix );
      childNode->GetData()->Modified();
    }
    m_RedoGeometryList.clear();

    mitk::RenderingManager::GetInstance()->RequestUpdateAll();
  }
}
void QmitkRigidRegistrationView::UndoTransformation (  ) [protected, slot]

Undo the last registration.

Definition at line 538 of file QmitkRigidRegistrationView.cpp.

References CheckCalculateEnabled(), QmitkFunctionality::GetDataStorage(), mitk::RenderingManager::GetInstance(), m_MovingNode, m_MultiWidget, m_RedoChildGeometryList, m_RedoGeometryList, m_UndoChildGeometryList, m_UndoGeometryList, QmitkStdMultiWidget::mitkWidget4, SetRedoEnabled(), and SetUndoEnabled().

Referenced by CreateConnections().

{
  if(!m_UndoGeometryList.empty())
  {
    mitk::BaseData::Pointer movingData = m_MovingNode->GetData();
    m_RedoGeometryList.push_back(static_cast<mitk::Geometry3D *>(movingData->GetGeometry(0)->Clone().GetPointer()));
    unsigned long size;
    mitk::DataStorage::SetOfObjects::ConstPointer children = this->GetDataStorage()->GetDerivations(m_MovingNode);
    size = children->Size();
    std::map<mitk::DataNode::Pointer, mitk::Geometry3D*> childGeometries;
    for (unsigned long i = 0; i < size; ++i)
    {
      childGeometries.insert(std::pair<mitk::DataNode::Pointer, mitk::Geometry3D*>(children->GetElement(i), children->GetElement(i)->GetData()->GetGeometry()));
    }
    m_RedoChildGeometryList.push_back(childGeometries);

    movingData->SetGeometry(m_UndoGeometryList.back());
    m_UndoGeometryList.pop_back();
    std::map<mitk::DataNode::Pointer, mitk::Geometry3D*> oldChildGeometries;
    oldChildGeometries = m_UndoChildGeometryList.back();
    m_UndoChildGeometryList.pop_back();
    std::map<mitk::DataNode::Pointer, mitk::Geometry3D*>::iterator iter;
    for (unsigned long j = 0; j < size; ++j)
    {
      iter = oldChildGeometries.find(children->GetElement(j));
      children->GetElement(j)->GetData()->SetGeometry((*iter).second);
    }

    //\FIXME when geometry is substituted the matrix referenced by the actor created by the mapper
    //is still pointing to the old one. Workaround: delete mapper
    m_MovingNode->SetMapper(1, NULL);
    mitk::RenderingManager::GetInstance()->RequestUpdate(m_MultiWidget->mitkWidget4->GetRenderWindow());

    movingData->GetTimeSlicedGeometry()->UpdateInformation();
    this->SetRedoEnabled(true);
    mitk::RenderingManager::GetInstance()->RequestUpdateAll();
  }
  if(!m_UndoGeometryList.empty())
  {
    this->SetUndoEnabled(true);
  }
  else
  {
    this->SetUndoEnabled(false);
  }
  this->CheckCalculateEnabled();
}
void QmitkRigidRegistrationView::UpdateTimestep (  ) [protected, slot]

Definition at line 1167 of file QmitkRigidRegistrationView.cpp.

References mitk::RenderingManager::GetInstance().

Referenced by FixedSelected().

{
  mitk::RenderingManager::GetInstance()->RequestUpdateAll();
}
void QmitkRigidRegistrationView::UseFixedMaskImageChecked ( bool  checked ) [protected, slot]

Definition at line 1234 of file QmitkRigidRegistrationView.cpp.

References m_FixedMaskNode.

Referenced by CreateConnections().

{
  if (checked)
  {
    m_FixedMaskNode->SetVisibility(true);
  }
  else
  {
    m_FixedMaskNode->SetVisibility(false);
  }
}
void QmitkRigidRegistrationView::UseMovingMaskImageChecked ( bool  checked ) [protected, slot]

Definition at line 1246 of file QmitkRigidRegistrationView.cpp.

References m_MovingMaskNode.

Referenced by CreateConnections().

{
  if (checked)
  {
    m_MovingMaskNode->SetVisibility(true);
  }
  else
  {
    m_MovingMaskNode->SetVisibility(false);
  }
}
void QmitkRigidRegistrationView::Visible (  ) [virtual]

Called when this functionality becomes visible ( no matter what IsExclusiveFunctionality() returns )

Reimplemented from QmitkFunctionality.

Definition at line 306 of file QmitkRigidRegistrationView.cpp.

{
  /*
  m_Deactivated = false;
  mitk::RenderingManager::GetInstance()->RequestUpdateAll();
  QmitkFunctionality::Activated();
  if (m_SelListener.IsNull())
  {
    m_SelListener = berry::ISelectionListener::Pointer(new SelListenerRigidRegistration(this));
    this->GetSite()->GetWorkbenchWindow()->GetSelectionService()->AddPostSelectionListener("org.mitk.views.datamanager", m_SelListener);
    berry::ISelection::ConstPointer sel(
      this->GetSite()->GetWorkbenchWindow()->GetSelectionService()->GetSelection("org.mitk.views.datamanager"));
    m_CurrentSelection = sel.Cast<const IStructuredSelection>();
    m_SelListener.Cast<SelListenerRigidRegistration>()->DoSelectionChanged(sel);
  }
  this->OpacityUpdate(m_Controls.m_OpacitySlider->value());
  this->ShowRedGreen(m_Controls.m_ShowRedGreenValues->isChecked());
  this->ClearTransformationLists();
  this->CheckCalculateEnabled();*/
}
void QmitkRigidRegistrationView::xRot_valueChanged ( int  v ) [protected, slot]
void QmitkRigidRegistrationView::xScale_valueChanged ( int  v ) [protected, slot]
void QmitkRigidRegistrationView::xTrans_valueChanged ( int  v ) [protected, slot]
void QmitkRigidRegistrationView::yRot_valueChanged ( int  v ) [protected, slot]
void QmitkRigidRegistrationView::yScale_valueChanged ( int  v ) [protected, slot]
void QmitkRigidRegistrationView::yTrans_valueChanged ( int  v ) [protected, slot]
void QmitkRigidRegistrationView::zRot_valueChanged ( int  v ) [protected, slot]
void QmitkRigidRegistrationView::zScale_valueChanged ( int  v ) [protected, slot]
void QmitkRigidRegistrationView::zTrans_valueChanged ( int  v ) [protected, slot]

Friends And Related Function Documentation

friend struct SelListenerRigidRegistration [friend]

Definition at line 50 of file QmitkRigidRegistrationView.h.

Referenced by Activated().


Member Data Documentation

Definition at line 274 of file QmitkRigidRegistrationView.h.

Referenced by Activated(), and Deactivated().

Definition at line 280 of file QmitkRigidRegistrationView.h.

Referenced by FixedSelected(), and SetImageColor().

Definition at line 275 of file QmitkRigidRegistrationView.h.

Referenced by CheckCalculateEnabled(), and FixedSelected().

Definition at line 281 of file QmitkRigidRegistrationView.h.

Referenced by MovingSelected(), and SetImageColor().

Definition at line 276 of file QmitkRigidRegistrationView.h.

Referenced by CheckCalculateEnabled(), and MovingImageChanged().

default main widget containing 4 windows showing 3 orthogonal slices of the volume and a 3d render window

Definition at line 257 of file QmitkRigidRegistrationView.h.

Referenced by FixedSelected(), RedoTransformation(), StdMultiWidgetAvailable(), StdMultiWidgetNotAvailable(), and UndoTransformation().

Definition at line 272 of file QmitkRigidRegistrationView.h.

Referenced by MovingSelected(), and OpacityUpdate().

Definition at line 273 of file QmitkRigidRegistrationView.h.

Referenced by MovingSelected().

Definition at line 283 of file QmitkRigidRegistrationView.h.

Referenced by QmitkRigidRegistrationView(), and Rotate().

Definition at line 284 of file QmitkRigidRegistrationView.h.

Referenced by QmitkRigidRegistrationView(), and Scale().

Definition at line 271 of file QmitkRigidRegistrationView.h.

Referenced by FixedSelected(), MovingSelected(), and ShowRedGreen().

Definition at line 286 of file QmitkRigidRegistrationView.h.

Referenced by FixedSelected(), and QmitkRigidRegistrationView().

Definition at line 282 of file QmitkRigidRegistrationView.h.

Referenced by QmitkRigidRegistrationView(), and Translate().

const std::string QmitkRigidRegistrationView::VIEW_ID = "org.mitk.views.rigidregistration" [static]

Definition at line 56 of file QmitkRigidRegistrationView.h.


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