ImFusion SDK 4.3
ConeBeamCalibration Class Reference

#include <ImFusion/CT/ConeBeamCalibration.h>

Geometric calibration algorithm for X-ray imaging systems. More...

+ Inheritance diagram for ConeBeamCalibration:

Detailed Description

Geometric calibration algorithm for X-ray imaging systems.

Calibrates cone-beam geometry from calibration phantom point clouds and projection images. Uses circle fitting, DLT estimation, and bundle adjustment with shared intrinsic parameters. Image points (on the detector) are assumed to be in pixel coordinates.

Note
This algorithm assumes square pixels and no skew.

Classes

struct  Phantom
 Struct specifying phantom layout. More...
 
struct  PointExtractionParams
 
struct  PointInfo
 Information about extracted points. More...
 
struct  Statistics
 Struct holding statistics of the calibration. More...
 

Public Member Functions

 ConeBeamCalibration (SharedImageSet *data)
 Constructor.
 
SharedImageSetconeBeamData () const
 
void reset ()
 Reset all parameters to their default values.
 
void setVerbosity (int verbosity)
 Set verbosity level.
 
int verbosity () const
 
void setImagePoints (int image, const std::vector< PointInfo > &points)
 Set image points for an image.
 
void imagePoints (int image, std::vector< PointInfo > &points) const
 Get image points for an image.
 
void setImagePoints (const std::vector< std::vector< PointInfo > > &x)
 Set all image points.
 
void imagePoints (std::vector< std::vector< PointInfo > > &x) const
 Get all image points.
 
bool loadImagePoints (const std::string &filename)
 Load point coordinates from file.
 
bool saveImagePoints (const std::string &filename)
 Save point coordinates to file.
 
void clearImagePoints ()
 Clear image points.
 
void setPhantomPoints (const std::vector< vec3 > &X0, bool centerPhantomOnOrigin=false)
 Set phantom points.
 
std::vector< vec3 > phantomPoints () const
 
void setInitialK (const mat3 &K)
 Set initial intrinsic parameter matrix K, instead of estimating it from input data.
 
void clearInitialK ()
 Clear initial K.
 
bool setInitialPoses (const mat3 &K, const std::vector< mat3 > &R, const std::vector< vec3 > &t)
 
void clearInitialPoses ()
 
void setOptimizeDeviceParameters (bool optimizeDeviceParameters)
 Set whether to optimize the device parameters.
 
bool optimizeDeviceParameters () const
 
void setOptimizePhantomPoints (bool optimizePoints)
 Set whether to optimize the phantom points.
 
bool optimizePhantomPoints () const
 
void setFixPrincipalPoint (bool fixPrincipalPoint)
 Set whether to keep the principal point fixed at the image center.
 
bool fixPrincipalPoint () const
 
void setFlipImagePoints (bool flipHorizontally, bool flipVertically)
 Set whether to flip the image points horizontally and/or vertically before calibration.
 
void setAlignResultWithPhantomPoints (bool alignResult)
 Set whether to rigidly align the optimized phantom points with the initial phantom points.
 
bool alignResultWithPhantomPoints () const
 
void setDetermineScaleFromCylinder (bool determineScaleFromCylinder)
 Set whether to determine scale of calibration from phantom cylinder.
 
bool determineScaleFromCylinder () const
 
void setCylinderDiameter (double diameter)
 Set phantom cylinder diameter.
 
double cylinderDiameter () const
 
void setParameterMask (const std::vector< bool > &paramMask)
 Set parameter mask for device parameter optimization.
 
void clearParamMask ()
 Clear parameter mask for device parameter optimization.
 
void setComputeCorrespondingDeviceParameters (bool v)
 Sets whether to compute device parameters associated with optimization result.
 
bool computeCorrespondingDeviceParameters () const
 
void setDeviceParametersFixedSourcePatientDistance (double dist)
 Set fixed source patient distance to use in device parameter optimization. Set to 0 to disable.
 
double deviceParametersFixedSourcePatientDistance () const
 
void setAlignMatricesToDeviceParameters (bool v)
 Sets whether to align the matrices to device parameters (results in volume parameters being all zero)
 
bool alignMatricesToDeviceParameters () const
 
void setPixelSize (double pixelSize)
 
double pixelSize () const
 
void setOutputFolder (const std::string &folder)
 
std::string outputFolder () const
 
bool run (Progress *progress=0)
 Run calibration.
 
void getResults (mat3 &K, std::vector< mat3 > &R, std::vector< vec3 > &t, std::vector< vec3 > &X, double &mre) const
 Get calibration results.
 
Vision::DeviceParameters getDeviceParameters () const
 Get device parameters.
 
Phantom phantom () const
 Get current phantom settings.
 
bool setPhantom (const Phantom &phantom)
 Set phantom based on phantom settings.
 
bool setPhantom (const std::string &phantomFile)
 Load custom phantom from file.
 
void setPointExtractionParams (const PointExtractionParams &params)
 
PointExtractionParams pointExtractionParams () const
 
std::optional< StatisticscomputeStatistics () const
 Compute the statistics of a calibration Returns (wrapped) Statistics option on success.
 
bool extractPoints (int frame=-1)
 
int trackPoints ()
 Create tracks from the points found. Returns the number of tracks found.
 
bool savePhantom (const std::string &filename) const
 
bool saveCalibration (const std::string &folder) const
 
void configure (const Properties *p) override
 Configurable interface.
 
void configuration (Properties *p) const override
 Serialize the current object configuration into the given Properties object.
 
const std::tuple< vec3, double, mat3 > & initialCircleEstimate () const
 Getter methods.
 
const std::vector< double > & intermediateReprojectionErrors () const
 
- Public Member Functions inherited from Algorithm
 Algorithm ()
 Default constructor will registers a single "compute" action that calls compute() and returns status().
 
virtual OwningDataList takeOutput ()
 Return any new Data that was created by the Algorithm during the last call to compute().
 
virtual void setProgress (Progress *progress)
 Sets a Progress interface the algorithm can use to notify observers about its computing progress.
 
Progressprogress () 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 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 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
 
Configurableoperator= (const Configurable &)
 
Configurableoperator= (Configurable &&) noexcept
 

Implementation of the Algorithm interface

void compute () override
 Execute the algorithm.
 
static bool createCompatible (const DataList &data, Algorithm **a=0)
 

Additional Inherited Members

- Public Types inherited from Algorithm
enum  Status {
  Unknown = -1 , Success = 0 , Error = 1 , InvalidInput ,
  IncompleteInput , OutOfMemoryHost , OutOfMemoryGPU , UnsupportedGPU ,
  UnknownAction , AbortedByUser , User = 1000
}
 Status codes. More...
 
- Static Public Member Functions inherited from Algorithm
static bool createCompatible (const DataList &data, Algorithm **a=nullptr)
 Factory function to check algorithm compatibility with input data and optionally instantiate it.
 
- Public Attributes inherited from 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 Configurable
Signal signalParametersChanged
 Emitted whenever one of the registered Parameters' or SubPropertys' signalValueChanged signal was emitted.
 
- Protected Member Functions inherited from 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 inherited from 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 Configurable
std::vector< Paramm_params
 List of all registered Parameter and SubProperty instances.
 

Member Function Documentation

◆ compute()

void compute ( )
overridevirtual

Execute the algorithm.

Implements Algorithm.

◆ setVerbosity()

void setVerbosity ( int verbosity)
inline

Set verbosity level.

Parameters
verbosityverbosity level (-1 = no messages, 0 = error messages, 1 = important messages, 2 = all messages)

◆ setImagePoints() [1/2]

void setImagePoints ( int image,
const std::vector< PointInfo > & points )

Set image points for an image.

Parameters
imageimage number
pointsimage points in pixel coordinates.

◆ imagePoints() [1/2]

void imagePoints ( int image,
std::vector< PointInfo > & points ) const

Get image points for an image.

Parameters
imageimage number
pointsimage points in pixel coordinates.

◆ setImagePoints() [2/2]

void setImagePoints ( const std::vector< std::vector< PointInfo > > & x)

Set all image points.

Parameters
ximage points

◆ imagePoints() [2/2]

void imagePoints ( std::vector< std::vector< PointInfo > > & x) const

Get all image points.

Parameters
ximage points

◆ loadImagePoints()

bool loadImagePoints ( const std::string & filename)

Load point coordinates from file.

Parameters
filenamefile name
Returns
true if successful, false otherwise

◆ saveImagePoints()

bool saveImagePoints ( const std::string & filename)

Save point coordinates to file.

Parameters
filenamefile name
Returns
true if successful, false otherwise

◆ setPhantomPoints()

void setPhantomPoints ( const std::vector< vec3 > & X0,
bool centerPhantomOnOrigin = false )

Set phantom points.

Parameters
X0phantom points
centerPhantomOnOriginif true, subtracts mean of center points

◆ setInitialK()

void setInitialK ( const mat3 & K)
inline

Set initial intrinsic parameter matrix K, instead of estimating it from input data.

Parameters
Kintrinsic matrix

◆ run()

bool run ( Progress * progress = 0)

Run calibration.

Returns
true if successful, false otherwise

◆ getResults()

void getResults ( mat3 & K,
std::vector< mat3 > & R,
std::vector< vec3 > & t,
std::vector< vec3 > & X,
double & mre ) const
inline

Get calibration results.

Parameters
Kintrinsic parameters
Rrotation matrices for every frame
ttranslation vectors for every frame
Xoptimized phantom points
mremean reprojection error in pixels

◆ getDeviceParameters()

Vision::DeviceParameters getDeviceParameters ( ) const
inline

Get device parameters.

Returns
optimized device parameters

◆ configure()

void configure ( const Properties * p)
overridevirtual

Configurable interface.

Reimplemented from Configurable.

◆ configuration()

void 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 Configurable.


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