Leaper Vision Toolkit
中文 / English 2.x
Public 成员函数 | 属性
ILCameraArray接口 参考

该接口提供相机阵列生成、联合标定和图像拼接等功能。 更多...

类 ILCameraArray 继承关系图:
ILObjects ILObject LCameraArray

Public 成员函数

LPVErrorCode Calibrate ()
 
void ImageToWorld (double imagePointX, double imagePointY, double *worldPointX, double *worldPointY)
 
void Init (LPVCalibModel calibModel, int hCount, int vCount)
 
void InitByCopy (ILCalib *calib, int hCount, int vCount, BOOL copyCalib, double hStep, double vStep)
 
void InitByCopyN (LArray< ILCalib * > calibs, int rows, int hCount, int vCount, BOOL copyCalib, double hStep, double vStep)
 
BOOL IsCalibrated ()
 
ILCalibItem (int index)
 
LPVErrorCode StitchImage (ILImageList *images, ILImage *stitchedImage)
 
void WorldToImage (double worldPointX, double worldPointY, double *imagePointX, double *imagePointY)
 
- Public 成员函数 继承自 ILObjects
int Count ()
 
BOOL Empty ()
 
ILObjectItemObject (int objIndex)
 
- Public 成员函数 继承自 ILObject
ILObjectCopy ()
 
LPVErrorCode Load (LString filename)
 
void Reset ()
 
LPVErrorCode Save (LString filename)
 
BOOL Valid ()
 

属性

double CalibError [get]
 相机阵列联合标定的误差,为阵列中所有相机标定误差中的最大值。
 
BOOL EnableBlend [get, set]
 是否在多相机相邻区域拼图时启用融合。默认设置为开启。
启用融合将生成更平滑的拼图结果,但速度稍慢。
 
LPVInterpolationMethod InterpolationMethod [get, set]
 拼接图像时所使用的插值算法,默认配置为 LPVInterCubic
 
BOOL UseCache [get, set]
 是否开启缓存,缓存数据用于加速图像拼接和融合的过程,但占用更多的内存。这个配置默认关闭。
 
- 属性 继承自 ILObject
LString Name [get, set]
 对象的名称,默认为空。
大多数情况下,LPV 算法类并不使用这个名称。
ILDrawable::SetDrawName() 启用,该名称将被绘制在对象的附近 更多...
 

详细描述

该接口提供相机阵列生成、联合标定和图像拼接等功能。

相机阵列由多个独立的相机按照已知的模式排列,或由单个或多个相机沿着固定的路径移动形成虚拟的相机阵列。 可使用该接口创建和管理相机阵列,并进行联合标定,拼接来自多个相机的图像为一个完整的大图,进行预览和后续的检测任务。

使用这个接口,需要创建一个 LCameraArray 对象。

示例代码

成员函数说明

◆ Calibrate()

LPVErrorCode Calibrate ( )

进行标定,使用当前配置的参数。进行联合标定前,需保证阵列中的每个相机均已单独标定。

返回值
error返回错误码

◆ ImageToWorld()

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

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

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

◆ Init()

void Init ( LPVCalibModel  calibModel,
int  hCount,
int  vCount 
)

初始化相机阵列,基于给定的相机标定模型,生成 \( vCount \times hCount \) 的矩阵。

参数
[in]calibModel相机标定模型
[in]hCount相机阵列横向的相机个数,为 \( \ge 1 \) 的数值。
[in]vCount相机阵列纵向的相机个数,为 \( \ge 1 \) 的数值。
参见
InitByCopy(), InitByCopyN().

◆ InitByCopy()

void InitByCopy ( ILCalib calib,
int  hCount,
int  vCount,
BOOL  copyCalib,
double  hStep,
double  vStep 
)

初始化相机阵列,基于输入的单个相机模型,横向和纵向移动其多次,生成 \( vCount \times hCount \) 的矩阵。

参数
[in]calib单个相机对象对应的标定模型
[in]hCount相机阵列横向的相机个数,为 \( \ge 1 \) 的数值。
[in]vCount相机阵列纵向的相机个数,为 \( \ge 1 \) 的数值。
[in]copyCalib是否同时拷贝标定结果。若输入的移动步长为合法数值,则同时为每次移动生成对应的后变换矩阵。
[in]hStep横向移动的步长,物理单位,可为空。
[in]vStep纵向移动的步长,物理单位,可为空。
参见
InitByCopyN().

◆ InitByCopyN()

void InitByCopyN ( LArray< ILCalib * >  calibs,
int  rows,
int  hCount,
int  vCount,
BOOL  copyCalib,
double  hStep,
double  vStep 
)

InitByCopy() 类似,初始化相机阵列,基于输入的多个相机对象,横向和纵向移动其多次 生成 \( (vCount * rows) \times (hCount * n / rows) \) 的矩阵。
例如,给定 1 2 3 4 为输入的多个相机对象,排成 2 行,水平移动其 3 次,垂直移动其 2 次,生成的相机阵列如下:

\( \begin{matrix}1 & 2 & 1 & 2 & 1 & 2\\3 & 4 & 3 & 4 & 3 & 4\\1 & 2 & 1 & 2 & 1 & 2\\3 & 4 & 3 & 4 & 3 & 4\end{matrix} \)

参数
[in]calibs多个相机对象对应的标定模型
[in]rows输入对象的排列行数
[in]hCount相机阵列横向的相机个数,为 \( \ge 1 \) 的数值。
[in]vCount相机阵列纵向的相机个数,为 \( \ge 1 \) 的数值。
[in]copyCalib是否同时拷贝标定结果。若输入的移动步长为合法数值,则同时为每次移动生成对应的后变换矩阵。
[in]hStep横向移动的步长,物理单位,可为空。
[in]vStep纵向移动的步长,物理单位,可为空。

◆ IsCalibrated()

BOOL IsCalibrated ( )

检查阵列中的所有相机是否都标定成功,且该相机阵列是否联合标定成功。

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

◆ Item()

ILCalib* Item ( int  index)

获取给定索引的相机所对应的标定模型。

参数
[in]index输入索引,从 0 开始但小于总数的数字
返回值
calib返回相机对应的标定模型

◆ StitchImage()

LPVErrorCode StitchImage ( ILImageList images,
ILImage stitchedImage 
)

拼接阵列中所有相机的图像,生成一张大的拼图。
标定对象需成功标定,若未标定返回 LPVErrCalibNotCalib 错误。

参数
[in]images输入的图像,其顺序与相机阵列中相机的顺序对应,按行排列。
[out]stitchedImage返回拼接后的图像
返回值
error返回错误码

◆ WorldToImage()

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

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

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