![]() |
ImFusion SDK 4.3
|
#include <ImFusion/Vision/MarkerHandEyeCalibrationAlgorithm.h>
Performs hand eye calibration of a sensor that provides tracking information (called "tracker") to a camera that captured images of a marker board (called "camera") More...
Inheritance diagram for MarkerHandEyeCalibrationAlgorithm:Performs hand eye calibration of a sensor that provides tracking information (called "tracker") to a camera that captured images of a marker board (called "camera")
The tracking information associated with each frame in the TrackedSharedImageSet is assumed to be correct, no further tracking sequence alignment is performed
Public Member Functions | |
| MarkerHandEyeCalibrationAlgorithm (TrackedSharedImageSet *tis) | |
| Construct from a TrackedSharedImageSet combining the camera images and the tracking information. | |
| MarkerHandEyeCalibrationAlgorithm (SharedImageSet *is, TrackingSequence *ts) | |
| Construct from image and tracking information. | |
| void | setMarkerConfig (const MarkerConfiguration &config) |
| Set marker configuration. | |
| MarkerConfiguration & | markerConfig () |
| void | setMarkerMaxReprojError (double v) |
| Set the maximum reprojection error in pixels for marker detection. | |
| double | markerMaxReprojError () const |
| void | setMarkerMinDetections (int v) |
| Set the minimum number of points to detect per marker. | |
| double | markerMinDetections () const |
| void | setPoseInlierThreshold (double v) |
| Set maximum distance in terms of combined distance and euler angle norm for pose-pairs to use in hand-eye calibration. | |
| double | poseInlierThreshold () const |
| void | setMinRelativeAngle (double v) |
| Set minimum relative angle for pose-pairs to use in hand-eye calibration. | |
| double | minRelativeAngle () const |
| void | setRefineNonLinear (bool v) |
| Set whether to refine the initial hand-eye calibration. | |
| bool | refineNonLinear () const |
| void | setRefineMRE (bool v) |
| Refine MRE instead of pose error. | |
| bool | refineMRE () const |
| void | setUseRANSAC (bool v) |
| Set whether to use the RANSAC version of hand-eye calibration. | |
| bool | useRANSAC () const |
| void | setApplyHandEyeCalibToInput (bool v) |
| Set whether to apply the computed hand-eye calibration to the input tracked shared image set. | |
| bool | applyHandEyeCalibToInput () |
| void | setRefineTimeOffset (bool v) |
| Refine the timeoffset (only done if refineMRE is also true) | |
| bool | refineTimeOffset () |
| void | compute () override |
| Run calibration. | |
| std::vector< std::vector< vec2 > > | detectedPointsCamera () const |
| Returns the 2D image positions of the detected calibration target points for each frame. The projection is done using the estimated camera pose. | |
| double | reprojectedPointsCamera (std::vector< std::vector< vec2 > > *reprojectedPoints=nullptr) const |
| Returns the 2D image positions of the reprojected calibration target points for each frame and an MRE. The projection is done using the estimated camera pose. | |
| double | reprojectedPointsHandEye (std::vector< std::vector< vec2 > > *reprojectedPoints=nullptr) const |
| Returns the 2D image positions of the reprojected calibration target points for each frame and an MRE. The projection is done using the computed hand-eye calibration and registration. | |
| double | reprojectedPointsHandEye (const mat4 &camToTrackerTarget, const mat4 &calibToTracker, double timeOffset, std::vector< std::vector< vec2 > > *reprojectedPoints) const |
| Returns the 2D image positions of the reprojected calibration target points for each frame and an MRE. The projection is done using the provided hand-eye calibration, registration and time offset. | |
| std::pair< double, double > | meanHandEyePoseError (const mat4 &camToTrackerTarget, const mat4 &calibToTracker, double timeOffset) const |
| Returns average angle error in degrees and average translation error given the provided hand-eye calibration, registration and time offset. | |
| const TrackingSequence * | tsCamera (bool used) const |
| Get camera tracking sequence. When used is set to true, the stream will only contain the samples which are used in the hand-eye calibration. | |
| const TrackingSequence * | tsTracker (bool used) const |
| Get tracker tracking sequence. When used is set to true, the stream will only contain the samples which are used in the hand-eye calibration. | |
| TrackedSharedImageSet * | images () const |
| Return internally used tracked shared image set. | |
| SharedImageSet * | inputImages () const |
| Return input images. Returns nullptr if the algorithm was constructed with a TrackedSharedImageSet. | |
| mat4 | camToTrackerTarget () const |
| Get hand-eye calibration matrix (camera to camera tracker target) | |
| mat4 | calibToTracker () const |
| Get registration matrix (calibration target to tracker) | |
| double | timeOffset () const |
| Get the time offset used for the hand-eye calibration. | |
| 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. | |
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. | |
| 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 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 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 | |
| Parameter< HandEyeCalibrationAlgorithm::CalibrationType > | p_calibrationType |
| Calibration type, either EyeInHand or EyeOnBase. | |
| Parameter< HandEyeCalibrationAlgorithm::StreamInfo > | p_streamInfoTracker |
| Direction of the transformation of the tracking sequence. | |
| Parameter< bool > | p_matchTimestamps |
| Match camera and tracker frames by timestamps, otherwise match by frame index. | |
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. | |
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... | |
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. | |
| 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 Configurable | |
| std::vector< Param > | m_params |
| List of all registered Parameter and SubProperty instances. | |
|
overridevirtual |
Run calibration.
Implements Algorithm.
|
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 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 Configurable.
| Parameter<HandEyeCalibrationAlgorithm::CalibrationType> p_calibrationType |
Calibration type, either EyeInHand or EyeOnBase.
| Parameter<HandEyeCalibrationAlgorithm::StreamInfo> p_streamInfoTracker |
Direction of the transformation of the tracking sequence.
| Parameter<bool> p_matchTimestamps |
Match camera and tracker frames by timestamps, otherwise match by frame index.