170 lines
7.2 KiB
C
170 lines
7.2 KiB
C
/**
|
|
* @file GoGeoCal.h
|
|
* @brief Declares the GoGeoCal class.
|
|
*
|
|
* @internal
|
|
* Copyright (C) 2017-2021 by LMI Technologies Inc.
|
|
* Licensed under the MIT License.
|
|
* Redistributed files must retain the above copyright notice.
|
|
*/
|
|
#ifndef GO_GEOCAL_H
|
|
#define GO_GEOCAL_H
|
|
|
|
#include <GoSdk/GoSdkDef.h>
|
|
|
|
/**
|
|
* @class GoGeoCal
|
|
* @extends kObject
|
|
* @ingroup GoSdk
|
|
* @brief Contains the GeoCal data for a sensor.
|
|
* Do not read the GeoCal file directly, use this class to parse it.
|
|
*/
|
|
typedef kObject GoGeoCal;
|
|
|
|
/**
|
|
* Gets sensor ID
|
|
*
|
|
* @public @memberof GoGeoCal
|
|
* @version Introduced in firmware 4.7.0.130
|
|
* @param cal GoGeoCal object.
|
|
* @return Sensor ID.
|
|
*/
|
|
GoFx(k32u) GoGeoCal_Id(GoGeoCal cal);
|
|
|
|
/**
|
|
* Gets timestamp
|
|
*
|
|
* @public @memberof GoGeoCal
|
|
* @version Introduced in firmware 4.7.0.130
|
|
* @param cal GoGeoCal object.
|
|
* @return Timestamp.
|
|
*/
|
|
GoFx(const kChar*) GoGeoCal_Timestamp(GoGeoCal cal);
|
|
|
|
/**
|
|
* Gets count of cameras.
|
|
*
|
|
* @public @memberof GoGeoCal
|
|
* @version Introduced in firmware 4.7.0.130
|
|
* @param cal GoGeoCal object.
|
|
* @return Count of views.
|
|
*/
|
|
GoFx(kSize) GoGeoCal_CameraCount(GoGeoCal cal);
|
|
|
|
/**
|
|
* Gets calibration window.
|
|
*
|
|
* @public @memberof GoGeoCal
|
|
* @version Introduced in firmware 4.7.0.130
|
|
* @param cal GoGeoCal object.
|
|
* @param cameraIndex Camera index. kERROR_PARAMETER if invalid.
|
|
* @param x Output parameter for window x. Provide with a pointer to a k32u. Ignored if input is kNULL.
|
|
* @param y Output parameter for window y. Provide with a pointer to a k32u. Ignored if input is kNULL.
|
|
* @param width Output parameter for window width. Provide with a pointer to a k32u. Ignored if input is kNULL.
|
|
* @param height Output parameter for window height. Provide with a pointer to a k32u. Ignored if input is kNULL.
|
|
* @param xSubsampling Output parameter for window xSubsampling. Provide with a pointer to a k32u. Ignored if input is kNULL.
|
|
* @param ySubsampling Output parameter for window ySubsampling. Provide with a pointer to a k32u. Ignored if input is kNULL.
|
|
* @return Operation status.
|
|
*/
|
|
GoFx(kStatus) GoGeoCal_CalWindow(GoGeoCal cal, kSize cameraIndex, k32u* x, k32u* y, k32u* width, k32u* height, k32u* xSubsampling, k32u* ySubsampling);
|
|
|
|
/**
|
|
* Gets X resolution to Z fit.
|
|
* The X and Y resolution (mm/pixel) of an imager's pixels varies with the range. When resampling images,
|
|
* it is necessary to know the native resolution of each pixel. Typically, this is only needed for color/texture output.
|
|
* Profile cameras would have a fit set to kNULL. The fit is stored as polynomial coefficients. The X resolution at a
|
|
* given Z range (mm) can be determined by:
|
|
*
|
|
* X resolution = coefficients[0] + coefficients[1]*Z + ... + coefficients[N]*Z^N
|
|
*
|
|
* @public @memberof GoGeoCal
|
|
* @version Introduced in firmware 4.7.0.130
|
|
* @param cal GoGeoCal object.
|
|
* @param cameraIndex Camera index.
|
|
* @return Array of X resolution to Z fit coefficients. Type: k64f. kNULL is returned if the
|
|
* camera does not have a X resolution to Z fit.
|
|
*/
|
|
GoFx(kArray1) GoGeoCal_XResolutionFit(GoGeoCal cal, kSize cameraIndex);
|
|
|
|
/**
|
|
* Gets Y resolution to Z fit.
|
|
* The X and Y resolution (mm/pixel) of an imager's pixels varies with the range. When resampling images,
|
|
* it is necessary to know the native resolution of each pixel. Typically, this is only needed for color/texture output.
|
|
* Profile cameras would have a fit set to kNULL. The fit is stored as polynomial coefficients. The Y resolution at a
|
|
* given Z range (mm) can be determined by:
|
|
*
|
|
* Y resolution = coefficients[0] + coefficients[1]*Z + ... + coefficients[N]*Z^N
|
|
*
|
|
* @public @memberof GoGeoCal
|
|
* @version Introduced in firmware 4.7.0.130
|
|
* @param cal GoGeoCal object.
|
|
* @param cameraIndex Camera index.
|
|
* @return Array of Y resolution to Z fit coefficients. Type: k64f. kNULL is returned if the
|
|
* camera does not have a X resolution to Z fit.
|
|
*/
|
|
GoFx(kArray1) GoGeoCal_YResolutionFit(GoGeoCal cal, kSize cameraIndex);
|
|
|
|
/**
|
|
* Gets X center to Z fit.
|
|
* The world X center (mm) of an imager varies with the range if any yaw is present. It also represents the distance
|
|
* from the sensor reference 0 plane (usually mid-sensor). The fit is stored as polynomial coefficients. The X center
|
|
* at a given Z range (mm) can be determined by:
|
|
*
|
|
* X center = coefficients[0] + coefficients[1]*Z + ... + coefficients[N]*Z^N
|
|
*
|
|
* @public @memberof GoGeoCal
|
|
* @version Introduced in firmware 4.7.0.130
|
|
* @param cal GoGeoCal object.
|
|
* @param cameraIndex Camera index.
|
|
* @return Array of X center to Z fit coefficients. Type: k64f.
|
|
*/
|
|
GoFx(kArray1) GoGeoCal_XCenterFit(GoGeoCal cal, kSize cameraIndex);
|
|
|
|
/**
|
|
* Gets Y center to Z fit.
|
|
* The world Y center (mm) of an imager varies with the range if any pitch is present. It also represents the distance
|
|
* from the sensor reference 0 plane (usually mid-sensor). The fit is stored as polynomial coefficients. The Y center
|
|
* at a given Z range (mm) can be determined by:
|
|
*
|
|
* Y center = coefficients[0] + coefficients[1]*Z + ... + coefficients[N]*Z^N
|
|
*
|
|
* @public @memberof GoGeoCal
|
|
* @version Introduced in firmware 4.7.0.130
|
|
* @param cal GoGeoCal object.
|
|
* @param cameraIndex Camera index. kERROR_PARAMETER if invalid.
|
|
* @return Array of Y center to Z fit coefficients. Type: k64f.
|
|
*/
|
|
GoFx(kArray1) GoGeoCal_YCenterFit(GoGeoCal cal, kSize cameraIndex);
|
|
|
|
/**
|
|
* Gets camera roll angle. This can be used to correct for camera roll.
|
|
*
|
|
* @public @memberof GoGeoCal
|
|
* @version Introduced in firmware 4.7.0.130
|
|
* @param cal GoGeoCal object.
|
|
* @param cameraIndex Camera index
|
|
* @return Roll angle (in radians)
|
|
*/
|
|
GoFx(k64f) GoGeoCal_Roll(GoGeoCal cal, kSize cameraIndex);
|
|
|
|
/**
|
|
* Applies a new camera window to the camera orientation information and updates coefficients.
|
|
*
|
|
* @public @memberof GoGeoCal
|
|
* @version Introduced in firmware 5.2.18.3
|
|
* @param cal GoGeoCal object.
|
|
* @param x X of new camera window.
|
|
* @param y Y of new camera window.
|
|
* @param width Width of new camera window.
|
|
* @param height Height of new camera window.
|
|
* @param xSubsampling X subsampling of new camera window.
|
|
* @param ySubsampling Y subsampling of new camera window.
|
|
* @param cameraIndex Camera index.
|
|
* @return Operation status.
|
|
*/
|
|
GoFx(kStatus) GoGeoCal_ApplyActiveArea(GoGeoCal cal, k32u x, k32u y, k32u width, k32u height, k32u xSubsampling, k32u ySubsampling, kSize cameraIndex);
|
|
|
|
#include <GoSdk/GoGeoCal.x.h>
|
|
|
|
#endif
|