优化成像质量#
相机参数(如 frame rate、exposure time 和 gain)决定了何时以及如何捕获图像。除此之外,它们对图像 Quality 也有巨大影响。为了进一步提升深度图的 Quality,您可以调整许多 stereo matching parameters。
这两种参数都可以使用 pylon 3D Viewer 进行配置。这使您可以立即在相应的 image windows 中看到任何设置更改的效果。
相机参数#
要检查您所做的更改,请使用 Intensity image window。
帧速率#
可达到的最大 frame rate(以每秒帧数 = fps 为单位)既取决于相机的配置,也取决于主系统(host system)的硬件。有几个关键因素会影响 frame rate:
- 照明控制:投影仪的占空比(duty cycle)限制在最大 2.5%。结合最高 5 ms 的 Exposure Time,这限制了图像捕获的速度。
- Exposure Time:Exposure Time 直接影响图像采集之间的间隔。较短的 Exposure Time 允许更高的 frame rate,而较长的 Exposure Time 会降低可能达到的最大 frame rate。
- 深度计算: 计算深度图所需的时间取决于通过以下参数设置的 Resolution:
BslDepthResolution参数以及主系统上可用的处理硬件(CPU 或 GPU)。更高的 Resolution 和性能较低的硬件会增加处理时间,从而降低可达到的 frame rate。
frame rate 决定了通过 GigE Vision 界面传输多少图像。降低 frame rate 可以显著减少网络负载以及 Stereo ace 相机和接收主机计算机的计算负载。在许多应用中,可以也应该降低 frame rate,以满足系统的性能,同时仍符合应用的要求。
Exposure Time 和 Gain#
Exposure Time 是指在图像采集期间图像传感器暴露在光线下的时间。它会影响所捕获图像的明亮程度。Exposure Time 通常在几毫秒的数量级。如果场景中的光线较少,则需要更长的 Exposure Time。但是,如果场景中的物体或 Stereo ace 相机本身移动,较长的 Exposure Time 可能会导致模糊。
影响图像亮度的第二个参数是 gain。gain 是一种放大系数,可让您使图像看起来更亮。但与此同时,它也会增加图像噪声。
通过配置 Exposure Time 和 gain,您可以专注于场景中与您的应用相关的部分,例如场景中心的对象。必须避免感兴趣区域内的曝光过度,但在与应用无关的场景部分中可以容忍。
作为一般规则,对于图像处理而言,曝光过度比曝光不足更糟糕,因为曝光过度区域中的信息会由于像素饱和过快而丢失。相比之下,曝光不足的区域通常包含足够的信息用于图像处理。因此,最好将参数配置为使图像偏暗而不是过亮。
只有在低光照条件下,或者如果您想缩短 Exposure Time 以避免运动模糊时,才应增加 gain。作为一般规则,gain 值应始终尽可能低。
Stereo Matching Parameters#
要检查您所做的更改,请使用 Point Cloud、Depth Map 和 Confidence image windows。
工作范围#
首先,您需要考虑应用的工作范围。通过将 BslDepthMaxDepth 参数设置为某个值,将使深度图中距离较远的所有像素无效。这是排除应用中不相关的场景部分的简单方法。
同样,如果您确信没有任何目标物体会比指定的距离更靠近 Stereo ace 相机,您可以增加 BslDepthMinDepth 参数。增加最小深度的好处是还可以减少计算深度图像所需的时间,从而提高帧率。
延迟#
在某些应用中,计算深度图像的延迟比深度值的 Quality 更重要。在这种情况下,您可以减小 BslDepthResolution 参数,从 Full 至 High 或 Low。较低的深度分辨率会减小立体匹配前的图像尺寸。这缩短了处理时间并显着提高了可达到的帧率。但是,计算深度图像的帧率始终受相机帧率设置的限制。
如果主机端传输和显示负载是一个瓶颈,您还可以减小 BslIntensityResolution.
如上所述,如果可能的话,应增加最小深度,因为这也有助于减少延迟并提高您可以实现的帧率。
密度#
密度是衡量图像中无效像素数量的指标。密度越高,无效像素越少。深度图像通常包含无效值,这些值在 pylon 3D Viewer 中显示的深度图中显示为黑色。对于指定 working range 之外的场景部分以及对象左侧的区域,会出现这种情况。这是因为左侧相机是参考相机,右侧相机看不到部分背景。这称为遮挡,是一种正常现象。
一般来说,无效像素是不可取的。它们是由立体匹配方法无法计算深度引起的。原因有多种。有五种不同的(且互补的)策略可用于增加深度图像的密度:
- 调整图像曝光:曝光过度的区域不包含足够的信息进行匹配,因此显得无效。此外,如果图像噪声比场景纹理更强,区域可能会显得无效。正如 Exposure Time and Gain 部分中所解释的,这两个问题都可以通过调整 Exposure Time 和增益设置来解决。
- 利用 Static Scene: 如果场景和 Stereo ace 相机在图像捕获期间没有移动,Basler 建议使用静态模式(
BslDepthStaticScene参数)。启用此参数后,Stereo ace 相机内部会收集连续图像并对这些图像进行平均以减少噪声。这即使对于弱纹理对象也可以进行立体匹配。这通常会产生密度大得多的深度图像。 - 通过投影仪改善场景纹理:室内环境中无效区域最常见的原因之一是缺乏纹理或存在高度重复的纹理。通常,墙壁和桌子是单色的,没有任何纹理。其他结构高度重复。这两种情况都不太利于成功的立体匹配。如果这些纹理过多或过少的对象和场景部分对于应用很重要,则捕获它们的唯一方法是通过投影仪人工添加纹理。
- 选择 Illumination Mode: 要在场景中没有投影图案的情况下获取强度数据,请使用
AlternateActiveIllumination Mode。在此模式下,对于每个图像,执行两次曝光:一次启用投影仪用于深度计算,另一次用于捕获强度数据。请注意,AlternateActive会增加延迟。如果只需要视差数据,可以通过设置BslIlluminationMode至AlwaysActive而不是AlternateActive来减少延迟。这样,投影仪在曝光期间始终处于启用状态。 - 配置照明: 调整 Illumination Strength 参数
BslIlluminationStrength和BslIlluminationMode以优化适合您场景的投影图案。增加 Illumination Strength 可以提高投影图案的可见性,尤其是在环境光强烈的场景中。同时,您必须确保不超过占空比和最大激活时间。选择适当的 Illumination Mode 以将投影仪与相机曝光同步以获得最佳结果。在AlternateActiveIllumination Mode 下,如果环境光很少并且没有投影图案的图像太暗,请尝试降低 Illumination Strength 并增加 Exposure Time 以获得更好的图像亮度。
深度伪影#
以下是常见的深度伪影:
- 孤立点(Outliers):通常是指出现在工作范围内任何位置的小块深度值。
- 几何误差:被判定为不正确但接近真实深度的深度值。
滤波误差意味着将不正确的深度值设为无效。 BslDepthFill 参数可用于插值通常由误差滤波引起的小面积区域。更高的 Fill 值会增加可插值区域的数量。插值区域的大小直接取决于误差滤波的分割设置。
孤立点 可以使用 BslDepthSeg 参数进行滤除。该参数指定要移除的连通像素的最大数量。所有像素数量少于该值的区块都将被设为无效。该大小也用于 BslDepthFill 参数。由此滤镜引起的空洞通常会被进行插值处理。
减少孤立点可能性的另一种方法是提高最小置信度(minimum confidence),因为置信度是指像素不是孤立点的概率。
对于具有潜在较高 几何误差 的深度值,可以使用 BslDepthMaxDepthErr 参数的值。
对于某些应用,深度图像中的表面需要保持平滑。这可以通过启用Smoothing参数来实现。
如果相机图像包含未在深度图像中重构的高光(镜面反射),您可以检查这些高光是否由相机的投影仪引入(例如,只需关闭投影仪)。在这种情况下,Basler 建议使用Double-Shot模式。