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... | |
Stores the configuration for the calibration.
This class allows for the configuration of calibrations performed using CalibratorFromAqs12Piece or CalculateCorrectionOfLaserPlaneInclinationFromAqs12Piece.
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. |
|
protectedvirtual |
IDisposable helper function.
disposing |
|
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.
piece | AQS12 piece to create configuration from. |
ArgumentNullException | When piece is null. |
CvbException | When an error during creation occurs. |
|
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.
piece | AQS12 piece to create configuration from. |
ArgumentNullException | When piece is null. |
CvbException | When an error during creation occurs. |
|
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.
|
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.
|
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.
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.