diff --git a/Modules/CameraCalibration/files.cmake b/Modules/CameraCalibration/files.cmake index e87d7ca979..6d304c26c1 100644 --- a/Modules/CameraCalibration/files.cmake +++ b/Modules/CameraCalibration/files.cmake @@ -1,7 +1,8 @@ SET(CPP_FILES mitkEndoDebug.cpp mitkTransform.cpp mitkCameraIntrinsics.cpp mitkXMLSerializable.cpp + mitkNavigationDataHandEyeCalibrationFilter.cpp ) diff --git a/Modules/IGT/IGTFilters/mitkNavigationDataHandEyeCalibrationFilter.cpp b/Modules/CameraCalibration/mitkNavigationDataHandEyeCalibrationFilter.cpp similarity index 87% rename from Modules/IGT/IGTFilters/mitkNavigationDataHandEyeCalibrationFilter.cpp rename to Modules/CameraCalibration/mitkNavigationDataHandEyeCalibrationFilter.cpp index cc0f37c365..41f7fbb963 100644 --- a/Modules/IGT/IGTFilters/mitkNavigationDataHandEyeCalibrationFilter.cpp +++ b/Modules/CameraCalibration/mitkNavigationDataHandEyeCalibrationFilter.cpp @@ -1,92 +1,97 @@ /*========================================================================= Program: Medical Imaging & Interaction Toolkit Language: C++ Date: $Date: $ Version: $Revision: $ Copyright (c) German Cancer Research Center, Division of Medical and Biological Informatics. All rights reserved. See MITKCopyright.txt or http://www.mitk.org/copyright.html for details. This software is distributed WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the above copyright notices for more information. =========================================================================*/ #include "mitkNavigationDataHandEyeCalibrationFilter.h" #include "mitkDataStorage.h" mitk::NavigationDataHandEyeCalibrationFilter::NavigationDataHandEyeCalibrationFilter() : NavigationDataToNavigationDataFilter(), m_ObjectsToTransform(),m_HandEyeTransformations() { } mitk::NavigationDataHandEyeCalibrationFilter::~NavigationDataHandEyeCalibrationFilter() { m_ObjectsToTransform.clear(); m_HandEyeTransformations.clear(); } void mitk::NavigationDataHandEyeCalibrationFilter::SetObjectToTransform(unsigned int index, BaseData* data) { m_ObjectsToTransform[index] = data; } -void mitk::NavigationDataHandEyeCalibrationFilter::SetHandEyeTransformation(unsigned int index, QuaternionRigidTransformType::Pointer handEyeTransformation) +void mitk::NavigationDataHandEyeCalibrationFilter::SetHandEyeTransformation(unsigned int index, mitk::Transform::Pointer handEyeTransformation) { m_HandEyeTransformations[index] = handEyeTransformation; } void mitk::NavigationDataHandEyeCalibrationFilter::GenerateData() { /*get each input, lookup the associated BaseData and transfer the data*/ unsigned int numberOfInputs = this->GetNumberOfInputs(); for (unsigned int index=0; index < numberOfInputs; index++) { //get the needed variables const mitk::NavigationData* nd = this->GetInput(index); assert(nd); mitk::NavigationData* output = this->GetOutput(index); assert(output); //check if the data is valid if (!nd->IsDataValid()) { output->SetDataValid(false); continue; } output->Graft(nd); // copy all information from input to output // get the object to transform for current input index mitk::BaseData::Pointer objectToTransform = m_ObjectsToTransform[index]; if (!objectToTransform) { continue; } // get the transformation of the hand-eye calibration for current input index - QuaternionRigidTransformType::Pointer handEyeTransform = m_HandEyeTransformations[index]; - if (!handEyeTransform) + QuaternionRigidTransformType::Pointer handEyeTransform = QuaternionRigidTransformType::New();; + if (!m_HandEyeTransformations[index]) { continue; } + else + { + handEyeTransform->SetRotation(m_HandEyeTransformations[index]->GetOrientation()); + handEyeTransform->SetOffset(m_HandEyeTransformations[index]->GetPosition().GetVectorFromOrigin()); + } // get the transformation of the current navigation data QuaternionRigidTransformType::Pointer ndTransform = QuaternionRigidTransformType::New(); ndTransform->SetRotation(nd->GetOrientation()); ndTransform->SetOffset(nd->GetPosition().GetVectorFromOrigin()); // compose hand-eye transformation and transformation of NavigationData to final transformation to be applied mitk::AffineTransform3D::Pointer transform = mitk::AffineTransform3D::New(); transform->SetIdentity(); transform->Compose(handEyeTransform); transform->Compose(ndTransform); // apply final transformation to BaseData objectToTransform->GetGeometry()->SetIndexToWorldTransform(transform); objectToTransform->Modified(); // operation was successful, therefore data of output is valid. output->SetDataValid(true); } } diff --git a/Modules/IGT/IGTFilters/mitkNavigationDataHandEyeCalibrationFilter.h b/Modules/CameraCalibration/mitkNavigationDataHandEyeCalibrationFilter.h similarity index 91% rename from Modules/IGT/IGTFilters/mitkNavigationDataHandEyeCalibrationFilter.h rename to Modules/CameraCalibration/mitkNavigationDataHandEyeCalibrationFilter.h index 4c0511ba77..80546d8fe7 100644 --- a/Modules/IGT/IGTFilters/mitkNavigationDataHandEyeCalibrationFilter.h +++ b/Modules/CameraCalibration/mitkNavigationDataHandEyeCalibrationFilter.h @@ -1,95 +1,96 @@ /*========================================================================= Program: Medical Imaging & Interaction Toolkit Language: C++ Date: $Date: $ Version: $Revision: $ Copyright (c) German Cancer Research Center, Division of Medical and Biological Informatics. All rights reserved. See MITKCopyright.txt or http://www.mitk.org/copyright.html for details. This software is distributed WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the above copyright notices for more information. =========================================================================*/ #ifndef MITKNavigationDataHandEyeCalibrationFilter_H_HEADER_INCLUDED_ #define MITKNavigationDataHandEyeCalibrationFilter_H_HEADER_INCLUDED_ #include "mitkNavigationDataToNavigationDataFilter.h" #include "mitkNavigationData.h" #include "mitkBaseData.h" +#include "mitkTransform.h" #include "itkQuaternionRigidTransform.h" namespace mitk { /** * \brief IGT filter applying a Hand-Eye transformation to a given BaseData according to the current NavigationDataTransformation. * The resulting BaseData is then given in tracking coordinates. * * Inputs: NavigationData(s), object(s) to transform (BaseData), hand-eye transformation (itk::QuaternionRigidTransform) * * Derived from NavigationDataToNavigationDataFilter * * \ingroup IGT */ - class MitkIGT_EXPORT NavigationDataHandEyeCalibrationFilter : public NavigationDataToNavigationDataFilter + class mitkCameraCalibration_EXPORT NavigationDataHandEyeCalibrationFilter : public NavigationDataToNavigationDataFilter { public: mitkClassMacro(NavigationDataHandEyeCalibrationFilter, NavigationDataToNavigationDataFilter); itkNewMacro(Self); /*! \brief transformation type for itk::QuaternionRigidTransforms */ typedef itk::QuaternionRigidTransform QuaternionRigidTransformType; /** * \brief Set the object that will be transformed to tracking coordinates using the current NavigationData * and the given transformation of the HandEyeCalibration * * \param index index corresponding to the NavigationData and hand-eye transformation to be applied to this BaseData * \param data BaseData to be associated to the index */ void SetObjectToTransform(unsigned int index, BaseData* data); /** * \brief Set the transformation of the HandEyeCalibration that should be applied to the BaseData * with the current transformation of the Navigation Data * * \param index index corresponding to the NavigationData applied with this hand-eye transformation * \param handEyeTransform transformation of a previously performed hand-eye calibration corresponding to the NavigationData * at index */ - void SetHandEyeTransformation(unsigned int index, QuaternionRigidTransformType::Pointer handEyeTransform); + void SetHandEyeTransformation(unsigned int index, Transform::Pointer handEyeTransform); /* * \brief Transfer the information from the input to the associated BaseData */ virtual void GenerateData(); protected: /** * \brief Constructor **/ NavigationDataHandEyeCalibrationFilter(); /** * \brief Destructor **/ ~NavigationDataHandEyeCalibrationFilter(); /** * \brief Map of the BaseDatas that should be transformed. */ std::map m_ObjectsToTransform; /** * \brief Map of the hand-eye transformations that should be applied to the BaseDatas */ - std::map m_HandEyeTransformations; + std::map m_HandEyeTransformations; }; } // namespace mitk #endif /* MITKNavigationDataHandEyeCalibrationFilter_H_HEADER_INCLUDED_ */ diff --git a/Modules/IGT/files.cmake b/Modules/IGT/files.cmake index 49d577cb33..a48bc06c54 100644 --- a/Modules/IGT/files.cmake +++ b/Modules/IGT/files.cmake @@ -1,60 +1,59 @@ SET(CPP_FILES IGTFilters/mitkNavigationDataLandmarkTransformFilter.cpp IGTFilters/mitkNavigationDataReferenceTransformFilter.cpp IGTFilters/mitkNavigationDataTransformFilter.cpp IGTFilters/mitkNavigationDataRecorder.cpp IGTFilters/mitkNavigationDataPlayer.cpp IGTFilters/mitkNavigationDataPlayerBase.cpp IGTFilters/mitkNavigationDataObjectVisualizationFilter.cpp IGTFilters/mitkCameraVisualization.cpp IGTFilters/mitkNavigationData.cpp IGTFilters/mitkNavigationDataDisplacementFilter.cpp IGTFilters/mitkNavigationDataSequentialPlayer.cpp IGTFilters/mitkNavigationDataSource.cpp IGTFilters/mitkNavigationDataToMessageFilter.cpp IGTFilters/mitkNavigationDataToNavigationDataFilter.cpp IGTFilters/mitkNavigationDataToOpenGLFilter.cpp IGTFilters/mitkNavigationDataToPointSetFilter.cpp - IGTFilters/mitkNavigationDataHandEyeCalibrationFilter.cpp IGTFilters/mitkTrackingDeviceSource.cpp IGTFilters/mitkTrackingVolumeGenerator.cpp IGTFilters/mitkTimeStamp.cpp IGTFilters/mitkRealTimeClock.cpp IGTFilters/mitkTrackingDeviceSourceConfigurator.cpp IGTTrackingDevices/mitkClaronTool.cpp IGTTrackingDevices/mitkClaronTrackingDevice.cpp IGTTrackingDevices/mitkInternalTrackingTool.cpp IGTTrackingDevices/mitkNDIPassiveTool.cpp IGTTrackingDevices/mitkNDIProtocol.cpp IGTTrackingDevices/mitkNDITrackingDevice.cpp IGTTrackingDevices/mitkSerialCommunication.cpp IGTTrackingDevices/mitkTrackingDevice.cpp IGTTrackingDevices/mitkTrackingTool.cpp IGTTrackingDevices/mitkVirtualTrackingDevice.cpp IGTTrackingDevices/mitkVirtualTrackingTool.cpp IGTToolManagement/mitkNavigationToolStorage.cpp IGTToolManagement/mitkNavigationToolStorageSerializer.cpp IGTToolManagement/mitkNavigationToolStorageDeserializer.cpp IGTToolManagement/mitkNavigationTool.cpp IGTToolManagement/mitkNavigationToolReader.cpp IGTToolManagement/mitkNavigationToolWriter.cpp ) IF(MITK_USE_MICRON_TRACKER) SET(CPP_FILES ${CPP_FILES} IGTTrackingDevices/mitkClaronInterface.cpp) ELSE() SET(CPP_FILES ${CPP_FILES} IGTTrackingDevices/mitkClaronInterfaceStub.cpp) ENDIF(MITK_USE_MICRON_TRACKER) IF(MITK_USE_MICROBIRD_TRACKER) SET(CPP_FILES ${CPP_FILES} IGTTrackingDevices/mitkMicroBirdTrackingDevice.cpp) ENDIF(MITK_USE_MICROBIRD_TRACKER) IF(WIN32) SET(CPP_FILES ${CPP_FILES} IGTFilters/mitkWindowsRealTimeClock.cpp) ELSE() SET(CPP_FILES ${CPP_FILES} IGTFilters/mitkLinuxRealTimeClock.cpp) ENDIF(WIN32)