ImFusion SDK 4.3
MatrixLinearOperator Class Reference

#include <ImFusion/CT/Solver/MatrixLinearOperator.h>

Linear operator wrapping an explicit matrix. More...

+ Inheritance diagram for MatrixLinearOperator:

Detailed Description

Linear operator wrapping an explicit matrix.

For production use, prefer inheriting from LinearOperator directly.

Warning
CPU-only implementation for testing and development purposes.

Public Member Functions

 MatrixLinearOperator (const SharedImageSet &domainRef, const SharedImageSet &rangeRef, const Eigen::MatrixXf &matrix)
 Constructor.
 
Status apply (const SharedImageSet &in, SharedImageSet &out, const ExprBase *exprOut=nullptr) const override
 Explicitly calculates the matrix-vector product, where.
 
Status applyAdjoint (const SharedImageSet &in, SharedImageSet &out, const ExprBase *exprOut=nullptr) const override
 Explicitly calculates the adjoint matrix-vector product, where.
 
std::unique_ptr< LinearOperatorclone () const override
 Factory method.
 
- Public Member Functions inherited from LinearOperatorEvalInputExpr< true >
 LinearOperatorEvalInputExpr (const SharedImageSet *domainRef, const SharedImageSet *rangeRef, bool isSplitChannels=false)
 Constructor.
 
Status apply (const ExprBase &exprIn, const SharedImageSet &in, SharedImageSet &out, const ExprBase *exprOut=nullptr) const override final
 Applies a linear operator \(A\), optionally pre/post-composing with an ImageMath expression.
 
Status applyAdjoint (const ExprBase &exprIn, const SharedImageSet &in, SharedImageSet &out, const ExprBase *exprOut=nullptr) const override final
 Applies the adjoint of a linear operator \(A\), optionally pre/post-composing with an ImageMath expression.
 
 LinearOperator (const SharedImageSet *domainRef, const SharedImageSet *rangeRef=nullptr)
 Constructor with optional references for the domain and codomain (i.e. range) of the operator.
 
template<typename ImplType, typename ImplTypeOut>
Status apply (const ImageMath::ExprBaseTpl< ImplType > &exprIn, const SharedImageSet &in, SharedImageSet &out, const ImageMath::ExprBaseTpl< ImplTypeOut > *exprOut=nullptr) const
 
template<typename ImplType>
Status apply (const ImageMath::ExprBaseTpl< ImplType > &exprIn, const SharedImageSet &in, SharedImageSet &out, const ExprBase *exprOut=nullptr) const
 
template<typename ImplType, typename ImplTypeOut>
Status applyAdjoint (const ImageMath::ExprBaseTpl< ImplType > &exprIn, const SharedImageSet &in, SharedImageSet &out, const ImageMath::ExprBaseTpl< ImplTypeOut > *exprOut=nullptr) const
 
template<typename ImplType>
Status applyAdjoint (const ImageMath::ExprBaseTpl< ImplType > &exprIn, const SharedImageSet &in, SharedImageSet &out, const ExprBase *exprOut=nullptr) const
 
- Public Member Functions inherited from LinearOperator
 LinearOperator (const SharedImageSet *domainRef, const SharedImageSet *rangeRef=nullptr)
 Constructor with optional references for the domain and codomain (i.e. range) of the operator.
 
 ~LinearOperator () override=0
 Destructor.
 
template<typename ImplType, typename ImplTypeOut>
Status apply (const ImageMath::ExprBaseTpl< ImplType > &exprIn, const SharedImageSet &in, SharedImageSet &out, const ImageMath::ExprBaseTpl< ImplTypeOut > *exprOut=nullptr) const
 
template<typename ImplType>
Status apply (const ImageMath::ExprBaseTpl< ImplType > &exprIn, const SharedImageSet &in, SharedImageSet &out, const ExprBase *exprOut=nullptr) const
 
template<typename ImplType, typename ImplTypeOut>
Status applyAdjoint (const ImageMath::ExprBaseTpl< ImplType > &exprIn, const SharedImageSet &in, SharedImageSet &out, const ImageMath::ExprBaseTpl< ImplTypeOut > *exprOut=nullptr) const
 
template<typename ImplType>
Status applyAdjoint (const ImageMath::ExprBaseTpl< ImplType > &exprIn, const SharedImageSet &in, SharedImageSet &out, const ExprBase *exprOut=nullptr) const
 
Status runBlock (Input &input, Output &output) override
 Applies the operator to the first element of input.
 
std::unique_ptr< LinearOperatorAdjointWrapperadjoint () const
 Creates an adjoint operator of this.
 
const SharedImageSetdomainRef () const
 Getter for m_domainRef, can be nullptr if this is implicitly defined by the operator.
 
const SharedImageSetrangeRef () const
 Getter for m_rangeRef, can be nullptr if this is implicitly defined by the operator.
 
virtual std::unique_ptr< SharedImageSetcreateDomainSis () const
 Creates a SharedImageSet which is in the range of the operator.
 
virtual std::unique_ptr< SharedImageSetcreateRangeSis () const
 Creates a SharedImageSet which is in the range of the operator.
 
Eigen::MatrixXf extractApplyMatrix () const
 Extracts a dense matrix representing this operator.
 
Eigen::MatrixXf extractApplyAdjointMatrix () const
 Extracts a dense matrix representing this operator.
 
- Public Member Functions inherited from Configurable
virtual void configure (const Properties *p)
 Configure this object instance by de-serializing the given Properties.
 
virtual void configuration (Properties *p) const
 Serialize the current object configuration into the given Properties object.
 
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
 
Configurableoperator= (const Configurable &)
 
Configurableoperator= (Configurable &&) noexcept
 

Additional Inherited Members

- Public Types inherited from LinearOperator
using ExprBase = ImageMath::ExprBase
 
- Public Types inherited from Block
using Input = DataList
 
using Output = DataList
 
- Public Attributes inherited from Configurable
Signal signalParametersChanged
 Emitted whenever one of the registered Parameters' or SubPropertys' signalValueChanged signal was emitted.
 
- Protected Attributes inherited from LinearOperator
const SharedImageSetm_domainRef = nullptr
 
const SharedImageSetm_rangeRef = nullptr
 
- Protected Attributes inherited from Configurable
std::vector< Paramm_params
 List of all registered Parameter and SubProperty instances.
 

Member Function Documentation

◆ apply()

Status apply ( const SharedImageSet & in,
SharedImageSet & out,
const ExprBase * exprOut = nullptr ) const
overridevirtual

Explicitly calculates the matrix-vector product, where.

Parameters
inand
outare treated as large vectors.

Reimplemented from LinearOperatorEvalInputExpr< true >.

◆ applyAdjoint()

Status applyAdjoint ( const SharedImageSet & in,
SharedImageSet & out,
const ExprBase * exprOut = nullptr ) const
overridevirtual

Explicitly calculates the adjoint matrix-vector product, where.

Parameters
inand
outare treated as large vectors.

Reimplemented from LinearOperatorEvalInputExpr< true >.

◆ clone()

std::unique_ptr< LinearOperator > clone ( ) const
overridevirtual

Factory method.

Implements LinearOperator.


The documentation for this class was generated from the following file:
Search Tab / S to search, Esc to close