![]() |
ImFusion C++ SDK 4.4.0
|
#include <ImFusion/Reg/ImageBasedGatingAlgorithm.h>
Compute cardiac or respiratory gating parameters by detecting periodic structural change in the images. More...
Compute cardiac or respiratory gating parameters by detecting periodic structural change in the images.
Public Member Functions | |
| ImageBasedGatingAlgorithm (SharedImageSet *img) | |
| void | compute () override |
| Execute the algorithm. | |
| void | configure (const Properties *p) override |
| Configure this object instance by de-serializing the given Properties. | |
| void | configuration (Properties *p) const override |
| Serialize the current object configuration into the given Properties object. | |
| OwningDataList | takeOutput () override |
| Return any new Data that was created by the Algorithm during the last call to compute(). | |
| void | setUseForwardImage (bool v) |
| Public Member Functions inherited from ImFusion::Algorithm | |
| Algorithm () | |
| Default constructor will registers a single "compute" action that calls compute() and returns status(). | |
| virtual void | setProgress (Progress *progress) |
| Sets a Progress interface the algorithm can use to notify observers about its computing progress. | |
| Progress * | progress () const |
| Returns the progress interface if set. | |
| virtual int | status () const |
| Indicates the status of the last call to compute(). | |
| virtual bool | survivesDataDeletion (const Data *) const |
| Indicates whether the algorithm can handle (partial) deletion of the specified data, by default this checks whether the data is in the input list. | |
| const FactoryInfo & | factoryInfo () const |
| Returns the record describing how this Algorithm was instantiated by the AlgorithmFactory. | |
| void | setFactoryInfo (const FactoryInfo &value) |
| Sets the record describing how this Algorithm was instantiated by the AlgorithmFactory. | |
| Status | runAction (const std::string &id) |
| Run the action with name id if it exists. | |
| const std::vector< Action > & | actions () |
| Get a mapping from Action id to Action as registered in this algorithm. | |
| Public Member Functions inherited from ImFusion::Configurable | |
| virtual void | configureDefaults () |
| Retrieve the properties of this object, replaces values with their defaults and sets it again. | |
| void | registerParameter (ParameterBase *param) |
| Register the given Parameter or SubProperty, so that it will be configured during configure()/configuration(). | |
| void | unregisterParameter (const ParameterBase *param) |
| Remove the given Parameter or SubProperty from the list of registered parameters. | |
| Configurable (const Configurable &rhs) | |
| Configurable (Configurable &&rhs) noexcept | |
| Configurable & | operator= (const Configurable &) |
| Configurable & | operator= (Configurable &&) noexcept |
Static Public Member Functions | |
| static bool | createCompatible (const DataList &data, Algorithm **a=nullptr) |
| Static Public Member Functions inherited from ImFusion::Algorithm | |
| static bool | createCompatible (const DataList &data, Algorithm **a=nullptr) |
| Factory function to check algorithm compatibility with input data and optionally instantiate it. | |
Protected Member Functions | |
| void | findJointSimilarityMinima (const TypedImage< float > &backwardSimilarityBand, const TypedImage< float > &forwardSimilarityBand, GatingMetadata &meta) |
| void | findMatchingFrameCandidates (const TypedImage< float > &bandImg, int kernelSize, int filterRange, std::map< int, std::map< int, int > > &matchingFrames, bool centeredKernel) |
| void | findNumberOfMinimalPhases (TypedImage< float > *forwardSimImage, int bandSize) |
| void | estimateSimilarityBandWidth () |
| std::unique_ptr< SharedImageSet > | computeBackwardsSimilarity () |
| std::vector< std::array< int, 2 > > | findMatchingFrames (TypedImage< float > *backwardSimImage, TypedImage< float > *forwardSimImage) |
| Protected Member Functions inherited from ImFusion::Algorithm | |
| void | loadDefaults () |
| void | registerAction (const std::string &id, const std::string &guiName, const std::function< Algorithm::Status(void)> &action) |
| Register an action to be run via runAction. | |
| template<typename D> | |
| void | registerAction (const std::string &id, const std::string &guiName, Algorithm::Status(D::*action)(void)) |
| Template version of runAction that can be used with a pointer to a member function. | |
| void | registerAction (const Action &action) |
| Register an action. | |
Protected Attributes | |
| int | m_simBandWidth = 0 |
| Size of the similarity band used for the computation. | |
| bool | m_correctSmoothingShift = true |
| Whether to correct the slight offset in the gating delta signal caused by smoothing of the similarity signal. | |
| bool | m_createDebugData = false |
| Turning this on causes various debug data to be added to the algorithm output (which is usually empty). | |
| bool | m_skipNeighbourFrames = false |
| Whether to ignore the frames immediately before and after when computing local similarity. | |
| bool | m_optimizeCandidateGrid = true |
| Whether to use numerical optimization when determining which delta peaks to keep. | |
| int | m_minimaMatchingDistance = 5 |
| Matching distance used when determining where both the backwards and forwards similarity have joint minima, in frames. | |
| int | m_minimalPhases = 0 |
| How many low similarity parts the movement goes through per cycle. | |
| bool | m_useForwardSim = true |
| vec2 | m_cyclesPerMinSearchRange = vec2(20.0, 120.0) |
| SharedImageSet * | m_img |
| OwningDataList | m_out |
| Protected Attributes inherited from ImFusion::Algorithm | |
| std::string | m_name |
| Algorithm name. | |
| Progress * | m_progress = nullptr |
| Non-owing pointer to a progress interface. May be a nullptr. | |
| FactoryInfo | m_factoryInfo = {} |
| Record describing how this algorithm was instantiated by the AlgorithmFactory. | |
| int | m_status = Status::Unknown |
| Algorithm status after last call to compute(). | |
| std::vector< Action > | m_actions |
| Map of key given by the id of the action, of the available actions of this algorithm. | |
| Protected Attributes inherited from ImFusion::Configurable | |
| std::vector< Param > | m_params |
| List of all registered Parameter and SubProperty instances. | |
Additional Inherited Members | |
| Public Types inherited from ImFusion::Algorithm | |
| enum | Status { Unknown = -1 , Success = 0 , Error = 1 , InvalidInput , IncompleteInput , OutOfMemoryHost , OutOfMemoryGPU , UnsupportedGPU , UnknownAction , AbortedByUser , User = 1000 } |
| Status codes. More... | |
| Public Attributes inherited from ImFusion::Algorithm | |
| Signal | signalOutputChanged |
| Signal should be emitted by Algorithms when their output/result has changed. | |
| Signal | signalParametersChanged |
| Signal should be emitted by Algorithms when their parameter configuration has changed. | |
| Public Attributes inherited from ImFusion::Configurable | |
| Signal | signalParametersChanged |
| Emitted whenever one of the registered Parameters' or SubPropertys' signalValueChanged signal was emitted. | |
|
overridevirtual |
Execute the algorithm.
Implements ImFusion::Algorithm.
Reimplemented in ImFusion::LiveImageBasedGating.
|
overridevirtual |
Configure this object instance by de-serializing the given Properties.
The default implementation will do so automatically for all registered Parameter and SubProperty instances.
Reimplemented from ImFusion::Configurable.
|
overridevirtual |
Serialize the current object configuration into the given Properties object.
The default implementation will do so automatically for all registered Parameter and SubProperty instances.
Reimplemented from ImFusion::Configurable.
|
overridevirtual |
Return any new Data that was created by the Algorithm during the last call to compute().
The default implementation will return an empty list.
Reimplemented from ImFusion::Algorithm.
|
protected |
Size of the similarity band used for the computation.
The algorithm becomes unstable if this value is not greater than half a cycle duration of the target motion, in frames. A value of 0 will cause this to be detected automatically via frequency analysis, aiming for 60% cycle duration.
|
protected |
Whether to correct the slight offset in the gating delta signal caused by smoothing of the similarity signal.
If this is off, the delta signal will have a pretty much constant offset relative to inhale events. Requires localized use of the unfiltered similarity and can fail if that signal is very noisy.
|
protected |
Whether to ignore the frames immediately before and after when computing local similarity.
This can be used to attempt to reduce the effect of tearing produces by frame grabbers.
|
protected |
Whether to use numerical optimization when determining which delta peaks to keep.
This usually increases accuracy, especially when data is noisy. Also increases computation time though.
|
protected |
Matching distance used when determining where both the backwards and forwards similarity have joint minima, in frames.
Effects like probe movement can cause these 2 curves to be consistently offset, so some leeway is needed. Increase this number if not enough joint minima are detected (or the delta signal just looks too weird).
|
protected |
How many low similarity parts the movement goes through per cycle.
Leave at 0 to attempt automatic detection.