Flat-Field Correction#
在应用平场校正之前,需要对相机进行校准。这涉及计算适当的校正数据并将其上传到相机中。借助这些校正数据,就可以在图像采集过程中对原始像素进行校正,从而获得经改进的图像。
Flat-Field Correction ( pylon Viewer) 功能对该功能进行了补充。
该功能的使用#
运作原理#
每个传感器的像素在亮度输出上都有轻微差异,因此会导致图像出现伪影。这是数字成像中的常见现象。平场校正可最大限度地减少这些图像伪影,从而提高图像质量和后续分析。
要消除图像伪影,您必须首先创建校正数据。下图展示了此校正过程:
步骤 1 - 创建校正值 (CV)#
步骤 2 - 应用平场校正#
步骤 1 需要一系列暗场图像来检测暗信号非均匀性 (DSNU)(暗电流噪声),以及一系列明场(平场)图像来检测光响应非均匀性 (PRNU)。
然后用户必须计算校正值 (CV) 并将其保存到相机的闪存中。
在步骤 2 中,如果启用了平场校正功能,则会消除图像伪影。原始像素值 (OV) 得到了校正,从而得到经改进的图像(结果值,RV)。
使用 pylon Viewer 计算校正值#
→ 请参见 Flat-Field Correction (pylon Viewer)。
使用 pylon API 计算校正值#
Flat-Field Correction 功能以列为基础,即在校准期间必须针对传感器的每一列计算暗信号非均匀性 (DSNU) 的校正值和光响应非均匀性 (PRNU) 的校正值,其中涉及以下数学参数:
- DMean:暗场图像中所有像素的平均灰度值
- GMean:明场图像中所有像素的平均灰度值
- DSNU_Coeff(x):暗信号非均匀性 (DSNU) 系数
- PRNU_Coeff(x):光响应非均匀性 (PRNU) 系数
- UserGD_Offset:用户定义的全局暗偏移
其中 x 是列索引。
信息
为了获得最佳结果,请在实际应用环境中获取暗场和明场图像。请注意,只能校正静态效果。如果更改镜头或光源等,则必须重复此过程。
要计算校正值:
- 保护传感器免受光线照射,例如,给镜头装上塑料盖,并拍摄一系列暗图像。
- 对所有拍摄的图像中所有像素的灰度值求和,并将总和除以像素总数。结果是暗场图像中所有像素的平均灰度值 (DMean)。
- 计算每列 x 的平均灰度值 (D(x))。
- Illuminate the sensor homogeneously to 70 % saturation, e.g., by placing a white sheet of paper in the camera's entire field of view, and acquire a sequence of bright images.
- 对所有拍摄的图像中所有像素的灰度值求和,并将总和除以像素总数。结果是明场图像中所有像素的平均灰度值 (GMean)。
- 计算每列 x 的平均灰度值 (G(x))。
- 如有必要,根据您的需要确定全局暗偏移值 (UserGD_Offset)。
-
对于每一列 x,计算 DSNU_Coeff(x) 系数和 PRNU_Coeff(x) 系数,如下所示:
-
使用计算值通过 pylon API 设置相应的相机参数。
- Column index (x):
BslFlatFieldCorrectionCoeffX
- DMean:
BslFlatFieldCorrectionDMean
- DSNU_Coeff(x):
BslFlatFieldCorrectionCoeffDSNU
- PRNU_Coeff(x):
BslFlatFieldCorrectionCoeffPRNU
- UserGD_Offset:
BslFlatFieldCorrectionUserGD
- Column index (x):
-
为所有列设置所有校正值后,您可以通过拍摄一组图像来测试平场校正。
- If you're satisfied with the image quality, save the settings to the camera's flash memory by executing the
BslFlatFieldCorrectionSaveToFlash
command.
设置平场校正模式#
To set the flat-field correction mode, set the BslFlatFieldCorrectionMode
参数设置为以下值:
在
: The camera performs flat-field correction, i.e., DSNU and PRNU corrections.DSNUOnly
: The camera performs DSNU correction only.熄灭
(default): The camera does not perform flat-field correction.
外部链接#
示例代码#
// Example: Set all correction values for all columns
// Dark signal non-uniformity (DSNU) coefficient
// CalculatedDSNU[0..width-1]
// Photo response non-uniformity (PRNU) coefficient
// CalculatedPRNU[0..width-1]
for (x=0; ++x; x<width)
{
camera.BslFlatFieldCorrectionCoeffX.SetValue(x);
camera.BslFlatFieldCorrectionCoeffDSNU.SetValue(CalculatedDSNU[x]);
camera.BslFlatFieldCorrectionCoeffPRNU.SetValue(CalculatedPRNU[x]);
}
// Set the global dark offset value
camera.BslFlatFieldCorrectionUserGD.SetValue(40)
// Save the settings to the camera's flash memory
camera.BslFlatFieldCorrectionSaveToFlash.Execute();
// Set the flat-field correction mode
camera.BslFlatFieldCorrectionMode.SetValue(BslFlatFieldCorrectionMode_On);
此示例代码仅适用于 C++ 语言。
您也可以使用 pylon Viewer 轻松设置参数。