如何設定您的工業相機進行攝影指南。

前言

本指南說明部分相機參數的功能與影響,並嘗試展示如何取得適合人眼觀看的優質影像。

自動化影像處理(例如量測)通常不需要美觀的影像,而是需要來自感測器的原始資料,而這正是工業相機所提供的。

基本原則

光線

光線是攝影中最重要的部分。

光線不足、照射角度錯誤,或光源閃爍,都一定會導致不佳的成像結果。最佳效果通常來自於可控制的照明環境。

若需要檢測刮痕或輪廓,光線應從側面照射,使物體產生陰影,以突顯表面細節。

自動功能

曝光、自動增益與自動白平衡等自動功能雖然使用方便,但效果有限。若拍攝場景的光線充足且穩定,建議關閉自動模式,改為手動調整相機參數,以獲得最佳成像效果。

增益

應盡量避免使用增益,因為增益會產生雜訊。建議優先增加曝光時間,以提升影像亮度並維持較佳畫質。

曝光

如果場景是靜止的,曝光時間可以設得盡可能長。如果場景會移動,則必須縮短曝光時間,直到運動模糊達到可接受的程度為止。

影像亮度

影像中呈現白色、過度曝光的區域不包含任何有效資訊。相反地,看似較暗、曝光不足的區域,仍然可能保留可用的資訊。

因此,在影像中應盡量避免過度曝光的區域。

電腦螢幕

所謂「真彩色(True Color)」的電腦螢幕可以顯示 RGB 24 位元色彩,共約 16,777,216 種顏色。螢幕的設定,例如色溫與亮度,會影響相機影像的呈現效果。

如果工業相機使用 10 位元或 12 位元的像素格式,則必須轉換為螢幕可顯示的 8 位元格式。當然,這樣的轉換會造成影像資訊的損失。

此外,如果螢幕老舊或性能衰退,影像中的細節也可能會被削弱或遺失。

參數屬性

工業相機具有多種參數屬性,其中一部分是在感測器上的類比調整,例如增益(Gain);另一部分則是在影像數位化之後對影像資料進行處理,例如 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 位元。額外的位元數主要分布在色彩深度的低亮度(黑暗)範圍內。

直方圖

直方圖是一個實用的工具,用於顯示影像中的亮度分布。此處顯示影像中沒有黑色像素(如直方圖中的黃色區域所示)。它同時也顯示直方圖右側有許多過度曝光的像素。我們的目標是減少過度曝光像素的數量。

注意: 缺失的黑色像素無法被還原,這取決於感光元件的特性。

1.3 調整曝光時間

目前已禁用增益與白平衡。亮度設定為 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)

這張影像顯示,要獲得最佳結果,需要不只一張來源影像。透過從自動曝光所回傳的曝光時間中,以智慧方式計算多組曝光時間,可以讓整個流程變得不依賴特定光線條件。

由於此處理過程需要一些時間,因此適用於靜態場景與單張拍攝的情況。