R&D
CENTER

フォトメトリックステレオ — 2Dカメラで表面の凹凸を見る方法

照明の方向を変えながら複数枚を撮影すると、ピクセルごとに表面がどちらを向いているかを計算できます。目視や通常の画像では見えない浅い打痕を、曲率マップで浮かび上がらせる原理を説明します。

基本5 分1 閲覧
この講座のポイント
  1. 同じ表面でも、光が当たる方向によって明るさが変わります。この差から、ピクセルごとの表面の向き(法線)を逆算します。
  2. 出力は、反射率(albedo)、法線マップ(normal map)、曲率マップ(mean-curvature)です。浅い打痕は曲率マップで最も顕著に現れます。
  3. 3Dカメラを使わず、2Dカメラと照明だけで表面の凹凸を検査できます。
  4. 撮影中は部品が静止している必要があり、鏡のように光沢のある面には追加の処理が必要です。

金属表面に浅くついた打痕は、色も明るさも周囲と同じです。そのため、通常の照明で撮影した画像ではほとんど見えません。しかし、光を横から当てると、打痕の片側の壁は明るくなり、反対側は暗くなります。フォトメトリックステレオは、この現象を複数の方向から体系的に計測し、表面の傾きをピクセル単位で計算します。

部品 照明8方向を順に点灯して撮影 Albedo陰影のない反射率 Normal map表面の向き Mean curvature打痕・キズを強調 Depth法線を積分
fineAi Viewer & Inspector は、8方向照明から Normal・Depth・曲率を計算します。結果マップは、そのまま異常検知モデルの入力になります。

原理 — 明るさは、表面の向きと光の方向がなす角度で決まる

つや消し(拡散反射)の表面では、ある点の明るさはおおむね次のようになります。

明るさ = 反射率 × cos(表面法線と光の方向がなす角度)

光が表面に正面から当たれば明るく、斜めになるほど暗くなります。未知数は、ピクセルごとに**反射率1つと法線方向2つ(傾き)**の計3つです。光の方向がわかっている状態で3枚以上撮影すれば、この未知数を解けます。8方向で撮影すれば、影やハイライトのために一部の画像が使えなくなっても、残りで安定して解けます。

4種類の出力

  • Albedo(反射率) — 照明による陰影を除いた、表面本来の明るさです。シミ、変色、印刷不良が見えます。
  • Normal map(法線マップ) — ピクセルごとの表面が向いている方向です。通常、X・Y・Z成分をRGBの色で表示します。
  • Depth(深さ) — 法線を積分して得られる相対的な高さです。全体的な反りや変形を確認します。
  • Mean curvature(平均曲率) — 表面がどれだけ急に曲がっているかを表します。平坦な面は0に近く、打痕やキズの縁で値が大きく跳ね上がります。浅い欠陥は、曲率マップで最もよく見えます。

検査での使い方

Multi-Inspector では、検査モードの種類(modeN_type)で、どのマップを使うかを選びます。

モード 入力画像
albedo, albedo-clahe 反射率マップ(コントラスト補正の有無)
mean-curvature, mean-curvature-clahe 曲率マップ
normal-map 法線マップ

これらのマップはすでに整えられた画像であるため、追加の回転処理なしで、そのまま異常検知モデルに入力されます。正常部品の曲率マップだけで学習すると、曲率が正常と異なって跳ね上がる箇所を異常として検出します。

注意点

  • **撮影中は部品が静止している必要があります。**8枚を撮影する間に部品が動くと、ピクセルの対応が崩れます。静止状態で撮影するか、照明の切り替えが高速なコントローラー(IDGC など)を使います。
  • **光沢のある面では原理が成り立ちません。**鏡面反射は上の式に従わず、ハイライトが生じます。ハイライトが生じた画像を除いて計算するか、拡散板で光を和らげます。
  • **照明の方向を正確に把握している必要があります。**照明の位置が変わったら、再度キャリブレーションします。

本当の3D形状(高さmm)が必要な場合は、3Dカメラを使います。次の講義3Dビジョンと点群で扱います。