비전 검사 프로젝트가 막히는 원인을 거슬러 올라가 보면, 모델보다 영상에서 시작하는 경우가 많습니다. 결함이 영상에 흐릿하게 찍히면 학습 데이터를 아무리 늘려도 정확도가 오르지 않습니다. 반대로 결함이 또렷하게 보이는 영상이라면 단순한 규칙으로도 판정할 수 있습니다.
카메라와 해상도
해상도는 "몇 메가픽셀 카메라를 쓸까"가 아니라 찾아야 할 가장 작은 결함이 몇 픽셀로 찍히는가에서 거꾸로 계산합니다.
- 검사할 시야(FOV)의 가로 길이를 정합니다. 예: 60 mm.
- 가장 작은 결함 크기를 정합니다. 예: 0.2 mm.
- 그 결함이 적어도 몇 픽셀에 걸쳐야 안정적으로 보이는지 정합니다. 현장에서는 보통 3~5픽셀 이상을 목표로 합니다.
- 필요한 가로 픽셀 수 = 60 ÷ 0.2 × 4 ≈ 1,200픽셀. 여기에 여유를 두고 카메라를 고릅니다.
부품이 움직이는 중에 찍는다면 노출 시간도 함께 봐야 합니다. 노출 동안 부품이 1픽셀 이상 움직이면 경계가 번집니다. 긴 부품이나 회전체처럼 한 장에 담기 어려운 대상은 한 줄씩 이어 찍는 라인 스캔 카메라를 씁니다. fineAi Viewer Pro가 라인 스캔용입니다.
조명은 대비를 만드는 도구
같은 부품도 조명에 따라 결함이 보이기도 하고 사라지기도 합니다. 조명을 고를 때는 "결함이 주변과 어떻게 다르게 빛을 반사하는가"를 생각합니다.
| 조명 | 잘 보이는 것 | 예 |
|---|---|---|
| 링 조명 | 전체를 고르게 밝힘, 색·얼룩 | 일반 외관 |
| 동축 조명 | 평평하고 반짝이는 면의 긁힘·찍힘 | 금속 가공면 |
| 백라이트 | 외곽 형상, 구멍, 치수 | 실루엣 측정 |
| 방향(사광) 조명 | 표면 요철, 얕은 긁힘 | 미세 찍힘 |
방향 조명을 여러 개 두고 차례로 켜며 찍으면 표면의 높낮이까지 계산할 수 있습니다. 이 방법은 Photometric Stereo 강의에서 다룹니다.
트리거 — 언제 찍을 것인가
부품이 컨베이어 위를 지나간다면 카메라는 정확히 같은 위치에서 찍어야 합니다. 센서 신호를 카메라에 직접 넣는 하드웨어 트리거(GPIO)를 쓰면 소프트웨어 지연과 상관없이 일정한 위치에서 촬영됩니다. 로봇이 부품을 들고 카메라 앞에 세우는 셀에서는 로봇 컨트롤러가 Modbus 신호로 촬영을 요청합니다.
레시피로 조건을 고정한다
학습 데이터를 모을 때와 현장에서 검사할 때 조건이 다르면, 모델은 처음 보는 영상을 받게 됩니다. 그래서 카메라 노출·게인, 조명 채널과 밝기, 렌즈 설정을 레시피로 저장합니다. fineAi Viewer에서 만든 레시피는 Multi-Inspector로 변환해 가져갈 수 있어, 수집 단계와 검사 단계가 같은 조건에서 돌아갑니다.
모델에 넣기 전의 전처리
촬영한 영상은 그대로 쓰기도 하지만, 몇 가지 처리를 거치면 학습이 안정됩니다. Multi-Inspector의 검사 모드 설정(modeN_type)에서 고를 수 있는 전처리는 다음과 같습니다.
- histogram-eq / clahe — 밝기 분포를 펴서 어두운 영역의 결함을 드러냅니다. CLAHE는 영상을 작은 구역으로 나눠 구역마다 대비를 조정하므로, 한쪽만 어두운 영상에 유리합니다.
- live_canny — Canny 에지로 부품의 윤곽 마스크를 만들고, 부품만 남긴 채 화면 중앙으로 옮깁니다. 배경의 컨베이어 무늬나 지그가 판정에 끼어들지 않습니다.
- rotation-fix — 부품을 같은 방향으로 돌려 세웁니다. 다음 강의 정렬에서 자세히 설명합니다.
현장 점검표
- 가장 작은 결함이 3~5픽셀 이상으로 찍히는가?
- 같은 부품을 10번 찍었을 때 밝기와 위치가 일정한가?
- 결함이 있는 샘플과 없는 샘플을 나란히 놓고 봤을 때, 사람 눈에 차이가 분명한가?
- 레시피를 저장했고, 수집과 검사에 같은 레시피를 쓰는가?
마지막 질문에 자신 있게 "예"라고 답할 수 있으면, 모델을 고르는 단계로 넘어가도 됩니다.