금속 표면에 얕게 찍힌 자국은 색도 밝기도 주변과 같습니다. 그래서 일반 조명으로 찍은 영상에서는 거의 보이지 않습니다. 하지만 빛을 옆에서 비추면 찍힌 자리의 한쪽 벽은 밝아지고 반대쪽은 어두워집니다. Photometric Stereo는 이 현상을 여러 방향에서 체계적으로 측정해, 표면의 기울기를 픽셀 단위로 계산합니다.
원리 — 밝기는 표면 방향과 빛 방향의 각도로 정해진다
무광(난반사) 표면에서 한 점의 밝기는 대략 다음과 같습니다.
밝기 = 반사율 × cos(표면 법선과 빛 방향 사이의 각도)
빛이 표면을 정면으로 비추면 밝고, 비스듬할수록 어두워집니다. 미지수는 픽셀마다 반사율 1개와 법선 방향 2개(기울기), 모두 3개입니다. 빛의 방향을 아는 상태에서 3장 이상을 찍으면 이 미지수를 풀 수 있습니다. 8방향으로 찍으면 그림자나 하이라이트 때문에 일부 영상이 쓸모없어져도 나머지로 안정적으로 풀 수 있습니다.
결과물 네 가지
- 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 비전과 포인트 클라우드에서 다룹니다.