Leaper Vision Toolkit
Public 成员函数 | 属性
ILCalib接口 参考

该接口类为标定对象的基类,提供基本标定功能对应的接口。 更多...

类 ILCalib 继承关系图:
ILObject ILCalibCustom ILCalibFFD ILCalibNPoints ILCalibPinHole LCalibCustom LCalibFFD LCalibNPoints LCalibPinHole

Public 成员函数

LPVErrorCode AddPoint (double imagePointX, double imagePointY, double worldPointX, double worldPointY)
 
LPVErrorCode AddPoints (ILCalibPointPairs *pointPairs)
 
LPVErrorCode Calibrate ()
 
LPVErrorCode FixImage (ILImage *image, ILImage *fixedImage)
 
LPVErrorCode GenPostTransformMatrix (ILCalibPointPairs *pointPairs)
 
void ImageToWorld (double imagePointX, double imagePointY, double *worldPointX, double *worldPointY)
 
BOOL IsCalibrated ()
 
void SetImageSize (int w, int h)
 
void SetPostTransform (double offsetX, double offsetY, double deltaAngle)
 
void SetPostTransformMatrix (ILTransform *tf)
 
void SetPostTransformMatrix23 (LMatrix23 *data)
 
void SetPostTransformMatrix33 (LMatrix33 *data)
 
void WorldToImage (double worldPointX, double worldPointY, double *imagePointX, double *imagePointY)
 
- Public 成员函数 继承自 ILObject
ILObjectCopy ()
 
LPVErrorCode Load (LString filename)
 
void Reset ()
 
LPVErrorCode Save (LString filename)
 
BOOL Valid ()
 

属性

double CalibError [get]
 标定结果的反投影误差, 基于图像坐标与其对应的物理坐标根据标定结果反投影回图像坐标系的坐标之间的差,按该公式定义:
\( \sqrt{ \frac{1}{n} \sum_{i=0}^{n} distance(p^{image}_i, p^{proj}_i)^2 } \)
 
LPVFixImageMode FixImageMode [get, set]
 用于 FixImage() 指定图像修正的模式。 更多...
 
double FixImageOffsetX [get, set]
 修正图像 FixImage() 时使用的 x 方向偏移量,以像素为单位,与 FixImageOffsetY 同时使用。
默认设置为 0,即无 x 方向偏移。修改该数值可移动修正图像中有效像素的位置,如将检测区域移动到修正图像的中心附近。
 
double FixImageOffsetY [get, set]
 修正图像 FixImage() 时使用的 y 方向偏移量,以像素为单位,与 FixImageOffsetY 同时使用。
默认设置为 0,即无 y 方向偏移。修改该数值可移动修正图像中有效像素的位置,如将检测区域移动到修正图像的中心附近。
 
double FixImageScale [get, set]
 修正图像 FixImage() 时使用的缩放比例。
默认设置为 1,即无缩放。修改该数值可放大或缩小修正后的图像。
 
LPVInterpolationMethod InterpolationMethod [get, set]
 修正图像时所使用的插值算法,默认配置为 LPVInterCubic
 
LPVCalibModel Model [get]
 相机标定模型
 
BOOL UseCache [get, set]
 是否开启缓存,缓存数据用于加速图像矫正过程,但占用更多的内存。这个配置默认关闭。
 

详细描述

该接口类为标定对象的基类,提供基本标定功能对应的接口。

这是所有标定对象的基类,对于不同的标定模型,需选择不同的标定对象。 使用这个接口,需要创建一个标定对象,如:

ILCalibNPoints, ILCalibPinHole, ILCalibFFD, ILCalibCustom...

成员函数说明

◆ AddPoint()

LPVErrorCode AddPoint ( double  imagePointX,
double  imagePointY,
double  worldPointX,
double  worldPointY 
)

增加一个用于标定的点对。

参数
[in]imagePointX图像点的 x 坐标
[in]imagePointY图像点的 y 坐标
[in]worldPointX物理点的 x 坐标
[in]worldPointY物理点的 y 坐标
返回值
error返回错误码

◆ AddPoints()

LPVErrorCode AddPoints ( ILCalibPointPairs pointPairs)

增加一个用于标定的点对集合,通常通过检测标定板获得大量标定用的点对。

参数
[in]pointPairs用于标定的点对集合
返回值
error返回错误码
参见
ILCalibBoard

◆ Calibrate()

LPVErrorCode Calibrate ( )

进行标定,使用当前配置的参数和添加的点对

返回值
error返回错误码

◆ FixImage()

LPVErrorCode FixImage ( ILImage image,
ILImage fixedImage 
)

修正图像的镜头畸变和相机倾斜。
标定对象需成功标定,若未标定返回 LPVErrCalibNotCalib 错误。

参数
[in]image输入的图像
[out]fixedImage输出修正后的结果图像
返回值
error返回错误码
参见
FixImageMode, FixImageScale, FixImageOffsetX, FixImageOffsetY, InterpolationMethod

◆ GenPostTransformMatrix()

LPVErrorCode GenPostTransformMatrix ( ILCalibPointPairs pointPairs)

生成和设置后变换矩阵,基于修正后图像上的图像坐标点及其对应的期望物理坐标。

参数
[in]pointPairs图像和物理点对.
返回值
error返回错误码

◆ ImageToWorld()

void ImageToWorld ( double  imagePointX,
double  imagePointY,
double *  worldPointX,
double *  worldPointY 
)

映射点坐标从图像坐标系到物理坐标系。
标定对象需成功标定,若未标定则返回的坐标数值与输入相同。

参数
[in]imagePointX图像坐标系下的 x 坐标
[in]imagePointY图像坐标系下的 y 坐标
[out]worldPointX返回物理坐标系下的 x 坐标
[out]worldPointY返回物理坐标系下的 y 坐标

◆ IsCalibrated()

BOOL IsCalibrated ( )

检查是否标定成功

返回值
val若标定成功,返回 True,否则,返回 False

◆ SetImageSize()

void SetImageSize ( int  w,
int  h 
)

设置相机采集到的图像的尺寸,用于不依赖图像的标定过程,如 9 点标定。

参数
[in]w图像的宽度
[in]h图像的高度

◆ SetPostTransform()

void SetPostTransform ( double  offsetX,
double  offsetY,
double  deltaAngle 
)

设置物理坐标系的后变换,给定原点的偏移量和旋转角度。
后变换应用在图像到物理的坐标映射之后,相对的,逆向的后变换应用在物理到图像的坐标映射之前。
若同时设置后变换原点和后变换矩阵,将先应用后变换原点,再应用后变换矩阵。在逆向的后变换中,其顺序相反。

参数
[in]offsetX后变换原点 x 方向的偏移量
[in]offsetY后变换原点 y 方向的偏移量
[in]deltaAngle坐标系的顺时针旋转角度
参见
SetPostTransformMatrix(), SetPostTransformMatrix23(), SetPostTransformMatrix33().

◆ SetPostTransformMatrix()

void SetPostTransformMatrix ( ILTransform tf)

设置物理坐标系的后变换,给定后变换矩阵。
后变换应用在图像到物理的坐标映射之后,相对的,逆向的后变换应用在物理到图像的坐标映射之前。
若同时设置后变换原点和后变换矩阵,将先应用后变换原点,再应用后变换矩阵。在逆向的后变换中,其顺序相反。

参数
[in]tf变换矩阵
参见
SetPostTransform(), SetPostTransformMatrix23(), SetPostTransformMatrix33().

◆ SetPostTransformMatrix23()

void SetPostTransformMatrix23 ( LMatrix23 data)

设置物理坐标系的后变换,使用 \( 2 \times 3 \) 的矩阵,具有旋转、平移、缩放的自由度。

参见
SetPostTransform(), SetPostTransformMatrix(), SetPostTransformMatrix33().

◆ SetPostTransformMatrix33()

void SetPostTransformMatrix33 ( LMatrix33 data)

设置物理坐标系的后变换,使用 \( 3 \times 3 \) 的矩阵,具有旋转、平移、缩放、射影变换的自由度。

参见
SetPostTransform(), SetPostTransformMatrix(), SetPostTransformMatrix23().

◆ WorldToImage()

void WorldToImage ( double  worldPointX,
double  worldPointY,
double *  imagePointX,
double *  imagePointY 
)

映射点坐标从物理坐标系到图像坐标系。
标定对象需成功标定,若未标定则返回的坐标数值与输入相同。

参数
[in]worldPointX物理坐标系下的 x 坐标
[in]worldPointY物理坐标系下的 y 坐标
[out]imagePointX返回图像坐标系下的 x 坐标
[out]imagePointY返回图像坐标系下的 y 坐标

属性说明

◆ FixImageMode

LPVFixImageMode FixImageMode
getset

用于 FixImage() 指定图像修正的模式。

修正模式也会影响图像物理坐标的映射逻辑。
LPVFixImageNone (默认)表示用户使用相机采集的原始图像用于后续的定位和检测任务,因此其图像物理坐标的映射逻辑中的图像点指定是其在原始图像上的坐标。 相对应地,LPVFixImageUndistort 模式中,图像点指的是其在修正镜头畸变后的图像上的坐标。 LPVFixImageUndistortAndUntilt 模式中,图像点指的是其在修正镜头畸变和相机倾斜后的图像上的坐标。

不同的相机标定模型,支持不同的修正模式,如下表所示。

Calibration modelOriginalUndistortUndistort and Untilt
N-PointsSupport-Only untilt
PinholeSupportSupportSupport
FFDSupportSupportSupport
CustomSupport--