25 #include <QThreadPool> 28 #include <mapAlgorithmEvents.h> 29 #include <mapAlgorithmWrapperEvent.h> 30 #include <mapExceptionObjectMacros.h> 31 #include <mapImageRegistrationAlgorithmInterface.h> 32 #include <mapRegistrationAlgorithmInterface.h> 51 const map::events::AlgorithmEvent *pAlgEvent =
dynamic_cast<const map::events::AlgorithmEvent *
>(&event);
52 const map::events::AlgorithmIterationEvent *pIterationEvent =
53 dynamic_cast<const map::events::AlgorithmIterationEvent *
>(&event);
54 const map::events::AlgorithmWrapperEvent *pWrapEvent =
55 dynamic_cast<const map::events::AlgorithmWrapperEvent *
>(&event);
56 const map::events::AlgorithmResolutionLevelEvent *pLevelEvent =
57 dynamic_cast<const map::events::AlgorithmResolutionLevelEvent *
>(&event);
59 const map::events::InitializingAlgorithmEvent *pInitEvent =
60 dynamic_cast<const map::events::InitializingAlgorithmEvent *
>(&event);
61 const map::events::StartingAlgorithmEvent *pStartEvent =
62 dynamic_cast<const map::events::StartingAlgorithmEvent *
>(&event);
63 const map::events::StoppingAlgorithmEvent *pStoppingEvent =
64 dynamic_cast<const map::events::StoppingAlgorithmEvent *
>(&event);
65 const map::events::StoppedAlgorithmEvent *pStoppedEvent =
66 dynamic_cast<const map::events::StoppedAlgorithmEvent *
>(&event);
67 const map::events::FinalizingAlgorithmEvent *pFinalizingEvent =
68 dynamic_cast<const map::events::FinalizingAlgorithmEvent *
>(&event);
69 const map::events::FinalizedAlgorithmEvent *pFinalizedEvent =
70 dynamic_cast<const map::events::FinalizedAlgorithmEvent *
>(&event);
80 else if (pStoppingEvent)
84 else if (pStoppedEvent)
88 if (!pStoppedEvent->getComment().empty())
90 emit
AlgorithmInfo(QString(
"Stopping condition: ") + QString::fromStdString(pStoppedEvent->getComment()));
93 else if (pFinalizingEvent)
97 else if (pFinalizedEvent)
101 else if (pIterationEvent)
106 map::algorithm::facet::IterativeAlgorithmInterface::IterationCountType count = 0;
107 bool hasCount =
false;
109 if (pIterative && pIterative->hasIterationCount())
112 count = pIterative->getCurrentIteration();
115 emit
AlgorithmIterated(QString::fromStdString(pIterationEvent->getComment()), hasCount, count);
117 else if (pLevelEvent)
122 map::algorithm::facet::MultiResRegistrationAlgorithmInterface::ResolutionLevelCountType count = 0;
123 bool hasCount =
false;
124 QString
info = QString::fromStdString(pLevelEvent->getComment());
126 if (pResAlg && pResAlg->hasLevelCount())
128 count = pResAlg->getCurrentLevel() + 1;
130 info = QString(
"Level #") + QString::number(pResAlg->getCurrentLevel() + 1) + QString(
" ") +
info;
135 else if (pAlgEvent && !pWrapEvent)
137 emit
AlgorithmInfo(QString::fromStdString(pAlgEvent->getComment()));
154 m_spCommand = ::itk::MemberCommand<QmitkRegistrationJob>::New();
181 emit
Error(QString(
"Error. No registration was determined. No results to store."));
191 catch (::std::exception &e)
193 emit
Error(QString(
"Error while registering data. Details: ") + QString::fromLatin1(e.what()));
197 emit
Error(QString(
"Unkown error when registering data."));
mitk::Image::ConstPointer m_spMovingMask
void LevelChanged(QString info, bool hasLevelCount, unsigned long currentLevel)
::itk::MemberCommand< QmitkRegistrationJob >::Pointer m_spCommand
mitk::BaseData::ConstPointer m_spMovingData
::map::algorithm::facet::MultiResRegistrationAlgorithmInterface IMultiResAlgorithm
void AlgorithmInfo(QString info)
map::core::RegistrationBase::Pointer GetRegistration() const
const mitk::Image * GetMovingDataAsImage() const
mitk::NodeUIDType m_MovingDataUID
static void info(const char *fmt,...)
~QmitkRegistrationJob() override
::map::core::RegistrationBase::Pointer m_spResultRegistration
void SetData(const mitk::BaseData *moving, const mitk::BaseData *target)
mitk::BaseData::ConstPointer m_spTargetData
Image class for storing images.
const mitk::Image * GetTargetDataAsImage() const
unsigned long m_ObserverID
::map::algorithm::facet::IterativeAlgorithmInterface IIterativeAlgorithm
mitk::Image::ConstPointer m_spTargetMask
mitk::NodeUIDType m_TargetDataUID
bool SetMasks(const mitk::Image *movingMask, const mitk::Image *targetMask)
::map::algorithm::RegistrationAlgorithmBase::Pointer m_spLoadedAlgorithm
MaskedAlgorithmHelper Helper class as an easy bridge to set mitk images as masks for registration alg...
const ::map::algorithm::RegistrationAlgorithmBase * GetLoadedAlgorithm() const
QmitkRegistrationJob(::map::algorithm::RegistrationAlgorithmBase *pAlgorithm)
void RegResultIsAvailable(mitk::MAPRegistrationWrapper::Pointer spResultRegistration, const QmitkRegistrationJob *pJob)
void AlgorithmIterated(QString info, bool hasIterationCount, unsigned long currentIteration)
void OnMapAlgorithmEvent(::itk::Object *, const itk::EventObject &event)
void AlgorithmStatusChanged(QString info)