如何设置您的工业相机进行摄影指南。

前言

本指南说明部分相机参数的功能与影响,并尝试展示如何取得适合人眼观看的优质影像。

自动化图像处理(例如测量)通常不需要美观的图像,而是需要来自传感器的原始数据,而这正是工业相机所提供的。

基本原则

光线

光线是摄影中最重要的部分。

光线不足、照射角度错误,或光源闪烁,都一定会导致不佳的成像结果。最佳效果通常来自于可控制的照明环境。

若需要检测刮痕或轮廓,光线应从侧面照射,使物体产生阴影,以突显表面细节。

自动功能

曝光、自动增益与自动白平衡等自动功能虽然使用方便,但效果有限。若拍摄场景的光线充足且稳定,建议关闭自动模式,改为手动调整相机参数,以获得最佳成像效果。

增益

应尽量避免使用增益,因为增益会产生噪声。建议优先增加曝光时间,以提升图像亮度并维持较佳画质。

曝光

如果场景是静止的,曝光时间可以设得尽可能长。如果场景会移动,则必须缩短曝光时间,直到运动模糊达到可接受的程度为止。

图像亮度

图像中呈现白色、过度曝光的区域不包含任何有效信息。相反地,看似较暗、曝光不足的区域,仍然可能保留可用的信息。

因此,在图像中应尽量避免过度曝光的区域。

电脑屏幕

所谓"真彩色(True Color)"的电脑屏幕可以显示 RGB 24 位色彩,共约 16,777,216 种颜色。屏幕的设置,例如色温与亮度,会影响相机图像的呈现效果。

如果工业相机使用 10 位或 12 位的像素格式,则必须转换为屏幕可显示的 8 位格式。当然,这样的转换会造成图像信息的损失。

此外,如果屏幕老旧或性能衰退,图像中的细节也可能被削弱或遗失。

参数属性

工业相机具有多种参数属性,其中一部分是在传感器上的模拟调整,例如增益;另一部分则是在图像数字化之后对图像数据进行处理,例如 Gamma与色调映射(Tone Mapping)。

曝光

曝光时间决定传感器在图像被读出并转换为电压之前,能够接收光线的时间长短。

增益

增益是在传感器上的一种线性模拟放大器。增益越高,噪声也会越多。

白平衡

白平衡用来调整图像中的红、绿、蓝三个色彩成分,使图像呈现更接近真实的色彩。

灰界算法 (Grayworld)

灰界算法自动算法尝试将直方图中红、绿、蓝三原色的最大值调整至相同的亮度值。这在多数情况下表现良好。但在拍摄色调单一的图像时(例如:蓝色地毯),这会导致图像呈现灰色。

色温

色温自动算法则会考虑光源特性进行校正,因此可以保留物体原本的颜色,例如上述蓝色地毯仍然保持蓝色。

饱和度

饱和度用来调整图像的色彩强度,从完全无彩度(灰度图像)到过度饱和的强烈色彩。

默认值为 100%,将其调整到约 130% 可以获得较为鲜明且自然的色彩效果。

Gamma

https://en.wikipedia.org/wiki/Gamma_correction

Gamma 用来调整图像的亮度分布。Gamma 值小于 1.0 会使图像变亮,而大于 1.0 则会使图像变暗。

色调映射

色调映射与 Gamma 类似,皆属于直方图函数。它是一项强大的属性,能让高动态范围(High Dynamic Range)图像在显示器上清晰呈现。当原始图像格式的每个颜色通道为 10 位或 12 位时,其效果最佳。显示器上的图像必须缩减(Downscaled)至每个颜色通道 8 位。

强度

强度用于调整查找表(LUT)转换的强度。

全局亮度因子

全局亮度因子用于调整比例:即应该使用多少全局图像亮度来偏移次方的因子表(Pow-factor-table),以及应该使用多少像素局部亮度。

增强暗部细节

存在一个具有极暗与极亮区域的高动态场景:右上角的晶体部分过度曝光,而中间孔洞处的黑暗区域则看不到任何细节。

图像格式

应使用 RGB64 图像格式。它能提供每个颜色通道 10 位或 12 位的色彩深度。37U 相机系列提供 10 位,其他系列则提供 12 位。额外的位数主要分布在色彩深度的低亮度(黑暗)范围内。

直方图

直方图是一个实用的工具,用于显示图像中的亮度分布。此处显示图像中没有黑色像素(如直方图中的黄色区域所示)。它同时也显示直方图右侧有许多过度曝光的像素。我们的目标是减少过度曝光像素的数量。

注意:缺失的黑色像素无法被还原,这取决于感光元件的特性。

调整曝光时间

目前已禁用增益与白平衡。亮度设置为 0,以降低黑阶并将直方图向左移动。

接着调整曝光时间,将其设定在一个直方图右侧不会显示任何过度曝光值的数值。

当前的曝光时间为 1/69 秒,且仅有极少数像素的亮度接近 255。

色调映射

现在使用色调映射来增亮黑暗区域,同时保持较亮区域的亮度不变。首先调整"强度 (Intensity)"属性。

"强度 (Intensity)"的数值不应设得太高,以免失去亮部像素的细节。此时,原本位于暗处孔洞中的晶体已变得清晰可见。

接着,调整"全局亮度因子 (Global Brightness Factor)",以将直方图的分布稍微展开。

Gamma

使用 Gamma 来稍微增亮图像。使用时须格外小心,因为它会导致大量细节流失:

锐利度

通过锐利度功能,可以使细节之间的边缘更加突出:

在黑暗区域中会显示出更多细节。

饱和度

提高饱和度可以增强某些彩色细节,使影像看起来更鲜明:

只使用曝光时间的孔洞影像:

为了只显示黑暗孔洞中的细节,可以将曝光时间作为唯一需要设定的属性:

这只是用来示范在没有任何图像处理的情况下所能达到的结果。

总结

当然,如果在这个场景中使用光源照射,让孔洞从阴影中显现出来,会得到更好的结果。

在此示例中,所有自动功能都已关闭。如果光线条件改变,影像就会出现过曝或欠曝的情况,此时必须重新调整参数。工业相机主要是为"稳定且一致的光照环境"所设计。

为了克服这种问题,可以使用能够接收不同曝光时间(因此具有不同亮度)的影像,并将它们智能地合成的软件。这个技术称为 HDR(高动态范围成像),例如可以通过 OpenCV 实现。

https://docs.opencv.org/4.x/d2/df0/tutorial_py_hdr.html

HDR

同一个场景以不同的曝光时间拍摄四次,并使用第 6.9 节提到的 OpenCV 算法进行合成后,结果如下:

经处理的单张影像所使用的曝光时间如下:

exposure_times = np.array([0.1111, 0.0588, 0.029, 0.014], dtype=np.float32)

这张图像显示,要获得最佳结果,需要不只一张来源图像。通过从自动曝光所返回的曝光时间中,以智慧方式计算多组曝光时间,可以让整个流程变得不依赖特定光线条件。

由于此处理过程需要一些时间,因此适用于静态场景与单张拍摄的情况。