R&D
CENTER

Photometric Stereo:用 2D 相機看出表面高低起伏的方法

一邊改變光源方向一邊拍攝多張影像,就能計算出每個像素的表面朝向哪一側。本課說明如何以曲率圖呈現肉眼與一般影像看不見的淺壓痕。

基礎4 分鐘1 瀏覽
本課重點
  1. 同一個表面會因光線來的方向不同而有不同亮度。利用這個差異,反推出每個像素的表面方向(法線)。
  2. 產出結果為反射率(albedo)、法線圖(normal map)、曲率圖(mean-curvature)。淺壓痕在曲率圖中最明顯。
  3. 不需要 3D 相機,只用 2D 相機與光源就能檢測表面凹凸。
  4. 拍攝期間零件必須保持靜止,像鏡面一樣光亮的表面需要額外處理。

金屬表面上淺淺的壓痕,顏色和亮度都與周圍相同,因此在一般光源拍攝的影像中幾乎看不見。但從側面打光時,壓痕一側的壁面會變亮,另一側則會變暗。Photometric Stereo 從多個方向有系統地量測這個現象,以像素為單位計算表面的斜率。

零件 依序點亮 8 個方向的光源拍攝 Albedo無陰影的反射率 Normal map表面方向 Mean curvature突顯壓痕·刮傷 Depth對法線積分
fineAi Viewer & Inspector 以 8 方向光源計算 Normal、Depth 與曲率。產出的圖可直接作為異常檢測模型的輸入。

原理:亮度由表面方向與光線方向的夾角決定

在霧面(漫反射)表面上,一點的亮度大致如下。

亮度 = 反射率 × cos(表面法線與光線方向之間的夾角)

光線正面照射表面時較亮,越傾斜就越暗。每個像素的未知數為反射率 1 個與法線方向 2 個(斜率),共 3 個。在已知光線方向的情況下拍攝 3 張以上,就能解出這些未知數。以 8 個方向拍攝,即使部分影像因陰影或高光而無法使用,仍能以其餘影像穩定求解。

四種產出結果

  • Albedo(反射率) — 去除光源造成的陰影後,表面原本的亮度。可看出髒污、變色、印刷不良。
  • Normal map(法線圖) — 每個像素表面朝向的方向。通常以 RGB 顏色表示 X·Y·Z 分量。
  • Depth(深度) — 對法線積分得到的相對高度。用來觀察整體的翹曲或變形。
  • Mean curvature(平均曲率) — 表面彎曲的急遽程度。平坦面接近 0,在壓痕·刮傷的邊緣數值會大幅跳動。淺瑕疵在曲率圖中最容易看見。

用於檢測的方法

在 Multi-Inspector 中,以檢測模式類型(modeN_type)選擇要使用哪一種圖。

模式 輸入影像
albedo, albedo-clahe 反射率圖(是否包含對比校正)
mean-curvature, mean-curvature-clahe 曲率圖
normal-map 法線圖

這些圖已經是整理好的影像,不需額外旋轉即可直接送入異常檢測模型。只用良品的曲率圖訓練,模型就會把曲率與正常狀態不同、出現跳動的地方找出來判為異常。

注意事項

  • 拍攝期間零件必須保持靜止。 在拍攝 8 張影像之間零件若移動,像素對應就會失效。請在靜止狀態下拍攝,或使用光源切換快速的控制器(如 IDGC)。
  • 光亮表面會偏離原理。 鏡面反射不符合上述公式,會產生高光。可排除出現高光的影像後再計算,或以擴散板使光線柔和。
  • 必須準確掌握光源方向。 光源位置改變時要重新校正。

如果需要真正的 3D 形狀(高度 mm),請使用 3D 相機。下一堂課 3D 視覺與點雲 會說明。