머신비전 검사, 소프트웨어보다 물리가 먼저다
OPTICS
초속 500 mm로 지나가는 부품을 1 ms 노출로 찍으면 상이 0.5 mm 번지고, 폭 50 μm 균열은 어떤 알고리즘으로도 되살릴 수 없게 됩니다.
흰 무광 커넥터 하우징의 균열을 놓고 화소 분해능과 노출 중 이동량과 피사계 심도를 차례로 계산해, 알고리즘을 맨 마지막에 두는 이유를 숫자로 확인했습니다.
읽는 시간 약 10분
대상은 흰색 무광 PBT로 사출한 커넥터 하우징입니다. 무광 표면은 빛을 사방으로 고르게 돌려보내서 반사점 걱정은 적은 대신, 폭 50 μm의 가는 균열이 배경과 만드는 밝기 차이가 작습니다. 부품은 초속 500 mm로 카메라 아래를 지나가고, 이송 기구 쪽 조건은 별도 검토가 필요합니다. 여기서는 카메라가 받아 드는 숫자만 다룹니다.
검사가 기대만큼 나오지 않으면 손이 먼저 가는 곳은 알고리즘입니다. 임계값을 낮추고, 필터를 바꾸고, 학습 사진을 늘리죠. 그래도 나아지지 않는 경우가 있는데, 대개 이미지에 균열이 애초에 담기지 않은 경우입니다. 없는 정보를 되살리려고 쓴 몇 주가 그대로 비용이 되고, 그사이 균열 난 하우징은 양품 상자로 들어갑니다.
그래서 저는 알고리즘을 열기 전에 세 가지 물리량을 계산합니다. 화소 한 칸의 크기, 노출하는 동안 부품이 움직이는 거리, 초점이 맞는 깊이입니다. 셋 중 하나라도 모자라면 그 뒤의 작업은 결과를 바꾸지 못합니다.
균열이 화소 세 칸에 걸쳐야 이미지에 남는다
처음 볼 물리량은 한 화소가 부품 위에서 차지하는 길이, 곧 물체측 화소 분해능1입니다. 시야2 40 mm를 가로 2,448 px 카메라로 보면 한 칸이 16.3 μm이고, 폭 50 μm 균열은 3.06칸에 걸칩니다. 제 기준은 가장 가는 결함이 세 칸 이상이라서, 이 조합은 기준선에 겨우 걸려 있습니다.
세 칸이 필요한 이유는 화소 경계와 균열이 겹치는 방식에 있습니다. 균열이 한 칸 폭이면 경계에 걸치는 순간 밝기 차이가 두 칸으로 반씩 나뉘어 배경에 묻히고, 같은 균열이 놓인 위치에 따라 보였다 사라집니다. 세 칸이면 적어도 한 칸은 균열로 꽉 차서 위치와 상관없이 대비가 남습니다. 시야를 넓히고 싶어지는 순간이 오면, 그만큼 칸이 커져 균열이 세 칸 아래로 내려간다는 점을 같이 계산해야 합니다. 같은 40 mm를 가로 1,920 px 카메라로 보면 한 칸이 20.8 μm로 커지고, 균열은 2.4칸으로 떨어져 기준을 밑돕니다. 카메라 값을 아끼려고 고른 한 단계 낮은 화소 수가 검출 여부를 가르는 셈입니다.
노출하는 1 ms 동안 부품은 0.5 mm를 지나간다
두 번째 물리량은 노출 중 이동량입니다. 셔터가 열려 있는 동안 부품이 움직이면 그 거리만큼 상이 끌리는 모션 블러3가 생기고, 이동량은 속도에 노출 시간4을 곱하면 나옵니다. 초속 500 mm로 지나가는 부품을 1 ms 동안 찍으면 0.5 mm, 화소로 30.6칸입니다. 폭 3칸짜리 균열이 30칸 길이로 문질러지니, 이미지에는 흐린 얼룩만 남습니다.
번짐을 반 칸, 곧 8.2 μm 이하로 묶으려면 노출이 16.3 μs 이하여야 합니다. 1 ms에서 16.3 μs로 줄이면 들어오는 빛은 61분의 1이 됩니다. 화소를 더 촘촘히 해서 풀려고 해도 소용이 없습니다. 칸이 작아지면 같은 0.5 mm가 더 많은 칸에 걸칠 뿐이라서, 분해능을 올릴수록 노출은 더 짧아져야 합니다.
흔한 생각
번진 이미지는 선명화 필터나 학습으로 되살리면 됩니다.
1 ms 노출을 계산해 보면
균열이 30.6칸 길이로 문질러져서, 필터가 되살릴 균열의 폭 정보가 이미지에 남아 있지 않습니다.
고속 라인에서 조명이 성능의 천장을 정하는 이유가 여기에 있습니다. 노출을 줄인 만큼 빛을 더해 주지 않으면 이미지가 어두워지고, 균열이 만드는 작은 밝기 차이가 센서 잡음 아래로 내려갑니다. 소프트웨어는 남아 있는 대비를 더 정밀하게 읽을 수는 있어도, 셔터가 열린 동안 사라진 정보를 만들어 내지는 못합니다.
초점이 맞는 깊이가 안착 높이 편차를 덮어야 한다
세 번째 물리량은 피사계 심도5입니다. 부품이 치구에 앉는 높이가 매번 같지는 않아서, 안착 높이가 ±0.5 mm 흔들린다고 가정하면 앞뒤를 합쳐 1.0 mm 안에서 초점이 유지되어야 합니다. 가로 8.45 mm 센서로 40 mm를 보는 배율 0.21에 25 mm 렌즈라면 렌즈 중심에서 부품까지 약 143 mm이고, 허용 착란원6을 화소 2칸인 6.9 μm로 잡으면 f/2.8에서 심도가 1.05 mm입니다. 여유가 거의 없죠.
조리개 값7을 f/4로 한 단 조이면 심도는 1.50 mm로 넓어지지만, 들어오는 빛은 다시 절반이 됩니다. 더 조이면 회절8이 발목을 잡습니다. f/4에서 회절로 번진 점의 지름은 6.5 μm로 1.9칸이고, f/8에서는 13.0 μm로 3.8칸이 되어 3칸짜리 균열보다 커집니다. 저라면 이 셋업은 f/4에서 멈춥니다.
세 물리량은 모두 빛의 양으로 모인다
세 숫자를 함께 놓고 보면 공통의 상대가 보입니다. 분해능을 지키려고 시야를 좁히면 카메라나 화소가 늘고, 번짐을 막으려고 노출을 16.3 μs로 줄이면 빛이 61분의 1, 심도를 지키려고 f/4로 조이면 다시 절반이 됩니다. 1 ms에 f/2.8로 찍던 연속 조명과 같은 밝기를 16.3 μs에 f/4로 얻으려면 순간 조도9가 약 125배여야 하고, 이 숫자가 스트로브 조명10을 고르는 출발점입니다. 연속 조명의 밝기를 그대로 둔 채 노출과 조리개만 바꾸면 같은 장면이 125분의 1 밝기로 찍힌다는 뜻이기도 합니다.
30.6칸
초속 500 mm 부품을 1 ms 노출로 찍을 때 상이 끌리는 길이 (한 칸 16.3 μm)
16.3μs
번짐을 반 칸(8.2 μm)으로 묶는 가장 긴 노출 시간
125배
1 ms·f/2.8 연속 조명과 같은 밝기를 16.3 μs·f/4에서 얻는 데 필요한 순간 조도
설계 순서도 이 계산을 그대로 따릅니다. 결함 크기에서 한 칸이, 한 칸에서 시야와 화소 수가, 속도에서 노출이, 노출에서 빛이 나옵니다.

그림의 여섯 단계 가운데 알고리즘이 맨 아래에 있는 까닭은 앞의 다섯 칸이 정해져야 알고리즘 파라미터가 기댈 이미지가 생기기 때문입니다. 순서를 거꾸로 밟으면 나중에 어디를 고쳐야 할지조차 가려낼 수 없습니다.
| 물리량 | ① 최소 불량 크기 | ② 광학 셋업 · WD | ③ 알고리즘 파라미터 · 풀어 쓰면 |
|---|---|---|---|
| 화소 분해능 | 50 μm 균열 = 3.06칸 (16.3 μm/칸) | 가로 2,448 px 화소 3.45 μm, 25 mm 렌즈, 시야 40 mm, WD 약 143 mm (렌즈 중심 기준) | 균열 후보 최소 폭 3 px. 시야를 넓히면 이 값부터 다시 계산한다 |
| 노출 중 이동량 | 번짐 반 칸 = 8.2 μm 이하 | 초속 500 mm, 노출 16.3 μs 이하, 스트로브 조명 (연속 조명 대비 순간 조도 약 125배) | 원본에서 가장자리 번짐 폭을 재어 반 칸을 넘는 프레임은 판정 전에 영상 품질 경고 |
| 피사계 심도 | 안착 높이 ±0.5 mm(가정)에서도 균열 3칸 유지 | f/4, 심도 1.50 mm, 회절 번짐 1.9칸 (f/8이면 3.8칸) | 초점 평가값이 기준보다 낮은 프레임은 판정에서 빼고 재촬영 신호 |
세 줄 가운데 하나라도 빈칸이면 ③의 숫자는 뜻을 잃습니다. 알고리즘 파라미터는 앞의 두 열이 채워진 이미지를 전제로 한 값이니까요. 반대로 결함이 10칸 이상으로 크고 부품이 멈춘 상태에서 찍힌다면 물리량은 이미 넉넉하니, 알고리즘과 학습 데이터에 손을 대는 편이 빠릅니다. 무광 하우징에서 균열 대비가 이 계산만큼 나올지는 샘플 테스트 전 확언 불가입니다.
사람 눈에 안 보이면 알고리즘에도 없다
검사가 잘 안 될 때 던질 질문은 하나입니다. 사람이 이 원본 이미지를 100 % 배율로 봤을 때 결함이 보이는가. 저는 알고리즘 창을 열기 전에 원본에서 균열이 세 칸 이상으로 담겼는지, 가장자리 번짐이 반 칸 안쪽인지, 화면 끝까지 초점이 맞았는지를 눈으로 봅니다. 하나라도 어긋나면 고칠 곳은 광학과 조명입니다. 세 질문에 모두 그렇다고 답할 수 있어야 임계값을 만질 차례가 옵니다.
머신비전 엔지니어가 셋업 단계에서 이 숫자를 맞춰 두면 시운전에서 재학습을 되풀이하는 시간이 줄어듭니다. 견적서를 받아 보는 쪽에서 보면 스트로브 조명과 컨트롤러는 카메라 값에 더해지는 비용이지만, 그 비용을 아끼면 검사기 전체가 숫자를 못 내는 장치가 됩니다. 이 글은 기술 설명이며 투자 권유가 아닙니다. 자세한 내용은 면책조항을 참고하세요.
현장 노트
이 하우징으로 새 셋업을 올린다면 저는 균열 샘플 하나를 정지 상태에서 찍고, 같은 샘플을 초속 500 mm로 지나가게 하며 노출 16 μs와 50 μs 두 장을 나란히 비교합니다. 50 μs에서는 번짐이 1.5칸이 되니, 균열 가장자리가 눈에 띄게 무뎌지는지를 보면 반 칸 기준이 이 재질에서도 맞는지 알 수 있습니다. 치구에 0.5 mm 심을 끼워 높이를 바꾼 사진도 한 장씩 남겨, f/4에서 화면 끝 초점이 버티는지 확인합니다.
현장 체크포인트
정지 사진과 움직이는 사진을 나란히 놓고 나면, 아래 질문에 숫자로 답할 수 있습니다.
- WD 약 143 mm(25 mm 렌즈, 렌즈 중심 기준)가 스트로브 조명과 치구를 넣고도 확보되는가? (조명이 렌즈 옆에 들어갈 자리가 있는지)
- 가장 가는 균열이 세 칸 이상으로 담기는가? (50 μm 균열이라면 한 칸 16.7 μm 이하)
- 노출 시간과 이동 속도로 계산한 번짐이 반 칸 이하인가? (초속 500 mm라면 16.3 μs 이하)
- 안착 높이 편차가 피사계 심도 안에 드는가? (f/4에서 1.50 mm, f/2.8에서 1.05 mm)
- 스트로브 조명이 연속 조명 대비 약 125배의 순간 조도를 낼 수 있는가? (조명 컨트롤러 사양서로 확인하는지)
- 원본 이미지를 100 % 배율로 봤을 때 사람 눈에 균열이 보이는가? (안 보인다면 광학으로 돌아가는지)
자주 묻는 질문
카메라 화소 수를 늘리면 세 문제가 한꺼번에 풀리지 않나요?
화소를 늘리면 분해능은 좋아지지만, 같은 시야에서 한 칸이 작아지는 만큼 노출 중 번짐이 더 많은 칸에 걸쳐서 노출을 더 줄여야 합니다. 화소가 작아지면 회절 번짐도 상대적으로 커져 조리개를 조일 여유가 줄어듭니다. 화소 수는 세 물리량을 모두 다시 계산하게 만드는 변수라고 보는 편이 정확합니다.
AI 모델이라면 흐린 이미지에서도 균열을 찾지 않나요?
모델은 이미지에 남은 패턴을 학습하므로, 번짐이 반 칸 안쪽이고 균열이 세 칸에 걸린 이미지라면 사람보다 꾸준하게 찾아냅니다. 1 ms 노출처럼 균열이 30칸 길이로 문질러진 이미지에서는 균열과 얼룩을 가를 정보가 남지 않아서, 학습 사진을 늘려도 판정이 흔들립니다. 모델의 실력도 광학이 넘겨준 이미지 안에서만 발휘됩니다.
용어 풀이
- [1] 물체측 화소 분해능 object-side pixel resolution
화소 한 칸이 부품 위에서 차지하는 길이입니다. 시야를 가로 화소 수로 나눠 μm/px로 적습니다. ↩ - [2] 시야 field of view, FOV
카메라 한 화면에 담기는 부품 위의 범위입니다. ↩ - [3] 모션 블러 motion blur
노출하는 동안 물체가 움직여 상이 이동 방향으로 끌리듯 번지는 현상입니다. ↩ - [4] 노출 시간 exposure time
센서가 빛을 모으는 시간입니다. 짧을수록 번짐은 줄고 이미지는 어두워집니다. ↩ - [5] 피사계 심도 depth of field, DOF
초점을 한 거리에 맞췄을 때 앞뒤로 또렷하게 보이는 깊이의 폭입니다. 조리개를 조일수록 넓어집니다. ↩ - [6] 허용 착란원 circle of confusion
초점이 어긋나 점이 번진 원을 어디까지 또렷하다고 볼지 정한 지름입니다. 본문에서는 화소 2칸인 6.9 μm로 잡았습니다. ↩ - [7] 조리개 값 f-number
초점 거리를 렌즈 구멍 지름으로 나눈 값입니다. f/2.8에서 f/4로 한 단 조이면 들어오는 빛은 약 절반이 됩니다. ↩ - [8] 회절 diffraction
빛이 좁은 구멍을 지나며 퍼지는 현상입니다. 조리개를 조일수록 점이 크게 번져 미세 결함의 가장자리를 흐립니다. ↩ - [9] 조도 illuminance
면에 닿는 빛의 양으로 단위는 lx입니다. 노출을 줄인 만큼 조도를 올려야 같은 밝기가 나옵니다. ↩ - [10] 스트로브 조명 strobe lighting
노출 순간에만 짧고 강하게 켜지는 조명입니다. 연속 조명에 비해 순간 밝기를 크게 올릴 수 있습니다. ↩
참고 자료
- 계산식: 한 칸 = 시야 ÷ 가로 화소 수, 노출 중 이동량 = 속도 × 노출 시간, 허용 노출 = 0.5 × 한 칸 ÷ 속도, 배율 m = 센서 가로 ÷ 시야, 렌즈 중심–물체 거리 u = f × (1 + m) ÷ m, 피사계 심도 ≈ 2 × N × c × (1 + m) ÷ m², 회절 번짐 지름 ≈ 2.44 × λ × N × (1 + m) (λ = 0.55 μm), 빛의 비 = 노출 시간 비 × (조리개 값 비)²
- 가정값: 2,448 × 2,048 px·화소 3.45 μm 카메라, 25 mm 렌즈, 안착 높이 ±0.5 mm, 기준 연속 조명 1 ms·f/2.8은 계산 예시를 위한 가정
함께 읽으면 좋은 글 — 머신비전 렌즈 초점거리 계산하는 법 · 근사식이 놓치는 FOV 오차를 잡는 머신비전 렌즈 계산기 · 비전 카메라와 조명의 자리는 기구 설계 단계에서 먼저 잡는다
