Image Manager (CVCore3D.dll) 14.0
Point Cloud Calibration

Functions to create, load and apply calibration to range maps and PointCloud objects. More...

Data Structures

struct  CVC3DSensorSettings
 Camera sensor settings. More...
 

Typedefs

typedef void * CVC3DCALIBRATOR
 Handle to calibration object. More...
 

Enumerations

enum  CVC3DCalibratorType {
  CVC3DC_Unknown = 0 , CVC3DC_Factors , CVC3DC_LaserPlaneMatrixH , CVC3DC_LaserPlanePolynom ,
  CVC3DC_LaserPlaneZigZag , CVC3DC_LaserPlaneAT , CVC3DC_MatrixH , CVC3DC_Pinhole
}
 
enum  CVC3DSensorPixelPosition { CVC3DSPP_Absolute = 0 , CVC3DSPP_Relative }
 
enum  CVC3DSensorPixelsMirrored { CVC3DSPM_None = 0 << 0 , CVC3DSPM_X = 1 << 0 , CVC3DSPM_Y = 1 << 1 , CVC3DSPM_XY = 3 }
 

Functions

cvbres_t CVC3DATCalibratorGetSensorRoi (CVC3DCALIBRATOR Calibrator, cvbdim_t &OffsetLeft, cvbdim_t &OffsetTop, cvbdim_t &Width, cvbdim_t &Height)
 Gets the current AT sensor ROI from the given Calibrator. More...
 
cvbres_t CVC3DATCalibratorGetYFactor (CVC3DCALIBRATOR Calibrator, double &YFactor)
 Gets the current YFactor from the given Calibrator. More...
 
cvbres_t CVC3DATCalibratorGetZFactor (CVC3DCALIBRATOR Calibrator, double &ZFactor)
 Gets the current ZFactor from the given Calibrator. More...
 
cvbres_t CVC3DATCalibratorSetSensorRoi (CVC3DCALIBRATOR Calibrator, cvbdim_t OffsetLeft, cvbdim_t OffsetTop, cvbdim_t Width, cvbdim_t Height)
 Sets the sensor ROI to an AT Calibrator. More...
 
cvbres_t CVC3DATCalibratorSetYFactor (CVC3DCALIBRATOR Calibrator, double YFactor)
 Sets the YFactor to the given AT Calibrator. More...
 
cvbres_t CVC3DATCalibratorSetZFactor (CVC3DCALIBRATOR Calibrator, double ZFactor)
 Sets the ZFactor to the given AT Calibrator. More...
 
cvbres_t CVC3DCalibratorGetExtrinsicMatrix (CVC3DCALIBRATOR Calibrator, CVC3DTransformation &Transformation)
 Gets the extrinsic transformation matrix of the Calibrator. More...
 
cvbres_t CVC3DCalibratorGetRangeMapIgnoreValue (CVC3DCALIBRATOR Calibrator, double &Value)
 Gets the current ignore Value in a range map from the given Calibrator. More...
 
cvbres_t CVC3DCalibratorGetSensorRoi (CVC3DCALIBRATOR Calibrator, cvbdim_t &OffsetLeft, cvbdim_t &OffsetTop, cvbdim_t &Width, cvbdim_t &Height)
 Gets the current sensor ROI (region of interest) from the given Calibrator. More...
 
cvbres_t CVC3DCalibratorGetSettings (CVC3DCALIBRATOR Calibrator, CVC3DSensorSettings &SensorSettings, double &EncoderStep)
 Gets the default sensor settings from the given Calibrator. More...
 
cvbres_t CVC3DCalibratorSetCorrectionOfLaserPlaneInclination (CVC3DCALIBRATOR Calibrator, const CVC3DTransformation &IntrinsicAffineMatrix)
 Sets the correction of the laser plane inclination of to Calibrator described by an affine transformation matrix and a translation. More...
 
cvbres_t CVC3DCalibratorSetExtrinsicMatrix (CVC3DCALIBRATOR Calibrator, const CVC3DTransformation &Transformation)
 Sets the extrinsic transformation matrix of the Calibrator. More...
 
cvbres_t CVC3DCalibratorSetRangeMapIgnoreValue (CVC3DCALIBRATOR Calibrator, double Value)
 Sets a Value to ignore in a range map to the given Calibrator. More...
 
cvbres_t CVC3DCalibratorSetSensorRoi (CVC3DCALIBRATOR Calibrator, cvbdim_t OffsetLeft, cvbdim_t OffsetTop, cvbdim_t Width, cvbdim_t Height)
 Sets the current sensor ROI (region of interest) from the given Calibrator. More...
 
cvbres_t CVC3DCreateCalibratedPointCloudFromRangeMap (OBJ RangeMapImage, CVC3DCALIBRATOR Calibrator, cvbval_t Flags, CVCOMPOSITE &PointCloud)
 Creates a new calibrated Cartesian 3D PointCloud from the given 2½D RangeMapImage and Calibrator data. More...
 
cvbres_t CVC3DCreateCalibratedPointCloudFromRangeMapWithSettings (OBJ RangeMapImage, CVC3DCALIBRATOR Calibrator, const CVC3DSensorSettings &SensorSettings, double EncoderStep, cvbval_t Flags, CVCOMPOSITE &PointCloud)
 Creates a new calibrated Cartesian 3D PointCloud from the given 2½D RangeMapImage and Calibrator data considering sensor settings. More...
 
cvbres_t CVC3DCreateFactorsCalibrator (CVC3DFactors Factors, CVC3DCALIBRATOR &Calibrator)
 Creates a simple calibrator based on factors. More...
 
cvbres_t CVC3DCreateMatrixHCalibrator (const CVC3DMatrixH M, CVC3DCALIBRATOR &Calibrator)
 Creates a calibrator based on a general homography matrix M. More...
 
cvbres_t CVC3DCreatePinholeCameraCalibrator (double Fx, double Fy, double Sz, double CPx, double CPy, CVC3DCALIBRATOR &Calibrator)
 Creates a Calibrator object for reconstructing a range map via the pinhole camera model. More...
 
cvbres_t CVC3DGetCalibratorType (CVC3DCALIBRATOR Calibrator, CVC3DCalibratorType &Type)
 Gets the calibrator type. More...
 
cvbres_t CVC3DLoadCalibrator (const char *FileName, CVC3DCALIBRATOR &Calibrator)
 Loads a 3D calibration file (ASCII string version). More...
 
cvbres_t CVC3DLoadCalibratorW (const wchar_t *FileName, CVC3DCALIBRATOR &Calibrator)
 Loads a 3D calibration file (Unicode string version). More...
 

Detailed Description

Functions to create, load and apply calibration to range maps and PointCloud objects.

Additional creation functions can be found in the CVMetric library. This library only provides the simple CVC3DCreateFactorsCalibrator and CVC3DCreateMatrixHCalibrator. For available calculations of the CVC3DMatrixH also see the CVMetric library.

Typedef Documentation

◆ CVC3DCALIBRATOR

Handle to calibration object.

The exact calibration performed depends on the created/loaded object. It is applied via CVC3DCreateCalibratedPointCloudFromRangeMap.

Enumeration Type Documentation

◆ CVC3DCalibratorType

Enumerator
CVC3DC_Unknown 

Calibrator is unknown or unsupported.

CVC3DC_Factors 

Factors (x,y,z) calibrator.

CVC3DC_LaserPlaneMatrixH 

Laserplane calibrator with factors, homogeneous xz matrix and optional Brown-Conrady parameters.

CVC3DC_LaserPlanePolynom 

Laserplane calibrator with factors, homogeneous xz matrix, polinomial coefficients and optional Brown-Conrady parameters.

CVC3DC_LaserPlaneZigZag 

Laserplane calibrator with factors, polynomial coefficients and lense correction (center point and radial coefficients).

CVC3DC_LaserPlaneAT 

Laserplane calibrator provided by cameras from Automation Technology (AT) including factor for y and z component, coordinate center, homogeneous xz matrix, Brown-Conrady parameters and polynomial coefficients.

CVC3DC_MatrixH 

Calibrator with homogeneous 4x4 matrix.

CVC3DC_Pinhole 

Pinhole calibrator with focal point of x and y component, z divisor and center point.

◆ CVC3DSensorPixelPosition

Enumerator
CVC3DSPP_Absolute 

Scaled rangemap values represent absolute pixel position on sensor.

CVC3DSPP_Relative 

Scaled rangemap values represent relative pixel position to given offset on sensor.

◆ CVC3DSensorPixelsMirrored

Enumerator
CVC3DSPM_None 

No mirroring is applied.

CVC3DSPM_X 

Sensor pixel values are mirrored in X (or denoted by u), so that the columns of the range map will be flipped.

CVC3DSPM_Y 

Sensor pixel values are mirrored in Y (or denoted by v), so that the range map pixel values will be flipped.

CVC3DSPM_XY 

Sensor pixel values are mirrored in X and Y.

Function Documentation

◆ CVC3DATCalibratorGetSensorRoi()

cvbres_t CVC3DATCalibratorGetSensorRoi ( CVC3DCALIBRATOR  Calibrator,
cvbdim_t &  OffsetLeft,
cvbdim_t &  OffsetTop,
cvbdim_t &  Width,
cvbdim_t &  Height 
)

Gets the current AT sensor ROI from the given Calibrator.

Note
This parameter is only used with AT (Automation Technology) compact sensors. Therefore this function needs a calibration object created by an calibration file (only xml) provided by AT compact sensors.
Width and Height may be negative. A negative sign means, that column values of the rangemap and height values are mirrored respectively.
Parameters
[in]CalibratorCalibrator object to get sensor ROI from.
[out]OffsetLeftVariable to receive column offset.
[out]OffsetTopVariable to receive row offset.
[out]WidthVariable to receive width of sensor ROI.
[out]HeightVariable to receive height of senosor ROI.
Returns
  • #CVC_ERROR (#CVC_E_OK) on success
  • #CVC_ERROR (#CVC_E_NOTPRESENT) if the sensor ROI is not set in the calibrator object
  • #CVC_ERROR (#CVC_E_WRONGOBJECT) if Calibrator is not a valid AT calibrator
See also
CVC3DCalibratorGetSettings

◆ CVC3DATCalibratorGetYFactor()

cvbres_t CVC3DATCalibratorGetYFactor ( CVC3DCALIBRATOR  Calibrator,
double &  YFactor 
)

Gets the current YFactor from the given Calibrator.

///

Note
This parameter is only used with AT (Automation Technology) compact sensors. Therefore this function needs a calibration object created by an calibration file (xml) provided by AT compact sensors. The YFactor is stored under cx3d.extrinsic.Sy in the xml file.
Parameters
[in]CalibratorCalibrator object to get YFactor from.
[out]YFactorVariable to receive the value.
Returns
  • #CVC_ERROR (#CVC_E_OK) on success
  • #CVC_ERROR (#CVC_E_WRONGOBJECT) if Calibrator is not a valid AT calibrator
See also
CVC3DCreateCalibratedPointCloudFromRangeMapWithSettings, CVC3DCalibratorGetSettings

◆ CVC3DATCalibratorGetZFactor()

cvbres_t CVC3DATCalibratorGetZFactor ( CVC3DCALIBRATOR  Calibrator,
double &  ZFactor 
)

Gets the current ZFactor from the given Calibrator.

Note
This parameter is only used with AT (Automation Technology) compact sensors. Therefore this function needs a calibration object created by an calibration file (xml) provided by AT compact sensors. The ZFactor is stored under cx3d.intrinsic.rangeScale in the xml file.
Parameters
[in]CalibratorCalibrator object to get ZFactor from.
[out]ZFactorVariable to receive the value.
Returns
  • #CVC_ERROR (#CVC_E_OK) on success
  • #CVC_ERROR (#CVC_E_WRONGOBJECT) if Calibrator is not a valid AT calibrator
See also
CVC3DCreateCalibratedPointCloudFromRangeMapWithSettings, CVC3DCalibratorGetSettings

◆ CVC3DATCalibratorSetSensorRoi()

cvbres_t CVC3DATCalibratorSetSensorRoi ( CVC3DCALIBRATOR  Calibrator,
cvbdim_t  OffsetLeft,
cvbdim_t  OffsetTop,
cvbdim_t  Width,
cvbdim_t  Height 
)

Sets the sensor ROI to an AT Calibrator.

Note
This parameter is only used with AT (Automation Technology) compact sensors. Therefore this function needs a calibration object created by an calibration file (only xml) provided by AT compact sensors. In addition the parameter sensor size must be set to the Calibrator, in order to check the validity of the sensor ROI. A valid sensor ROI has to meet the following constraints:
  • The offsets must be equal or greater zero.
  • The offsets must be smaller than the sensor size.
  • The difference between Width and OffsetLeft must be equal or smaller than the width of the sensor (same for Height and OffsetTop).
Width and Height may be negative. A negative sign means, that column values of the rangemap and height values are mirrored respectively.
Parameters
[in]CalibratorCalibrator object to set sensor ROI on.
[in]OffsetLeftColumn offset.
[in]OffsetTopRow offset.
[in]WidthWidth of sensor ROI.
[in]HeightHeight of senosor ROI.
Returns
  • #CVC_ERROR (#CVC_E_OK) on success
  • #CVC_ERROR (#CVC_E_NOTPRESENT) if the parameter sensor size is not given in the Calibrator
  • #CVC_ERROR (#CVC_E_PARAMETER) if the given sensor roi is not valid.
  • #CVC_ERROR (#CVC_E_WRONGOBJECT) if Calibrator is not a valid AT calibrator
See also
CVC3DCreateCalibratedPointCloudFromRangeMapWithSettings, CVC3DCalibratorGetSettings

◆ CVC3DATCalibratorSetYFactor()

cvbres_t CVC3DATCalibratorSetYFactor ( CVC3DCALIBRATOR  Calibrator,
double  YFactor 
)

Sets the YFactor to the given AT Calibrator.

Note
This parameter is only used with AT (Automation Technology) compact sensors. Therefore this function needs a calibration object created by an calibration file (only xml) provided by AT compact sensors.
Parameters
[in]CalibratorCalibrator object to set YFactor on.
[in]YFactorValue.
Returns
  • #CVC_ERROR (#CVC_E_OK) on success
  • #CVC_ERROR (#CVC_E_WRONGOBJECT) if Calibrator is not a valid AT calibrator
See also
CVC3DCreateCalibratedPointCloudFromRangeMapWithSettings, CVC3DCalibratorGetSettings

◆ CVC3DATCalibratorSetZFactor()

cvbres_t CVC3DATCalibratorSetZFactor ( CVC3DCALIBRATOR  Calibrator,
double  ZFactor 
)

Sets the ZFactor to the given AT Calibrator.

Note
This parameter is only used with AT (Automation Technology) compact sensors. Therefore this function needs a calibration object created by an calibration file (only xml) provided by AT compact sensors.
Parameters
[in]CalibratorCalibrator object to set ZFactor on.
[in]ZFactorValue.
Returns
  • #CVC_ERROR (#CVC_E_OK) on success
  • #CVC_ERROR (#CVC_E_WRONGOBJECT) if Calibrator is not a valid AT calibrator
See also
CVC3DCreateCalibratedPointCloudFromRangeMapWithSettings, CVC3DCalibratorGetSettings

◆ CVC3DCalibratorGetExtrinsicMatrix()

cvbres_t CVC3DCalibratorGetExtrinsicMatrix ( CVC3DCALIBRATOR  Calibrator,
CVC3DTransformation Transformation 
)

Gets the extrinsic transformation matrix of the Calibrator.

Parameters
[in]CalibratorCalibrator to get the extrinsic transformation of.
[out]TransformationVariable to receive the extrinsic transformation matrix.
Returns
  • #CVC_ERROR (#CVC_E_OK) on success
  • #CVC_ERROR (#CVC_E_WRONGOBJECT) if Calibrator is not a valid object.

◆ CVC3DCalibratorGetRangeMapIgnoreValue()

cvbres_t CVC3DCalibratorGetRangeMapIgnoreValue ( CVC3DCALIBRATOR  Calibrator,
double &  Value 
)

Gets the current ignore Value in a range map from the given Calibrator.

Parameters
[in]CalibratorCalibrator object to get ignore value from.
[out]ValueVariable to receive the currently set ignore value; NaN if none is set.
Returns
  • #CVC_ERROR (#CVC_E_OK) on success
  • #CVC_ERROR (#CVC_E_WRONGOBJECT) if Calibrator is not a valid object.
See also
CVC3DCalibratorSetRangeMapIgnoreValue

◆ CVC3DCalibratorGetSensorRoi()

cvbres_t CVC3DCalibratorGetSensorRoi ( CVC3DCALIBRATOR  Calibrator,
cvbdim_t &  OffsetLeft,
cvbdim_t &  OffsetTop,
cvbdim_t &  Width,
cvbdim_t &  Height 
)

Gets the current sensor ROI (region of interest) from the given Calibrator.

Note
Width and Height may be negative. A negative sign means, that column values of the rangemap and height values are mirrored respectively.
Parameters
[in]CalibratorCalibrator object to get sensor ROI from.
[out]OffsetLeftVariable to receive column offset.
[out]OffsetTopVariable to receive row offset.
[out]WidthVariable to receive width of sensor ROI.
[out]HeightVariable to receive height of senosor ROI.
Returns
  • #CVC_ERROR (#CVC_E_OK) on success
  • #CVC_ERROR (#CVC_E_NOTPRESENT) if the sensor ROI is not set in the calibrator object
  • #CVC_ERROR (#CVC_E_WRONGOBJECT) if Calibrator is not a valid calibrator
See also
CVC3DCreateCalibratedPointCloudFromRangeMapWithSettings, CVC3DCalibratorGetSettings

◆ CVC3DCalibratorGetSettings()

cvbres_t CVC3DCalibratorGetSettings ( CVC3DCALIBRATOR  Calibrator,
CVC3DSensorSettings SensorSettings,
double &  EncoderStep 
)

Gets the default sensor settings from the given Calibrator.

Note
This function can only be used calibrators, where CVC3DCalibratorType is CVC3DC_LaserPlaneZigZag or CVC3DC_LaserPlaneAT.

For a detailed description of the settings see CVC3DSensorSettings.

Parameters
[in]CalibratorCalibrator object to get sensor settings from.
[out]SensorSettingsSensor settings CVC3DSensorSettings.
[out]EncoderStepEncoder step.
Returns
  • #CVC_ERROR (#CVC_E_OK) on success
  • #CVC_ERROR (#CVC_E_NOTPRESENT) if the sensor settings are not set in the calibrator object
  • #CVC_ERROR (#CVC_E_WRONGOBJECT) if Calibrator is not a valid calibrator
See also
CVC3DCreateCalibratedPointCloudFromRangeMapWithSettings

◆ CVC3DCalibratorSetCorrectionOfLaserPlaneInclination()

cvbres_t CVC3DCalibratorSetCorrectionOfLaserPlaneInclination ( CVC3DCALIBRATOR  Calibrator,
const CVC3DTransformation IntrinsicAffineMatrix 
)

Sets the correction of the laser plane inclination of to Calibrator described by an affine transformation matrix and a translation.

Since
Common Vision Blox 14.00.000
Parameters
[in]CalibratorCalibrator to set the intrinsic affine matrix and translation vector in.
[in]IntrinsicAffineMatrixAffine matrix and translation vector to set to the Calibrator.
Returns
  • #CVC_ERROR (#CVC_E_OK) on success
  • #CVC_ERROR (#CVC_E_PARAMETER) if IntrinsicAffineMatrix contains a NaN value.
  • #CVC_ERROR (#CVC_E_WRONGOBJECT) if Calibrator is not a valid object.

◆ CVC3DCalibratorSetExtrinsicMatrix()

cvbres_t CVC3DCalibratorSetExtrinsicMatrix ( CVC3DCALIBRATOR  Calibrator,
const CVC3DTransformation Transformation 
)

Sets the extrinsic transformation matrix of the Calibrator.

Parameters
[in]CalibratorCalibrator to set the extrinsic transformation in.
[in]TransformationMatrix to use for extrinsic transformation.
Returns
  • #CVC_ERROR (#CVC_E_OK) on success
  • #CVC_ERROR (#CVC_E_PARAMETER) if Transformation contains a NaN value.
  • #CVC_ERROR (#CVC_E_WRONGOBJECT) if Calibrator is not a valid object.

◆ CVC3DCalibratorSetRangeMapIgnoreValue()

cvbres_t CVC3DCalibratorSetRangeMapIgnoreValue ( CVC3DCALIBRATOR  Calibrator,
double  Value 
)

Sets a Value to ignore in a range map to the given Calibrator.

If a z-value in a range map equals the Value its confidence is set to 0.

Note
If no confidence plane is selected in the creation flags of CVC3DCreateCalibratedPointCloudFromRangeMap, one will be generated nevertheless if Value is unequal to NaN.
Parameters
[in]CalibratorCalibrator object to set ignore value on.
[in]ValueNew value to ignore in calibration; NaN to use all values.
Returns
  • #CVC_ERROR (#CVC_E_OK) on success
  • #CVC_ERROR (#CVC_E_WRONGOBJECT) if Calibrator is not a valid object.
See also
CVC3DCalibratorGetRangeMapIgnoreValue, CVC3DCreateCalibratedPointCloudFromRangeMap

◆ CVC3DCalibratorSetSensorRoi()

cvbres_t CVC3DCalibratorSetSensorRoi ( CVC3DCALIBRATOR  Calibrator,
cvbdim_t  OffsetLeft,
cvbdim_t  OffsetTop,
cvbdim_t  Width,
cvbdim_t  Height 
)

Sets the current sensor ROI (region of interest) from the given Calibrator.

Note
Width and Height may be negative. A negative sign means, that column values of the rangemap and height values are mirrored respectively. A valid sensor ROI has to meet the following constraints:
  • The offsets must be equal or greater zero.
  • The offsets must be smaller than the sensor size.
  • The difference between Width and OffsetLeft must be equal or smaller than the width of the sensor (same for Height and OffsetTop).
Parameters
[in]CalibratorCalibrator object to set sensor ROI on.
[in]OffsetLeftColumn offset.
[in]OffsetTopRow offset.
[in]WidthWidth of sensor ROI.
[in]HeightHeight of senosor ROI.
Returns
  • #CVC_ERROR (#CVC_E_OK) on success
  • #CVC_ERROR (#CVC_E_PARAMETER) if the given sensor roi is not valid.
  • #CVC_ERROR (#CVC_E_WRONGOBJECT) if Calibrator is not a valid calibrator
See also
CVC3DCreateCalibratedPointCloudFromRangeMapWithSettings, CVC3DCalibratorGetSettings

◆ CVC3DCreateCalibratedPointCloudFromRangeMap()

cvbres_t CVC3DCreateCalibratedPointCloudFromRangeMap ( OBJ  RangeMapImage,
CVC3DCALIBRATOR  Calibrator,
cvbval_t  Flags,
CVCOMPOSITE PointCloud 
)

Creates a new calibrated Cartesian 3D PointCloud from the given 2½D RangeMapImage and Calibrator data.

This function simply accesses the first plane of the given RangeMapImage and interprets the pixel data as depth information (z). The resulting point cloud will have at most ImageWidth(RangeMapImage) * ImageHeight(RangeMapImage) points. Each of these generated points will be passed through the Calibrator object.

The following BytesPerPixel as input for signed and unsigned integer cvbdatatype_t values are supported: 1, 2, 4, and 8. For floating point cvbdatatype_t values only 4 and 8 BytesPerPixel are supported.

Depending on the calibration method the resulting point cloud is created via CVC3DCreateSparsePointCloud or CVC3DCreateDensePointCloud.

Note
This function does not take the RangeMapImage coordinate system into account. Note also, that if the output point cloud is dense, the confidence layer is always available. Background range map pixels are set non-confident. In case of a sparse point cloud, points representing background values and also the confidence layer are removed (except the user explicitly wants to keep the confidence layer which can be fixed via the point cloud flags).
Attention
If you are using an AT or ZigZag calibrator, the camera settings applied during the acquisition of the range map have to be known. Default settings are read from the calibrator loaded from a calibration file. If the actual settings differ from the default ones, the user has to set them and create the calibrated point cloud via function CVC3DCreateCalibratedPointCloudFromRangeMapWithSettings. You can get and check the default settings with CVC3DCalibratorGetSettings.
If this function returns successfully you need to release the returned PointCloud via ReleaseObject if not needed anymore.
Parameters
[in]RangeMapImageHandle of 2½D image.
[in]CalibratorCalibration object to apply.
[in]FlagsFlags CVC3DPointCloudFlags specifying the kind of point cloud to be created.
[out]PointCloudVariable to receive the handle of the point cloud object as a CVCOMPOSITE.
Returns
  • #CVC_ERROR (#CVC_E_OK) on success
  • #CVC_ERROR (#CVC_E_PARAMETER) if Flags have unknown combination.
  • #CVC_ERROR (#CVC_E_WRONGOBJECT) if RangeMapImage is neither a IImageVPA nor IPlaneEnum object or if Calibrator object is invalid.
  • #CVC_ERROR (#CVC_E_MEMORY) if not enough memory was available to create the point cloud.
See also
CVC3DCreateCalibratedPointCloudFromRangeMapWithSettings, CVC3DCreateDensePointCloudFromRangeMap, CVC3DCreateRangeMapFromPointCloud

◆ CVC3DCreateCalibratedPointCloudFromRangeMapWithSettings()

cvbres_t CVC3DCreateCalibratedPointCloudFromRangeMapWithSettings ( OBJ  RangeMapImage,
CVC3DCALIBRATOR  Calibrator,
const CVC3DSensorSettings SensorSettings,
double  EncoderStep,
cvbval_t  Flags,
CVCOMPOSITE PointCloud 
)

Creates a new calibrated Cartesian 3D PointCloud from the given 2½D RangeMapImage and Calibrator data considering sensor settings.

Note, that the calibration parameters always refer to the whole sensor (with no mirroring of the pixel coordinates). If the camera settings indicate, that a sensor ROI is given or pixel coordinates are mirrored, the range map values will be transformed to the sensor coordinates before applying the calibration parameters. If the user acquires the range map to be calibrated and uses sensor settings different from the default ones, he has to set them correctly via this function.

If you only like to change one or two settings and do not want to care about the other parameters, you can get the default settings via function CVC3DCalibratorGetSettings, change the relevant settings within the struct and pass it to CVC3DCreateCalibratedPointCloudFromRangeMapWithSettings.

If you have not changed your camera settings, please use function CVC3DCreateCalibratedPointCloudFromRangeMap. A detailed documentation about the point cloud creation can also be found there.

For a detailed description of the sensor settings for specific cameras see the CVB online help chapter "Theory of Operation -> Image Manager -> CVB Technology -> 3D Functionality -> Create Point Cloud from Range Map -> Create calibrated point cloud with modified sensor settings".

Note
This function only works for AT and ZigZag calibrators. To check your calibrator type, use function CVC3DGetCalibratorType.
If this function returns successfully you need to release the returned PointCloud via ReleaseObject if not needed anymore.
Parameters
[in]RangeMapImageHandle of 2½D image.
[in]CalibratorCalibration object to apply.
[in]SensorSettingsSensor settings CVC3DSensorSettings set aquiring RangeMapImage.
[in]EncoderStepEncoder step.
[in]FlagsFlags CVC3DPointCloudFlags specifying the kind of point cloud to be created.
[out]PointCloudVariable to receive the handle of the point cloud object as a CVCOMPOSITE.
Returns
  • #CVC_ERROR (#CVC_E_OK) on success
  • #CVC_ERROR (#CVC_E_PARAMETER) if Flags have unknown combination.
  • #CVC_ERROR (#CVC_E_WRONGOBJECT) if RangeMapImage is neither a IImageVPA nor IPlaneEnum object or if Calibrator object is neither an AT Calibrator or ZigZag Calibrator or invalid.
  • #CVC_ERROR (#CVC_E_MEMORY) if not enough memory was available to create the point cloud.
See also
CVC3DCreateRangeMapFromPointCloud, CVC3DCalibratorGetSettings

◆ CVC3DCreateFactorsCalibrator()

cvbres_t CVC3DCreateFactorsCalibrator ( CVC3DFactors  Factors,
CVC3DCALIBRATOR Calibrator 
)

Creates a simple calibrator based on factors.

You can use this calibrator for pre-calibrated range maps where you need to adjust the scale.

Note
Using this CVC3DCALIBRATOR is effectively the same as calling CVC3DCreateDensePointCloudFromRangeMap (and thus returns a dense point cloud).
If this function returns successfully you need to release the returned Calibrator via ReleaseObject if not needed anymore.
Parameters
[in]FactorsTransformation factor to apply to each coordinate.
[out]CalibratorVariable to receive the resulting calibrator object.
Returns
  • #CVC_ERROR (#CVC_E_OK) on success
  • #CVC_ERROR (#CVC_E_PARAMETER) if Factors contain NaN
  • #CVC_ERROR (#CVC_E_MEMORY) if not enough memory was available to create the Calibrator.
See also
CVC3DCreateCalibratedPointCloudFromRangeMap, CVC3DCreateDensePointCloudFromRangeMap

◆ CVC3DCreateMatrixHCalibrator()

cvbres_t CVC3DCreateMatrixHCalibrator ( const CVC3DMatrixH  M,
CVC3DCALIBRATOR Calibrator 
)

Creates a calibrator based on a general homography matrix M.

You can use this calibrator if the pinhole camera model for calibration suffices.

Note
Using the CVC3DCALIBRATOR is effectively the same as calling CVC3DTransformPointCloudH on a point cloud created by CVC3DCreateDensePointCloudFromRangeMap with factors { 1, 1, 1 }. Thus this calibrator returns a sparse point cloud.
If this function returns successfully you need to release the returned Calibrator via ReleaseObject if not needed anymore.
Parameters
[in]Mhomogeneous transformation matrix.
[out]CalibratorVariable to receive the resulting calibrator object.
Returns
  • #CVC_ERROR (#CVC_E_OK) on success
  • #CVC_ERROR (#CVC_E_PARAMETER) if M is nullptr or contains NaN
  • #CVC_ERROR (#CVC_E_MEMORY) if not enough memory was available to create the Calibrator.
See also
CVC3DCreateCalibratedPointCloudFromRangeMap, CVC3DCreateSparsePointCloud

◆ CVC3DCreatePinholeCameraCalibrator()

cvbres_t CVC3DCreatePinholeCameraCalibrator ( double  Fx,
double  Fy,
double  Sz,
double  CPx,
double  CPy,
CVC3DCALIBRATOR Calibrator 
)

Creates a Calibrator object for reconstructing a range map via the pinhole camera model.

Parameters
[in]FxFocal length x component.
[in]FyFocal length y component.
[in]SzZ divisor (applied to every z value in the range map).
[in]CPxCenter point x component.
[in]CPyCenter point y component.
[out]CalibratorVariable to receive the resulting calibrator object.
Returns
  • #CVC_ERROR (#CVC_E_OK) on success
  • #CVC_ERROR (#CVC_E_PARAMETER) if a parameter is NaN.
  • #CVC_ERROR (#CVC_E_DIVISIONBYZERO) if Sz is 0.
  • #CVC_ERROR (#CVC_E_MEMORY) if not enough memory was available to create the Calibrator.
See also
CVC3DCreateCalibratedPointCloudFromRangeMap,

◆ CVC3DGetCalibratorType()

cvbres_t CVC3DGetCalibratorType ( CVC3DCALIBRATOR  Calibrator,
CVC3DCalibratorType Type 
)

Gets the calibrator type.

Parameters
[in]CalibratorCalibration object to be checked.
[out]TypeCVC3DCalibratorType of Calibrator.
Returns
  • #CVC_ERROR (#CVC_E_OK) on success
  • #CVC_ERROR (#CVC_E_WRONGOBJECT) if Calibrator object is invalid.
See also
CVC3DCalibratorType for additional calibrator information.

◆ CVC3DLoadCalibrator()

cvbres_t CVC3DLoadCalibrator ( const char *  FileName,
CVC3DCALIBRATOR Calibrator 
)

Loads a 3D calibration file (ASCII string version).

The type of file to be loaded is determined by the FileName extension and the file's contents. The following file formats are supported:

Name Extension(s)
CVB Calibration file json
AT Calibration file dat, xml

For Automation Technology (AT) dat files version 1 (homography only) and version 2 (added polynomial) are supported. For xml files the homography is required. Brown/Conrady, polynomial and binning mode are also supported.

Note
If this function returns successfully you need to release the returned Calibrator via ReleaseObject if not needed anymore.
Parameters
[in]FileNameFull path to the file to load.
[out]CalibratorVariable to receive the loaded calibrator object handle.
Returns
  • #CVC_ERROR (#CVC_E_OK) on success
  • #CVC_ERROR (#CVC_E_PARAMETER) if FileName is nullptr.
  • #CVC_ERROR (#CVC_E_FILEIO) if FileName is not accessible/existent
  • #CVC_ERROR (#CVC_E_NOTSUPPORTED) if the file format is not supported

◆ CVC3DLoadCalibratorW()

cvbres_t CVC3DLoadCalibratorW ( const wchar_t *  FileName,
CVC3DCALIBRATOR Calibrator 
)

Loads a 3D calibration file (Unicode string version).

The type of file to be loaded is determined by the FileName extension and the file's contents. The following file formats are supported:

Name Extension(s)
CVB Calibration file json
AT Calibration file dat, xml

For Automation Technology (AT) dat files version 1 (homography only) and version 2 (added polynomial) are supported. For xml files the homography is required. Brown/Conrady, polynomial and binning mode are also supported.

Note
If this function returns successfully you need to release the returned Calibrator via ReleaseObject if not needed anymore.
Parameters
[in]FileNameFull path to the file to load.
[out]CalibratorVariable to receive the loaded calibrator object handle.
Returns
  • #CVC_ERROR (#CVC_E_OK) on success
  • #CVC_ERROR (#CVC_E_PARAMETER) if FileName is nullptr.
  • #CVC_ERROR (#CVC_E_FILEIO) if FileName is not accessible/existent
  • #CVC_ERROR (#CVC_E_NOTSUPPORTED) if the file format is not supported