金属表面に浅くついた打痕は、色も明るさも周囲と同じです。そのため、通常の照明で撮影した画像ではほとんど見えません。しかし、光を横から当てると、打痕の片側の壁は明るくなり、反対側は暗くなります。フォトメトリックステレオは、この現象を複数の方向から体系的に計測し、表面の傾きをピクセル単位で計算します。
原理 — 明るさは、表面の向きと光の方向がなす角度で決まる
つや消し(拡散反射)の表面では、ある点の明るさはおおむね次のようになります。
明るさ = 反射率 × 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ビジョンと点群で扱います。