CVB.Net 15.0
CalibrationConfiguration Class Reference

Stores the configuration for the calibration. More...

Inherits INativeHandle.

Public Types

enum  ExtrinsicCalibrationModel { None = 0 , AffineMatrix = 1 , SpecificTransformationParameters = 2 }
 Enum for extrinsic calibration model More...
 

Public Member Functions

void Dispose ()
 IDisposable implementation.
 

Static Public Member Functions

static CalibrationConfiguration FromAQS12Piece (AQS12Piece piece)
 Creates a CalibrationConfiguration object from the given piece . More...
 
static CalibrationConfiguration FromAQS12PieceExtrinsic (AQS12Piece piece)
 Creates an extrinsic CalibrationConfiguration object from the given piece . More...
 

Protected Member Functions

virtual void Dispose (bool disposing)
 IDisposable helper function. More...
 

Properties

bool CalculateHomography [get, set]
 Gets/sets if homography should be calculated. More...
 
bool CalculateCorrectionOfLaserPlaneInclination [get, set]
 Gets/sets if the correction of the laser plane inclination should be calculated. More...
 
ExtrinsicCalibrationModel Model [get, set]
 Gets/sets the extrinsic calibration model.
 
bool EstimateEncoderStep [get, set]
 Gets/Sets the flag for the estimation of the encoder step (scale in Y). More...
 
AQS12Piece AQS12Piece [get]
 Get the Foundation.AQS12Piece from which this configuration was created from.
 
IntPtr Handle [get]
 Native handle of the calibrator.
 
bool IsDisposed [get]
 Gets if the native handle has been disposed.
 
- Properties inherited from INativeHandle
IntPtr Handle [get]
 The native handle of the object.
 
bool IsDisposed [get]
 Possibility to check whether the object has already been disposed of.
 

Events

NativeHandleEventDelegate ObjectDisposing
 Raised when this object is about to be disposed via the IDisposable.Dispose method. More...
 
- Events inherited from INativeHandle
NativeHandleEventDelegate ObjectDisposing
 Raised when this object is about to be disposed via the IDisposable.Dispose method.
More...
 

Detailed Description

Stores the configuration for the calibration.

This class allows for the configuration of calibrations performed using CalibratorFromAqs12Piece or CalculateCorrectionOfLaserPlaneInclinationFromAqs12Piece.

Member Enumeration Documentation

◆ ExtrinsicCalibrationModel

Enum for extrinsic calibration model

Calibrating a laser triangulation system extrinsically involves transforming an intrinsically calibrated point cloud to a world coordinate system. This transformation includes not only rotation and translation but also correction of the laser plane's inclination about the x and z axes, and scaling. The scaling in the x and z directions depends on the laser plane's inclination. If the scaling in the y direction (known as the encoder step) is unknown, it can be estimated by enabling it with EstimateEncoderStep, too. The transformation parameters can be represented by three 3D matrices. Multiplying them results in an affine 3D matrix:

and where

m11,...m33: individual elements of the affine matrix

Syx and Syz: shear parameters that correct an inclined laser plane

InclinationX and InclinationZ: inclination of the laser plane about X and Z axis

Scale.X,Y,Z: scaling factors

R: 3D rotation matrix calculated from the RotationAngles.

There are two ways to estimate the transformation: You may simply estimate the 9 individual elements of the affine matrix m11,..., m33 or estimate the parameters for rotation, scale and shear. The advantage of estimating the single elements is that the system of equations is linear and easy to solve. Whereas estimating the parameters lead to a non-linear system of equations and might not yield a reasonable result in very rare cases. However, using the non-linear system of equations models the errors more accurately and is thus recommended.

The model for the extrinsic calibration can be set in the calibration configuration object with Model or be specified directly like in function CalculateCorrectionOfLaserPlaneInclination.

Enumerator
None 

Extrinsic transformation will not be estimated.

AffineMatrix 

Elements of affine matrix m11,..., m33 are estimated.

Note: If this model is enabled, the encoder step is always estimated.

SpecificTransformationParameters 

Transformation parameters like rotation, scale and shear are estimated (recommended).

Note: When using this model, you can enable or disable the estimation of the encoder step (scale in Y) with EstimateEncoderStep.

Member Function Documentation

◆ Dispose()

virtual void Dispose ( bool  disposing)
protectedvirtual

IDisposable helper function.

Parameters
disposing

◆ FromAQS12Piece()

static CalibrationConfiguration FromAQS12Piece ( AQS12Piece  piece)
static

Creates a CalibrationConfiguration object from the given piece .

Using this calibration configuration, the homography is estimated. For the extrinsic calibration the SpecificTransformationParameters model is selected and the encoder step is estimated.

Parameters
pieceAQS12 piece to create configuration from.
Returns
Created CalibrationConfiguration.
Exceptions
ArgumentNullExceptionWhen piece is null.
CvbExceptionWhen an error during creation occurs.

◆ FromAQS12PieceExtrinsic()

static CalibrationConfiguration FromAQS12PieceExtrinsic ( AQS12Piece  piece)
static

Creates an extrinsic CalibrationConfiguration object from the given piece .

Using this calibration configuration, the homography is not estimated. For the extrinsic calibration the SpecificTransformationParameters model is selected and the encoder step is estimated.

Parameters
pieceAQS12 piece to create configuration from.
Returns
Created CalibrationConfiguration.
Exceptions
ArgumentNullExceptionWhen piece is null.
CvbExceptionWhen an error during creation occurs.

Property Documentation

◆ CalculateCorrectionOfLaserPlaneInclination

bool CalculateCorrectionOfLaserPlaneInclination
getset

Gets/sets if the correction of the laser plane inclination should be calculated.

If you enable the estimation of the correction for the laser plane inclination, the SpecificTransformationParameters model is selected for the extrinsic calibration and the encoder step will estimated. If you like to use another extrinsic calibration model, please modify Model.

◆ CalculateHomography

bool CalculateHomography
getset

Gets/sets if homography should be calculated.

Note: If the estimation of the homography is enabled, the encoder step is always estimated, too. It cannot be disabled in this case.

◆ EstimateEncoderStep

bool EstimateEncoderStep
getset

Gets/Sets the flag for the estimation of the encoder step (scale in Y).

If one of the following constraints is met, you cannot disable the estimation of the encoder step (an error will be thrown):

Whereas if None is set as extrinsic calibration model, you cannot enable the estimation of the encoder step.

Event Documentation

◆ ObjectDisposing

NativeHandleEventDelegate ObjectDisposing

Raised when this object is about to be disposed via the IDisposable.Dispose method.

This event is raised right before this object is disposed. The dispose itself cannot be canceled.