ImFusion C++ SDK 4.5.0
ImFusion::CT::AutoFocusMotionCompensationAlgorithm Class Reference

#include <ImFusion/CT/AutoFocusMotionCompensationAlgorithm.h>

Compensating for rigid motion in projection images. More...

Inheritance diagram for ImFusion::CT::AutoFocusMotionCompensationAlgorithm:

Detailed Description

Compensating for rigid motion in projection images.

Public Types

enum class  Mode { SHARPNESS_3D = 0 , ISO_TV = 1 }
enum class  MotionMode { RIGID_ISO , RIGID_SOURCEDETECTOR }
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 Member Functions

 AutoFocusMotionCompensationAlgorithm (SharedImageSet &data)
 Constructor, reference to projection data required.
 ~AutoFocusMotionCompensationAlgorithm () override
 Destructor.
Public Member Functions inherited from ImFusion::CT::AlgorithmReconstructionDecorator< OptimizingAlgorithm >
 AlgorithmReconstructionDecorator (SharedImageSet &cbData)
 Constructor with reference to cone-beam data.
virtual ~AlgorithmReconstructionDecorator () override=0
 Virtual destructor.
void setProgress (Progress *progress) override
bool survivesDataDeletion (const Data *) const override
 Check if data is not in the input list but is using by the algorithm.
ReconstructionAlgorithmgetReconAlgorithm () override
Public Member Functions inherited from ImFusion::OptimizingAlgorithm
void setOptimizer (std::shared_ptr< Optimizer > opt)
 Set an optimizer from outside.
std::shared_ptr< Optimizeroptimizer ()
 Returns the current optimizer.
void configure (const Properties *p) override
 Configures the optimizer from a sub-property if available.
void configuration (Properties *p) const override
 Stores the optimizer configuration into a sub-property.
Public Member Functions inherited from ImFusion::Algorithm
 Algorithm ()
 Default constructor will registers a single "compute" action that calls compute() and returns status().
Progressprogress () const
 Returns the progress interface if set.
virtual int status () const
 Indicates the status of the last call to compute().
const FactoryInfofactoryInfo () 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

Public Attributes

Parameter< Modep_mode = {"mode", Mode::SHARPNESS_3D, *this}
 Criterion to evaluate the image quality.
Parameter< MotionModep_motionMode = {"motionMode", MotionMode::RIGID_ISO, *this}
 Mode of motion (Currently only support rigid motion).
Parameter< int > p_numControlPoints = {"numControlPoints", 5, *this}
 Number of control points on the trajectory spline.
Parameter< double > p_regWeight = {"regWeight", 0.0, *this}
 Weight for regularization term.
Parameter< std::vector< bool > > p_poseParameterSelection = {"poseParameterSelection", std::vector<bool>{1, 1, 1, 0, 0, 0}, this}
 Selection of pose parameters to optimize (tx, ty, tz, rx, ry, rz).
Parameter< bool > p_useLastControlPoint = {"useLastControlPoint", true, this}
 If enabled, the last control point of the motion model will also be used for optimization.
Parameter< bool > p_blockMode = {"blockMode", false, this}
 If enabled, blocks of constant transformations are defined between the control points.
Parameter< bool > p_optimizeControlPointPosition = {"optimizeControlPointPosition", true, this}
 If enabled, positions of the control points are also optimized.
Parameter< bool > p_enableThresholds = {"enableThresholds", false, this}
 Flag to enable/disable intensity threshold for SHARPNESS_3D. Default to false.
Parameter< double > p_sharpnessMinIntensity = {"sharpnessMinIntensity", 0.0, this}
 Min intensity threshold for MetricSharpness computation of SHARPNESS_3D when p_enableThresholds is true.
Parameter< double > p_sharpnessMaxIntensity = {"sharpnessMaxIntensity", 1.0, this}
 Max intensity threshold for MetricSharpness computation of SHARPNESS_3D when p_enableThresholds is true.
Parameter< double > p_sharpnessBorder = {"sharpnessBorder", 0.0, *this}
 Texture coordinate border to compute sharpness, set to 0.0 for entire texture coordinate [0,1].
Public Attributes inherited from ImFusion::CT::AlgorithmReconstructionDecorator< OptimizingAlgorithm >
SubProperty< std::unique_ptr< ReconstructionAlgorithm > > p_reconAlgorithm
 Reconstruction algorithm for computing the intermediate CT volume.
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.

Protected Member Functions

std::shared_ptr< OptimizercreateDefaultOptimizer () const override
 Create a default optimizer.
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

std::unique_ptr< MotionModelm_motionModel
 The motion model instance.
std::unique_ptr< GlImageMetricm_metric
 The image evaluation metric.
Protected Attributes inherited from ImFusion::CT::AlgorithmReconstructionDecorator< OptimizingAlgorithm >
SharedImageSetm_cbData
 ConeBeamData instance, storing projection data.
std::unique_ptr< SharedImageSetm_cbDataOwn
 Owning ConeBeamData, storing projection data.
Protected Attributes inherited from ImFusion::OptimizingAlgorithm
std::shared_ptr< Optimizerm_opt
 The optimizer instance.
Protected Attributes inherited from ImFusion::Algorithm
std::string m_name
 Algorithm name.
Progressm_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< Actionm_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< Paramm_params
 List of all registered Parameter and SubProperty instances.

Algorithm interface methods

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.
void compute () override
 Compute motion compensation on entire data.
OwningDataList takeOutput () override
 Return any new Data that was created by the Algorithm during the last call to compute().
void resetTrajectory ()
 Clear the current framePars.
double evaluate (int n, const double *x, double *dx=0) override
 Evaluate the motion similarity measure.
static bool createCompatible (const DataList &data, Algorithm **a=0)

Additional Inherited Members

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.

Member Enumeration Documentation

◆ Mode

Enumerator
SHARPNESS_3D 

3D Tenengrad sharpness.

ISO_TV 

Isotropic total variation.

◆ MotionMode

Enumerator
RIGID_ISO 

Rigid motion around isocenter.

RIGID_SOURCEDETECTOR 

Rigid motion of source-detector system.

Constructor & Destructor Documentation

◆ AutoFocusMotionCompensationAlgorithm()

ImFusion::CT::AutoFocusMotionCompensationAlgorithm::AutoFocusMotionCompensationAlgorithm ( SharedImageSet & data)

Constructor, reference to projection data required.

Parameters
dataReference to cone-beam projection data

Member Function Documentation

◆ createCompatible()

bool ImFusion::CT::AutoFocusMotionCompensationAlgorithm::createCompatible ( const DataList & data,
Algorithm ** a = 0 )
static

Create motion compensation algorithm instance

Parameters
dataInput data list
aOutput algorithm pointer
Returns
True if compatible data found

◆ configure()

void ImFusion::CT::AutoFocusMotionCompensationAlgorithm::configure ( const Properties * p)
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.

See also
configuration() for the inverse functionality

Reimplemented from ImFusion::CT::AlgorithmReconstructionDecorator< OptimizingAlgorithm >.

◆ configuration()

void ImFusion::CT::AutoFocusMotionCompensationAlgorithm::configuration ( Properties * p) const
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.

See also
configure() for the inverse functionality

Reimplemented from ImFusion::CT::AlgorithmReconstructionDecorator< OptimizingAlgorithm >.

◆ compute()

void ImFusion::CT::AutoFocusMotionCompensationAlgorithm::compute ( )
overridevirtual

Compute motion compensation on entire data.

Implements ImFusion::Algorithm.

◆ takeOutput()

OwningDataList ImFusion::CT::AutoFocusMotionCompensationAlgorithm::takeOutput ( )
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.

Note
Since ownership of the data is transferred, you can call this method only once between calls to compute().

Reimplemented from ImFusion::Algorithm.

◆ evaluate()

double ImFusion::CT::AutoFocusMotionCompensationAlgorithm::evaluate ( int n,
const double * x,
double * dx = 0 )
overridevirtual

Evaluate the motion similarity measure.

Parameters
nNumber of parameters
xParameter values
dxOptional gradient output
Returns
Objective function value

Implements ImFusion::CostFunction.

◆ createDefaultOptimizer()

std::shared_ptr< Optimizer > ImFusion::CT::AutoFocusMotionCompensationAlgorithm::createDefaultOptimizer ( ) const
overrideprotectedvirtual

Create a default optimizer.

Implements ImFusion::OptimizingAlgorithm.

Member Data Documentation

◆ p_sharpnessMinIntensity

Parameter<double> ImFusion::CT::AutoFocusMotionCompensationAlgorithm::p_sharpnessMinIntensity = {"sharpnessMinIntensity", 0.0, this}

Min intensity threshold for MetricSharpness computation of SHARPNESS_3D when p_enableThresholds is true.

Default to 0.0.

◆ p_sharpnessMaxIntensity

Parameter<double> ImFusion::CT::AutoFocusMotionCompensationAlgorithm::p_sharpnessMaxIntensity = {"sharpnessMaxIntensity", 1.0, this}

Max intensity threshold for MetricSharpness computation of SHARPNESS_3D when p_enableThresholds is true.

Default to 1.0.


The documentation for this class was generated from the following file:
  • ImFusion/CT/AutoFocusMotionCompensationAlgorithm.h
Search Tab / S to search, Esc to close