跳转到内容
STAGING SERVER
DEVELOPMENT SERVER

配置相机参数#

本主题介绍了某些最常用的参数。

Exposure Time#

Exposure Time 用于定义每帧图像中相机传感器曝光于光线下的时间长度。它是图像采集最重要的参数之一,因为它直接影响图像亮度、运动模糊和信号Quality。

Effects of Exposure Time#

在曝光过程中,传感器会收集光子并将其转换为电信号。Exposure Time越长,累积的光线就越多。此图表总结了该过程:

Short exposure → less light → darker image
Long exposure  → more light → brighter image

Exposure Time的长短会产生以下影响:

  • 亮度
    • 较长的曝光时间会增加亮度。
    • 较短的曝光时间会降低亮度。
  • 运动模糊
    • 长曝光会导致运动物体出现模糊。
    • 短曝光会导致运动物体呈现静止状态。
  • 图像噪点
    • 非常短的曝光可能会导致图像噪点较多(信号较弱)。
    • 较长的曝光可以改善信号Quality,但可能会引入运动模糊。

根据您的应用需求,在指定 Exposure Time 时必须决定优先考虑哪种效果。下表可供参考。

目标 推荐曝光
冻结快速运动 短曝光
最大化亮度 长曝光
稳定测量 平衡曝光

配置示例#

camera.ExposureAuto.Value = "Off"
camera.ExposureTime.Value = 3000  # Value, usually in microseconds
  • ExposureAuto = Off 确保手动控制。
  • ExposureTime 指定单位为 微秒 (µs).

核心要点#

选择曝光时间必须始终结合以下因素:

  • 场景亮度
  • 运动速度
  • 帧率要求

指定正确的曝光时间是构建可靠视觉系统的基础步骤。

camera.ExposureAuto.Value = "Off"
camera.ExposureTime.Value = 3000  # Value is in microseconds. Check ValueRange for valid values.
#alternatively:
camera.ExposureTimeAbs.SetValue(3000, pylon.FloatValueCorrection_ClipToRange)

Gain#

增益 (gain) 控制曝光后传感器信号的电子放大。与曝光时间不同,增益不会增加捕获的光量,而是放大现有信号。以下可视化图表总结了这一点:

Low gain  → weak amplification → darker but cleaner image
High gain → strong amplification → brighter but noisier image

增益的影响#

  • 亮度
    • 增加增益会使图像变亮。
    • 不会增加实际信号强度。它只会放大已经捕获的内容。
  • 图像噪点
    • 较高的增益会同时放大信号和噪声。
    • 过高的增益会导致图像出现颗粒感。
  • Detail Quality
    • 高增益可能会降低对比度和精细细节的可视性。

配置示例#

camera.GainAuto.Value = "Off"
camera.Gain.Value = 5

核心要点#

  • 当您无法增加曝光时间时(例如,由于存在产生运动模糊的风险),请使用增益。
  • 当图像 Quality 和信噪比至关重要时,请避免使用过高的增益。

一般规则:尽可能优先选择较长的曝光时间,而不是较高的增益。

ROI#

感兴趣区域 (ROI) 定义了为每一帧实际读出并传输的传感器部分。默认情况下,ROI 的大小与传感器相同(完整分辨率)。更改其宽度和高度可让您仅专注于场景的相关部分。以下可视化图表总结了这一点:

Full sensor → large image → more data
Part of the sensor → cropped image → less data

如果您减小 ROI,指定区域之外的任何像素都不会被读出或传输。

您可以使用以下工具调整 ROI: Width, Height, OffsetX 和 OffsetY Property。 Width + OffsetX 受限于 MaxWidth 和 Height + OffsetY 受限于 MaxHeight.

信息

  • ROI 尺寸受硬件限制(步进、对齐)。
  • 最大 ROI 等于完整的传感器分辨率。
  • 要更改 ROI,必须停止图像采集。

Effects of ROI Changes#

  • 提高帧率:每帧的数据量更少意味着更快的读出速度和更高的帧率 (fps)。
  • 降低带宽:这对于 GigE 相机尤为重要。
  • 降低处理负载:较小的图像可实现更快的图像处理 (OpenCV/AI)。
  • 聚焦相关区域:允许您忽略场景中无关的部分。

下表可作为指导,说明较小的 ROI 如何使您的应用受益。

用例 较小 ROI 的优势
追踪小物体 更快的处理速度和更少的噪声
高速检测 提高帧速率
区域内的边缘检测 减少计算量

配置示例#

camera.StopGrabbing()

camera.Width.Value = 640
camera.Height.Value = 480

camera.StartGrabbing()

核心要点#

减小 ROI 是机器视觉系统中最高效的性能优化手段之一。通过在源头减少数据量,您可以改善以下方面:

  • 吞吐量
  • 延迟
  • 系统可扩展性

与软件图像裁剪不同,减小 ROI 会在多条流水线处理之前消除不必要的数据。

Static Defect Pixel Correction#

Defect Pixel Correction 允许您最大程度地减少传感器单个像素灵敏度差异的影响。并非所有相机都支持此功能。因此,务必做好当前设备不支持该功能的准备。

信息

  • 使用 pylon.StaticDefectPixelCorrection 并分别带有 camera.NodeMap.
  • 使用 ListType_Factory 用于读取出厂自带的坏点。
  • 使用 ListType_User 用于读取/更新用户特定的坏点。
  • 捕获 pylon.RuntimeException 和 pylon.InvalidArgumentException 针对不支持的型号。

配置示例#

from pypylon import pylon

with pylon.InstantCamera(pylon.FirstFound) as camera:
    # Read the factory defect pixel list.
    factory_ok, factory_pixels = pylon.StaticDefectPixelCorrection.GetDefectPixelList(
        camera.NodeMap,
        [],
        pylon.StaticDefectPixelCorrection.ListType_Factory,
    )

    # Build/update the user list as (x, y) or (x, y, type) tuples.
    user_pixels = [(100, 200), (300, 400, 0)]

    try:
        normalize_ok, normalized_pixels = pylon.StaticDefectPixelCorrection.NormalizePixelList(
            camera.NodeMap,
            user_pixels,
        )

        set_ok, written_pixels = pylon.StaticDefectPixelCorrection.SetDefectPixelList(
            camera.NodeMap,
            normalized_pixels,
            pylon.StaticDefectPixelCorrection.ListType_User,
        )

        get_ok, read_back_pixels = pylon.StaticDefectPixelCorrection.GetDefectPixelList(
            camera.NodeMap,
            [],
            pylon.StaticDefectPixelCorrection.ListType_User,
        )
    except (pylon.RuntimeException, pylon.InvalidArgumentException):
        # Camera does not provide this feature.
        pass

核心要点#

将静态 Defect Pixel Correction 视为设备相关功能:可用时使用,不可用时则进行平稳降级处理。