![]() |
ImFusion C++ SDK 4.5.0
|
#include <ImFusion/CT/GlCBCTProjector.h>
OpenGL-based cone-beam CT projector implementation. More...
OpenGL-based cone-beam CT projector implementation.
GPU-accelerated forward and backward projection for CBCT reconstruction.
Public Member Functions | |
| GlCBCTProjector (const SharedImageSet &domainRef, const SharedImageSet &rangeRef) | |
| ~GlCBCTProjector () override | |
| Destructor. | |
| Status | apply (const ExprBase &exprIn, const SharedImageSet &in, SharedImageSet &out, const ExprBase *exprOut=nullptr) const override |
| Computes the Matrix vector product by performing a tree-traversal of the evaluation tree. | |
| Status | applyAdjoint (const ExprBase &exprIn, const SharedImageSet &in, SharedImageSet &out, const ExprBase *exprOut=nullptr) const override |
| Computes the Matrix vector product by performing a tree-traversal of the evaluation tree. | |
| std::unique_ptr< LinearOperator > | clone () const override |
| Factory method. | |
| Public Member Functions inherited from ImFusion::CT::LinearOperatorEvalInputExpr< false > | |
| Status | apply (const SharedImageSet &in, SharedImageSet &out, const ExprBase *exprOut=nullptr) const override final |
| Status | applyAdjoint (const SharedImageSet &in, SharedImageSet &out, const ExprBase *exprOut=nullptr) const override final |
| LinearOperator (const SharedImageSet *domainRef, const SharedImageSet *rangeRef=nullptr) | |
| Constructor with optional references for the domain and codomain (i.e. range) of the operator. | |
| virtual Status | apply (const ExprBase &exprIn, const SharedImageSet &in, SharedImageSet &out, const ExprBase *exprOut=nullptr) const=0 |
| Applies a linear operator \(A\), optionally pre/post-composing with an ImageMath expression. | |
| 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 |
| virtual Status | applyAdjoint (const ExprBase &exprIn, const SharedImageSet &in, SharedImageSet &out, const ExprBase *exprOut=nullptr) const=0 |
| Applies the adjoint of a linear operator \(A\), optionally pre/post-composing with an ImageMath expression. | |
| 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 ImFusion::CT::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< LinearOperatorAdjointWrapper > | adjoint () const |
| Creates an adjoint operator of this. | |
| const SharedImageSet * | domainRef () const |
| Getter for m_domainRef, can be nullptr if this is implicitly defined by the operator. | |
| const SharedImageSet * | rangeRef () const |
| Getter for m_rangeRef, can be nullptr if this is implicitly defined by the operator. | |
| virtual std::unique_ptr< SharedImageSet > | createDomainSis () const |
| Creates a SharedImageSet which is in the range of the operator. | |
| virtual std::unique_ptr< SharedImageSet > | createRangeSis () 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 ImFusion::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 | |
| Configurable & | operator= (const Configurable &) |
| Configurable & | operator= (Configurable &&) noexcept |
Public Attributes | |
| Parameter< vec2 > | p_fadeOff = {"fadeOff", vec2(-0.2, 0.1), *this} |
| We use a weighted extrapolation ("fadeOff") near the border of the projection domain. | |
| Parameter< bool > | p_interpolateInputApply = {"interpolateInputApply", true, *this} |
| Whether to use linear interpolation on volume (as opposed to nearest-neighbor interpolation) for forward projection. | |
| Parameter< bool > | p_interpolateInputAdjoint = {"interpolateInputAdjoint", true, *this} |
| Whether to use linear interpolation on projections (as opposed to nearest-neighbor interpolation) for backward projection. | |
| Parameter< bool > | p_localizeBackprojection = {"localizeBackprojection", false, *this} |
| If set, voxels that do not intersect rays are not considered in the shader. | |
| Parameter< std::optional< double > > | p_backprojectionMaxTimeToGlFinish = {"backprojectionMaxTimeToGlFinish", std::nullopt, *this} |
| Time in milliseconds between calls to glFinish() in the backprojection. | |
| Public Attributes inherited from ImFusion::CT::CBCTProjector | |
| Parameter< bool > | p_useMaskInputApply = {"useMaskInputApply", true, *this} |
| Use masks on input data during forward projection. | |
| Parameter< bool > | p_useMaskOutputApply = {"useMaskOutputApply", true, *this} |
| Use masks on output data during forward projection. | |
| Parameter< bool > | p_useMaskInputApplyAdjoint = {"useMaskInputApplyAdjoint", true, *this} |
| Use masks on input data during backprojection. | |
| Parameter< bool > | p_useMaskOutputApplyAdjoint = {"useMaskOutputApplyAdjoint", true, *this} |
| Use masks on output data during backprojection. | |
| Public Attributes inherited from ImFusion::Configurable | |
| Signal | signalParametersChanged |
| Emitted whenever one of the registered Parameters' or SubPropertys' signalValueChanged signal was emitted. | |
Additional Inherited Members | |
| Public Types inherited from ImFusion::CT::LinearOperator | |
| using | ExprBase = ImageMath::ExprBase |
| Public Types inherited from ImFusion::CT::Block | |
| using | Input = DataList |
| using | Output = DataList |
| Protected Attributes inherited from ImFusion::CT::LinearOperator | |
| const SharedImageSet * | m_domainRef = nullptr |
| const SharedImageSet * | m_rangeRef = nullptr |
| Protected Attributes inherited from ImFusion::Configurable | |
| std::vector< Param > | m_params |
| List of all registered Parameter and SubProperty instances. | |
|
overridevirtual |
Computes the Matrix vector product by performing a tree-traversal of the evaluation tree.
Implements ImFusion::CT::LinearOperator.
|
overridevirtual |
Computes the Matrix vector product by performing a tree-traversal of the evaluation tree.
Implements ImFusion::CT::LinearOperator.
|
overridevirtual |
Factory method.
Implements ImFusion::CT::LinearOperator.
| Parameter<vec2> ImFusion::CT::GlCBCTProjector::p_fadeOff = {"fadeOff", vec2(-0.2, 0.1), *this} |
We use a weighted extrapolation ("fadeOff") near the border of the projection domain.
This is considered while all projections are accumulated. The first component is for the x direction, the second for the y direction. A negative weighting means that the fadeOff will be applied in the region +-0.5*fadeOff w.r.t. the border. A positive fadeoff means that the fadeOff will be in the region +fadeOff w.r.t. the border
| Parameter<bool> ImFusion::CT::GlCBCTProjector::p_localizeBackprojection = {"localizeBackprojection", false, *this} |
If set, voxels that do not intersect rays are not considered in the shader.
This should not affect the result of the back-projection, but significantly improves runtime if set for geometries where projections only cover a small part of the volume.
| Parameter<std::optional<double> > ImFusion::CT::GlCBCTProjector::p_backprojectionMaxTimeToGlFinish = {"backprojectionMaxTimeToGlFinish", std::nullopt, *this} |
Time in milliseconds between calls to glFinish() in the backprojection.
Disabled by default.