Scaling#
Scaling 功能类似于 Pixel Beyond 功能,仅适用于 ace 2 相机。
该功能的使用#
运作原理#
在缩放期间,图像大小通过插值按比例减小。根据需要将像素值相加并取平均值,以将其映射到缩放后图像的像素。这能提高信噪比。
Scaling 由您选择的缩放比例系数控制。在水平和垂直方向上应用相同的系数。系数为 1.0 时,图像大小保持不变。小于 1.0 的系数会使图像的宽度和高度缩小。
配置 Scaling#
配置 Scaling:
- 确保相机空闲,即未在捕获图像。
- 通过将像素合并和采样系数设置为 1 来禁用 Decimation 和 Binning。
- 将
ScalingHorizontal
参数设置为所需的 Scaling 值。
信息
- 更改
ScalingHorizontal
参数值会自动调整ScalingVertical
参数值。这样可以保持原始的宽高比。 - 使用 Scaling 功能时,Binning 和 Decimation 不可用。
缩放值#
您可以在 0.125 到 1 之间选择缩放系数。但是,只有 112 个离散值可用。如果输入的值不可用,则浮动控件会自动向上或向下舍入到最接近的可用值。
要计算有效值,请使用以下公式:16/x,其中 x = 16 到 128 之间的任何自然数。
示例 | 得到的缩放系数 | 结果 |
---|---|---|
16 / 16 | 1.0 | 默认设置。Scaling 禁用。原始图像尺寸不变。可以使用 Binning 和 Decimation。 |
16 / 17 | 0.941 | |
16 / 18 | 0.888 | |
等等 | … | |
16 / 32 | 0.5 | 图像尺寸减半(系数 2)。 |
16 / 64 | 0.25 | 图像尺寸缩小 4 倍。 |
等等 | … | |
16 / 128 | 0.125 | 图像尺寸缩小 8 倍(最大减小量)。 |
Scaling 使用注意事项#
对 ROI 设置的影响#
使用缩放时,图像 ROI 和自动功能 ROI 设置是指经过修改的图像缩放后的行和列,而不是传感器的物理行和列。
例如,假设您使用的相机采用 3840 x 2748 的传感器。缩放系数 0.5 适用于全分辨率。在这种情况下,最大 ROI 宽度为 1918,最大 ROI 高度为 1372。ROI 宽度和高度参数会自动调整。同样,在启用缩放之前定义的所有偏移量都会自动调整。
禁用缩放后,ROI 会再次增加,但可能小于原始 ROI。
信息
Basler 建议您在禁用缩放后始终检查图像 ROI 设置,并在必要时手动将图像 ROI 还原到所需的大小和位置。
分辨率降低#
使用缩放可以有效地降低相机成像传感器的分辨率。例如,如果您在具有 3840 x 2748 传感器的相机上将缩放系数配置为 0.25,则相机的有效分辨率将降低为 954 x 682。
舍入损失#
在缩放期间,图像尺寸会频繁进行四舍五入处理。如果反复更改缩放系数,则舍入所产生的效果会累积。这样在恢复以前的图像尺寸时,由于四舍五入而丢失的尺寸无法恢复。
为避免累积舍入损失,请手动恢复以前的图像尺寸。此外也可以返回“参考”图像尺寸,例如恢复到全分辨率,并手动指定图像尺寸以避免舍入误差。
示例代码#
ace Classic/U/L GigE 相机#
/* Macro to check for errors */
#define CHECK(errc) if (GENAPI_E_OK != errc) printErrorAndExit(errc)
GENAPIC_RESULT errRes = GENAPI_E_OK; /* Return value of pylon methods */
/* Set horizontal scaling to 0.5 */
errRes = PylonDeviceSetFloatFeature(hdev, "ScalingHorizontalAbs", 0.5);
CHECK(errRes);
/* Disable scaling */
errRes = PylonDeviceSetIntegerFeature(hdev, "ScalingHorizontalAbs", 1);
CHECK(errRes);
其他相机#
/* Macro to check for errors */
#define CHECK(errc) if (GENAPI_E_OK != errc) printErrorAndExit(errc)
GENAPIC_RESULT errRes = GENAPI_E_OK; /* Return value of pylon methods */
/* Set horizontal scaling to 0.5 */
errRes = PylonDeviceSetFloatFeature(hdev, "ScalingHorizontal", 0.5);
CHECK(errRes);
/* Disable scaling */
errRes = PylonDeviceSetIntegerFeature(hdev, "ScalingHorizontal", 1);
CHECK(errRes);
您也可以使用 pylon Viewer 轻松设置参数。