13 #include "itkCommand.h" 27 imageTimeSelector->SetInput(image);
28 imageTimeSelector->SetTimeNr(timePoint);
29 imageTimeSelector->UpdateLargestPossibleRegion();
43 this->m_Registered4DImage = this->m_4DImage->Clone();
47 if (m_TargetMask.IsNotNull())
49 if (m_TargetMask->GetTimeSteps() > 1)
59 double progressDelta = 1.0 / ((this->m_4DImage->GetTimeSteps() - 1) * 3.0);
63 for (
unsigned int i = 1; i < this->m_4DImage->GetTimeSteps(); ++i)
68 IgnoreListType::iterator finding = std::find(m_IgnoreList.begin(), m_IgnoreList.end(), i);
71 if (finding == m_IgnoreList.end())
76 m_Progress += progressDelta;
77 this->InvokeEvent(::mitk::FrameRegistrationEvent(
nullptr,
78 "Registred frame #" +::map::core::convert::toStr(i)));
82 m_Progress += progressDelta;
83 this->InvokeEvent(::mitk::FrameMappingEvent(
nullptr,
84 "Mapped frame #" + ::map::core::convert::toStr(i)));
90 this->m_Registered4DImage->SetVolume(accessor.GetData(), i);
91 this->m_Registered4DImage->GetTimeGeometry()->SetTimeStepGeometry(mappedFrame->GetGeometry(), i);
93 m_Progress += progressDelta;
97 m_Progress += 3 * progressDelta;
100 this->InvokeEvent(::itk::ProgressEvent());
114 return m_Registered4DImage;
128 m_IgnoreList.clear();
139 algHelper.
SetData(movingFrame, targetFrame);
144 maskHelper.
SetMasks(
nullptr, targetMask);
154 targetFrame->
GetGeometry(), !m_AllowUnregPixels, m_ErrorValue, m_InterpolatorType);
160 if (m_Registered4DImage.IsNull())
167 if (m_Registered4DImage->GetMTime() > this->GetMTime())
181 if (m_4DImage.IsNotNull())
183 if (m_4DImage->GetMTime() > this->GetMTime())
189 if (m_TargetMask.IsNotNull())
191 if (m_TargetMask->GetMTime() > this->GetMTime())
203 if (m_4DImage.IsNull())
205 mitkThrow() <<
"Cannot register image. Input 4D image is not set.";
210 mitkThrow() <<
"Cannot register image. Algorithm is not set.";
213 if (m_4DImage->GetTimeSteps() <= 1)
215 mitkThrow() <<
"Cannot register image. Input 4D image must have 2 or more time steps.";
218 for (IgnoreListType::const_iterator pos = this->m_IgnoreList.begin();
219 pos != this->m_IgnoreList.end(); ++pos)
221 if (*pos >= m_4DImage->GetTimeSteps())
224 "Cannot register image. Ignore list containes at least one inexistant frame. Invalid frame index: " void SetAllowImageCasting(bool allowCasting)
void CheckValidInputs() const
map::core::RegistrationBase::Pointer GetRegistration() const
mitk::Image::Pointer GetFrameImage(const mitk::Image *image, mitk::TimePointType timePoint) const
virtual double GetProgress() const
mitk::Image::Pointer DoFrameMapping(const mitk::Image *movingFrame, const RegistrationType *reg, const mitk::Image *targetFrame) const
void SetData(const mitk::BaseData *moving, const mitk::BaseData *target)
RegistrationType::Pointer RegistrationPointer
Image class for storing images.
mitk::ScalarType TimePointType
mitk::Image::Pointer image
bool HasOutdatedResult() const
MITKMATCHPOINTREGISTRATION_EXPORT ResultImageType::Pointer map(const InputImageType *input, const RegistrationType *registration, bool throwOnOutOfInputAreaError=false, const double &paddingValue=0, const ResultImageGeometryType *resultGeometry=nullptr, bool throwOnMappingError=true, const double &errorValue=0, mitk::ImageMappingInterpolator::Type interpolatorType=mitk::ImageMappingInterpolator::Linear)
::map::core::RegistrationBase RegistrationType
bool SetMasks(const mitk::Image *movingMask, const mitk::Image *targetMask)
RegistrationPointer DoFrameRegistration(const mitk::Image *movingFrame, const mitk::Image *targetFrame, const mitk::Image *targetMask) const
RegistrationAlgorithmPointer m_Algorithm
void SetIgnoreList(const IgnoreListType &il)
MaskedAlgorithmHelper Helper class as an easy bridge to set mitk images as masks for registration alg...
mitk::Image::Pointer mask
ImageReadAccessor class to get locked read access for a particular image part.
mitk::BaseGeometry * GetGeometry(int t=0) const
Return the geometry, which is a TimeGeometry, of the data as non-const pointer.
std::vector< mitk::TimeStepType > IgnoreListType
Image::Pointer GetRegisteredImage()