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

该接口提供平场标定和校正等功能。 更多...

类 ILFlatField 继承关系图:
ILObject LFlatField

Public 成员函数

LPVErrorCode FixImage (ILImage *image, ILImage *fixedImage)
 
void GetFlatField (ILImage *previewImage)
 
BOOL IsCalibrated ()
 
LPVErrorCode SetDarkFrame (ILImage *image)
 
LPVErrorCode Train (ILImage *image, ILRegion *region)
 
- Public 成员函数 继承自 ILObject
ILObjectCopy ()
 
LPVErrorCode Load (LString filename)
 
void Reset ()
 
LPVErrorCode Save (LString filename)
 
BOOL Valid ()
 

属性

LPVImageFormat ColorMode [get, set]
 设置平场的模式,处理灰度或彩色图像
 
LColor FromColor [get, set]
 平场的原始颜色,即矫正前的颜色值。用于彩色模式。
 
int FromGray [get, set]
 平场的原始灰度值,即矫正前的灰度值。用于灰度模式。
 
int KernelWidth [get, set]
 核尺寸。影响训练时前景和光场的更新范围,以及结果平场的平滑性。 需要是一个奇数,如 3, 5, 7 等。
 
LColor ToColor [get, set]
 平场的目标颜色,即矫正后的颜色值。用于彩色模式。
 
int ToGray [get, set]
 平场的目标灰度值,即矫正后的灰度值。用于灰度模式。
 
int Tolerance [get, set]
 颜色或灰度值在图像中的容差范围,表示所关心的前景色的分布范围,取值范围为 1 ~ 50,默认值为 10. 0 为特殊值,表示整个图像都作为前景像素处理。
 
double UpdateRate [get, set]
 用于控制光场在训练时的更新率,取值范围为 0 ~ 1. 数值越大表示基于新图像的更新权重越大。 通常推荐在初期的几个训练迭代,使用比较高的更新率,使得光场快速初始化到整个画幅,然后逐步降低学习率,使得光场数值稳定更新。 默认值为 0,表示将基于当前已知的前景像素占比,实时自动地确定更新率。
 
- 属性 继承自 ILObject
LString Name [get, set]
 对象的名称,默认为空。
大多数情况下,LPV 算法类并不使用这个名称。
ILDrawable::SetDrawName() 启用,该名称将被绘制在对象的附近 更多...
 

详细描述

该接口提供平场标定和校正等功能。

平场校正用于补偿相机和镜头组合的成像不均匀性,如:

平场标定的通常方法是使用一个能够覆盖整个视场的标准物,通常为一张标准灰卡或白卡。平场图像通过以下方式采集:

  1. 将标准物放置在相机视野中,并覆盖整个视野
  2. 调整镜头光圈和照明强度,在不过曝的前提下获得尽可能亮的图像
  3. 采集多张图像,使用 多帧融合 工具将其合并为一张降噪后的图像,并传递给 LFlatField 对象进行 训练

另一种可行的方法是使用实际用于检测的被测物体作为标准物。这种方法的优点在于,可以采集到被测物材质表面的真实光照反射情况,使得校正更适用于被测物体。 这种方法的平场图像通过以下方式采集:

  1. 调整镜头光圈和照明强度,在不过曝和检测目标显著的前提下获得尽可能亮的图像
  2. 设定 LFlatField 对象的原始和目标颜色或灰度值,以提取前景像素。也可以借助其他定位工具,检测目标位置再生成前景像素的区域或蒙版。
  3. 在多个不同位置采集被测物体的图像,使之覆盖整个视野。将这些图像(及该位置的前景区域或蒙版)传递给 LFlatField 对象进行 训练

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

示例代码

成员函数说明

◆ FixImage()

LPVErrorCode FixImage ( ILImage image,
ILImage fixedImage 
)

应用平场校正,修正图像中的阴影、镜头色偏或光源的不均匀性。
平场对象需成功标定,若未标定返回 LPVErrCalibNotCalib 错误。

参数
[in]image输入的图像,图像格式与当前平场模式相同
[out]fixedImage输出修正后的结果图像
返回值
error返回错误码
参见
Train(), GetFlatField()

◆ GetFlatField()

void GetFlatField ( ILImage previewImage)

获取预览平场图像。图像中较亮像素处的光强较强。

参数
[out]previewImage输出预览平场图像

◆ IsCalibrated()

BOOL IsCalibrated ( )

检查是该平场已标定

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

◆ SetDarkFrame()

LPVErrorCode SetDarkFrame ( ILImage image)

设置暗场图像,表示相机传感器暗电流对图像的影响,应从平场校正图像中剔除。 获取暗场图像的方式,通常是将镜头盖盖上,然后抓取一些图像,再通过 多帧融合 降噪。

参数
[in]image输入的暗场图像,图像格式与当前平场模式相同
返回值
error返回错误码

◆ Train()

LPVErrorCode Train ( ILImage image,
ILRegion region 
)

基于输入图像训练平场。基于设置的原始颜色或灰度值范围及容差,从输入图像中提取前景像素,然后更新到结果光场中。 若 Tolerance 设置为 0,则输入图像和区域中的所有像素均被视为前景作用于光场。

参数
[in]image输入的图像,图像格式与当前平场模式相同
[in]region输入的区域,可选,用于指定可能的前景范围
返回值
error返回错误码
参见
FixImage(), SetDarkFrame(), GetFlatField(), Tolerance