본문 바로가기
사분면으로 나뉜 저각도 링 조명 중 한 구역만 점등해 사출품 양각 문자에 낮은 각도로 빛을 비추고 문자 뒤쪽에 그림자를 만드는 OCR 조명 구조
비전 알고리즘,  조명 설계

사출품 각인 문자의 OCR 판독률은 조명 각도 하나로 갈린다

LIGHTING

색이 없는 성형 문자는 그림자로 읽힙니다. 높이 50 μm, 획 간격 300 μm 문자라면 조명 앙각을 18.4° 아래로 내리면 안 됩니다.

검은 무광 ABS 하우징의 캐비티 번호를 두고 그림자 길이, 링 조명 지름이 정하는 문자 위치, 네 방향 점등의 차분 합성을 계산했습니다.

읽는 시간 약 12분

검은 무광 ABS 하우징 뒷면에는 금형에서 함께 성형된 캐비티 번호가 있습니다. 잉크 인쇄와 달리 문자와 바탕이 같은 수지, 같은 색이고, 둘을 가르는 것은 50 μm 남짓한 높이 차이뿐입니다. 무광 수지는 빛을 사방으로 흩는 난반사(diffuse reflection)1 면이라 위에서 고르게 비추면 문자 윗면과 바탕이 같은 회색으로 찍히고, OCR(광학 문자 인식)2 엔진은 거의 빈 화면에서 글자를 찾다가 엉뚱한 문자를 내놓습니다. 캐비티 번호를 잘못 읽으면 불량이 난 금형 캐비티를 짚지 못해 모든 캐비티를 함께 멈춰야 하고, 판독에 실패한 부품을 사람이 다시 읽는 자리가 상시 인력으로 굳습니다. 오독이 섞인 이력은 판독 실패보다 더 위험합니다. 틀린 기록이 맞는 기록처럼 남아, 나중에 원인을 거슬러 찾을 때 엉뚱한 캐비티를 가리키니까요.

해법은 높이 차이를 밝기 차이로 바꾸는 저각도 링 조명(low-angle ring light)3입니다. 빛을 수평 가까이 눕혀 비추면 획 옆 바탕에 그림자가 생기고, 그 그림자가 글자의 윤곽이 됩니다. 저는 문자 높이 50 μm, 획 간격 300 μm인 캐비티 번호를 두고 조명 각도를 감으로 고르는 대신 도면의 두 숫자에서 계산했습니다.

위에서 비추면 같은 수지는 같은 회색이 된다

무광 표면의 밝기는 빛이 표면에 닿는 각도의 코사인을 따릅니다. 바닥에서 잰 조명 각도를 앙각(elevation)4 E라 하면, 평평한 바탕은 수직 조명일 때를 1로 놓고 sin E만큼 밝습니다. 앙각 20°에서는 0.34, 45°에서는 0.71입니다. 문자의 윗면도 평평하니 바탕과 같은 값이 나오고, 위에서 아무리 밝게 비춰도 둘의 차이는 생기지 않습니다. 높이는 영상에 남지 않습니다.

차이는 획의 옆에서 생깁니다. 빛을 마주 보는 벽은 기울기만큼 밝아지고, 반대쪽 바탕에는 획이 빛을 가려 그림자가 집니다. 해가 낮게 깔린 저녁, 보도블록 틈마다 그림자가 길게 늘어져 블록 무늬가 한낮보다 또렷해지는 것과 같은 이치예요. 그림자의 길이는 높이와 빛의 각도로 정해지고, 이 길이가 OCR에 넘겨줄 윤곽의 굵기가 됩니다.

앙각을 낮추면 바탕도 함께 어두워진다는 점을 놓치면 안 됩니다. 20°에서 바탕 밝기는 수직 조명의 3분의 1 남짓이라, 같은 노출이면 영상 전체가 가라앉습니다. 저라면 이 셋업의 노출과 조명 출력을 처음부터 세 배쯤 여유를 두고 잡습니다. 광택 PC처럼 정반사가 강한 수지라면 빛을 마주 보는 벽에서 하이라이트가 하얗게 날아갈 수 있어, 같은 계산이 맞을지는 샘플 테스트 전 확언 불가입니다.

그림자 길이는 높이를 tan으로 나눈 값

높이 h인 획이 앙각 E의 빛을 받으면 바탕에 L = h ÷ tan E 길이의 그림자가 생깁니다. 그림자가 너무 짧으면 화소 몇 칸에 그쳐 윤곽이 되지 못하고, 너무 길면 옆 획과의 틈을 덮어 두 획이 한 덩어리로 붙습니다. 제 기준은 그림자가 3 px 이상이면서 획 간격의 절반 이하인 범위입니다. 아래 단면도에 높이와 각도, 그림자와 밝기 단면의 관계를 함께 그렸습니다.

저각도 입사광이 양각 획과 음각 홈에 만드는 밝은 벽면과 그림자, 그림자 길이 L = h / tan E 관계와 상면 영상의 밝기 프로파일을 함께 보인 단면도
획 높이 h와 앙각 E로 정해지는 그림자 길이가 밝기 단면에서 어두운 골의 폭이 되는 것을 따라가 보면 됩니다.

계산 셋업은 2,448 × 2,048 px 센서에 35 mm F/8 렌즈로 가로 30.0 mm를 보는 구성이고, 화소 하나가 12.25 μm입니다(모두 가정). 획 간격 300 μm의 절반인 150 μm를 넘지 않으려면 E ≥ atan(50 ÷ 150) = 18.4°이고, 그림자가 3 px(36.8 μm)보다 짧아지지 않으려면 E ≤ atan(50 ÷ 36.8) = 53.7°입니다. 쓸 수 있는 앙각은 그 사이입니다. 20°를 고르면 그림자는 50 ÷ tan 20° = 137 μm, 11.2 px이고, 10°로 내리면 284 μm로 늘어 300 μm 틈을 거의 다 덮어 숫자 8과 0이 붙어 보이기 시작합니다. 반대로 45°라면 그림자가 50 μm, 4.1 px로 짧아집니다. 읽히기는 해도 여유가 적습니다.

범위 안에서 낮은 쪽을 고르는 까닭은 금형 마모입니다. 문자가 닳아 얕아지면 그림자도 짧아지는데, 20°에서 그림자 3 px를 만드는 최소 높이는 36.8 × tan 20° = 13.4 μm입니다. 50 μm 문자가 13.4 μm까지 닳아도 읽힌다는 뜻이죠. 같은 계산을 45°에서 하면 최소 높이가 36.8 μm라, 문자가 13 μm 남짓만 닳아도 판독 한계에 닿습니다.

링 지름이 문자가 놓일 자리를 정한다

20°는 시야 한가운데에서 잰 값입니다. 지름 120 mm 링을 부품 위 21.8 mm 높이에 두면 중심에서 앙각이 20°가 되지만, 시야 끝 15 mm 지점에서는 가까운 쪽 LED까지 25.9°, 먼 쪽은 16.2°로 벌어집니다. 그림자도 103 μm에서 172 μm까지 흔들리고, 먼 쪽 172 μm는 획 간격 절반인 150 μm를 넘어섭니다. 먼 쪽이 기준을 깹니다.

먼 쪽 앙각이 18.4° 아래로 떨어지지 않는 범위를 계산하면 시야 중심에서 ±5.5 mm입니다. 이 링을 그대로 쓴다면 캐비티 번호가 그 안에 오도록 부품 자세와 시야를 맞춰야 합니다. 시야 끝 15 mm까지 조건을 지키려면, 중심 앙각 20°를 유지한 채 링 지름을 326 mm, 높이를 59.4 mm로 키워야 합니다. 링이 커지면 같은 조도를 내는 데 LED가 더 들고 설치 공간도 넓어지니, 저라면 문자 위치를 시야 중심으로 모으는 쪽을 먼저 택합니다.

18.4°

획 간격 300 μm에서 그림자가 틈 절반을 넘지 않는 최소 앙각

±5.5mm

지름 120 mm 링에서 먼 쪽 앙각이 18.4° 이상인 문자 범위

13.4μm

앙각 20°에서 그림자 3 px를 만드는 최소 문자 높이

세 숫자 가운데 18.4°와 13.4 μm는 도면이 정하고, ±5.5 mm는 링이 정합니다. 그래서 모델이 바뀌어 문자 높이나 획 간격이 달라지면, 저라면 링 위치와 시야 배치를 함께 다시 계산합니다. 링 지름을 그대로 둔 채 문자 크기만 바뀌면 중심에서는 읽히고 가장자리에서는 붙는 판독 편차가 생기기 쉽습니다.

네 방향을 따로 켜면 엣지 방향이 살아난다

링 전체를 한 번에 켜면 사방에서 온 빛이 서로의 그림자를 메웁니다. 왼쪽 벽을 비추는 빛이 동시에 오른쪽 그림자를 채우니, 밝은 벽과 어두운 그림자의 쌍이 옅어지죠. 링을 북, 남, 동, 서 네 구역으로 나눠 차례로 켜는 사분면 점등(quadrant lighting)5은 방향마다 그림자를 따로 얻는 방법입니다.

네 장을 찍은 뒤 마주 보는 구역끼리 빼면(북 − 남, 동 − 서) 양쪽에서 똑같이 밝은 평평한 바탕은 지워지고, 한쪽에서만 밝거나 어두운 엣지만 남습니다. 두 차분의 절댓값 가운데 큰 쪽을 화소마다 고르면 어느 방향의 획이든 윤곽이 하나의 영상에 모입니다. 법선을 되살리는 계산까지 가지 않아도 OCR에 넘길 윤곽에는 이 정도면 충분하다는 것이 제 판단입니다.

구역마다 앙각 분포가 달라 시야 안의 밝기 기울기도 다르니, 셰이딩 보정(shading correction)6은 문자가 없는 기준면을 구역별로 찍어 따로 합니다. 네 장 촬영은 사이클 타임을 늘리고, 촬영 사이에 부품이 움직이면 네 장의 정합이 어긋나 차분에 가짜 엣지가 생깁니다. 이송 동기화 자체는 별도 검토가 필요합니다. 한 장의 전체 점등 영상에서 지워진 그림자는 알고리즘으로 되살릴 수 없으니, 방향 정보는 조명 단계에서 확보해야 합니다.

문자 높이 50 μm에서 판독 신뢰도까지, 사양서의 세 줄

계산을 사양서로 옮기면 문자 치수, 링과 렌즈, 판독 알고리즘의 세 줄이 됩니다. 렌즈 앞면에서 부품까지의 거리인 WD(working distance)7는 링 조명 윗면과 렌즈가 부딪치지 않는지까지 확인할 값이고, 판독 전 이진화는 밝기 기울기가 남아도 버티는 적응 이진화(adaptive thresholding)8로 둡니다.

항목기준값조건·근거풀어 쓰면
① 최소 불량 사이즈 · 판독 대상양각 높이 50 μm, 획 폭과 획 간격 300 μm, 문자 높이 2.0 mm12.25 μm/px에서 획 24.5 px, 문자 163 px. 설계 가정읽을 글자의 키와 틈
① 최소 불량 사이즈 · 획 결손길이 60 μm 이상4.9 px. 설계 가정덜 찍힌 획 조각
① 최소 불량 사이즈 · 판독 한계 높이13.4 μm (앙각 20°)그림자 3 px = 36.8 μm × tan 20°여기까지 닳아도 읽힘
② 광학 셋업 · 조명저각도 링 지름 120 mm, 높이 21.8 mm, 4분할 순차 점등중심 앙각 20°, 최소 앙각 18.4° 이상. 문자는 중심 ±5.5 mm 안낮게 눕힌 빛을 네 번 나눠 켬
② 광학 셋업 · 그림자양각 137 μm(11.2 px), 음각 80 μm 깊이는 220 μmL = h ÷ tan E. 시야 끝에서 양각 103~172 μm글자 옆 어두운 띠의 폭
② 광학 셋업 · 렌즈와 센서35 mm F/8, 2,448 × 2,048 px, 12.25 μm/px배율 0.282, 얇은 렌즈 물체거리 159.3 mm. 설계 가정가로 30 mm를 한 장에
② 광학 셋업 · WDWD 140 mm 이상 확보(설계 가정)렌즈 경통 앞면 기준. 링 윗면과 간섭 없는지 실측렌즈와 링이 부딪치지 않는 높이
③ 알고리즘 파라미터 · 보정과 합성구역별 셰이딩 보정 뒤 |북 − 남|과 |동 − 서| 가운데 큰 값평평한 바탕은 지워지고 엣지만 남음바탕은 빼고 윤곽만 모음
③ 알고리즘 파라미터 · 이진화와 판독적응 이진화 창 75 px, 문자 높이 163 px를 32 px로 정규화, 신뢰도 0.90 미만은 재판독창은 획 폭의 약 3배. 0.90은 가정값, 오독보다 판독 보류 우선헷갈리면 틀리게 읽기보다 보류

표에서 먼저 볼 것은 이 셋업의 병목이 분해능보다 앙각의 공간 분포에 있다는 점입니다. 획 폭 300 μm는 24.5 px, 획 결손 60 μm는 4.9 px로 화소에는 여유가 있지만, 시야 끝에서는 같은 문자의 그림자가 172 μm로 늘어 획 간격 절반을 넘습니다. 판독 품질을 시야 전체에서 고르게 하려면 문자를 ±5.5 mm 안에 모으거나 링을 키우는 설계 결정이 앞서야 합니다.

저각도가 맞지 않는 경우도 있습니다. 레이저 마킹처럼 표면 색이 바뀐 문자는 높이 정보가 필요 없으니, 확산 돔이나 동축 조명이 표면 결의 잡음 없이 더 깨끗한 영상을 만듭니다. 시보 가공처럼 표면 결이 문자보다 거친 부품은 저각도에서 결이 문자보다 강한 그림자를 만들어, 높이를 직접 재는 3D 방식이 나을 수 있습니다. 네 장을 찍을 시간이 없는 라인이라면 문자 방향에 맞춘 한 방향 저각도 바 조명 한 장이 현실적인 절충입니다. 돔과 저각도 조명을 한 스테이션에 함께 두고 문자 판독과 외관 검사를 나눠 맡기는 구성도 있습니다. 수지 종류와 광택, 표면 결에 따라 저각도의 이득이 크게 달라지므로 어느 방식이 유리한지는 샘플 테스트 전 확언 불가입니다.

도면의 문자 높이와 획 간격에서 조명 각도를 끌어내는 일은 tan 하나로 끝나지만, 조명 설계를 맡은 엔지니어가 가장 먼저 손에 익히는 계산입니다. 판독기를 고르는 쪽에서는 OCR 엔진의 이름보다, 금형이 몇 μm까지 닳아도 판독이 유지되는지와 시야 어디까지 같은 판독률이 나오는지를 묻는 편이 실제 성능을 더 잘 드러냅니다. 이 글은 기술 설명이며 투자 권유가 아닙니다. 자세한 내용은 면책조항을 참고하세요.

현장 노트

사출 하우징의 양각 캐비티 번호를 읽는다면, 저는 앙각부터 낮추지 않고 도면에서 문자 높이와 획 간격을 확인해 쓸 수 있는 앙각 범위를 계산합니다. 이 문자라면 18.4°에서 53.7° 사이이고, 낮은 쪽으로 붙일수록 금형 마모를 견디는 여유가 커지기 때문입니다. 그다음 링 높이를 정하고 시야 중심과 끝에 같은 문자를 놓아 그림자 길이를 재서, 먼 쪽에서 150 μm를 넘는 자리가 생기는지 봅니다. 금형을 손본 뒤에는 문자 높이를 다시 재고 이 범위를 다시 계산합니다.

현장 체크포인트

앙각 범위와 시야 끝의 그림자를 확인했다면, 아래 질문으로 나머지를 점검합니다.

  • WD 140 mm 이상이 렌즈 경통 앞면과 링 조명 윗면, 부품 윗면 사이 간섭까지 넣어 실측으로 확보되는가? (렌즈와 링이 부딪치지 않는지)
  • 대상물의 표면 재질과 반사율을 먼저 확인했는가? (무광 수지인지, 광택 수지인지, 시보 결이 있는지)
  • 도면의 문자 높이와 획 간격으로 쓸 수 있는 앙각 범위를 계산했는가? (이 문자라면 18.4°에서 53.7°)
  • 시야 끝의 먼 쪽 앙각에서도 그림자가 획 간격 절반 이하인가? (지름 120 mm 링이라면 문자는 중심 ±5.5 mm 안)
  • 사분면 구역별로 셰이딩 보정 영상을 따로 찍었는가? (구역마다 밝기 기울기가 다름)
  • 네 장 촬영이 사이클 타임 안에 들어오고, 그동안 부품이 움직이지 않는가? (차분에 가짜 엣지가 생기지 않는지)
  • 금형 마모를 가정한 최소 문자 높이(20°에서 13.4 μm)까지 판독되는지 시편으로 확인했는가? (닳은 글자도 읽히는지)

자주 묻는 질문

음각 문자도 같은 계산을 쓰나요?

음각은 그림자가 홈 바닥에 떨어집니다. 깊이 80 μm 홈을 앙각 20°로 비추면 그림자가 220 μm라, 폭 300 μm 홈 바닥의 3분의 2 남짓이 어두워집니다. 홈 바닥 전체를 어둡게 하려면 앙각을 atan(80 ÷ 300) = 14.9° 아래로 내려야 하는데, 그러면 이웃한 양각 문자의 그림자가 길어지니 한 부품에 두 종류가 섞여 있다면 각각 계산해 겹치는 범위를 찾습니다.

광택 있는 수지에서는 무엇을 더 확인하나요?

빛을 마주 보는 벽에서 정반사 하이라이트가 하얗게 날아가 윤곽이 끊길 수 있습니다. 노출을 하이라이트에 맞추면 그림자 쪽이 묻히니, 조명 출력을 낮춘 영상과 편광 필터를 조명과 렌즈에 직교로 단 영상을 같은 시편으로 비교합니다. 하이라이트 화소가 포화값에 닿는 비율을 미리 재 두면 비교가 빨라집니다.

용어 풀이

  • [1] 난반사 diffuse reflection
    거친 표면에서 빛이 여러 방향으로 흩어지는 반사입니다. 어느 쪽에서 봐도 밝기가 비슷해, 그림자가 없으면 높이가 드러나지 않습니다. ↩
  • [2] OCR optical character recognition
    영상에서 글자를 찾아 문자 코드로 바꾸는 판독입니다. 윤곽이 끊기거나 붙으면 비슷한 모양의 다른 글자로 읽습니다. ↩
  • [3] 저각도 링 조명 low-angle ring light
    고리 모양의 LED를 부품 가까이 낮게 두어 수평에 가까운 각도로 비추는 조명입니다. 요철 옆에 그림자를 만들어 높이를 밝기로 바꿉니다. ↩
  • [4] 앙각 elevation angle
    부품 면에서 올려다본 조명의 각도입니다. 낮을수록 그림자가 길어지고 바탕은 어두워집니다. ↩
  • [5] 사분면 점등 quadrant lighting
    링 조명을 네 구역으로 나눠 한 구역씩 켜고 찍는 방법입니다. 방향마다 그림자를 따로 얻어 서로 빼서 씁니다. ↩
  • [6] 셰이딩 보정 shading correction
    조명과 렌즈가 만드는 밝기 기울기를 기준 영상으로 나눠 고르게 펴는 보정입니다. 구역마다 기울기가 다르면 기준 영상도 따로 찍습니다. ↩
  • [7] WD working distance, 작동 거리
    렌즈 앞면에서 검사할 면까지의 거리입니다. 낮게 두는 링 조명은 이 거리 안에서 렌즈와 부딪치지 않아야 합니다. ↩
  • [8] 적응 이진화 adaptive thresholding
    화소마다 주변 창의 평균을 기준으로 흑백을 가르는 이진화입니다. 영상 한쪽이 어두워도 문자 윤곽을 지킵니다. ↩

참고 자료

  • Edmund Optics Knowledge Center, Darkfield Illumination with Ring Lights for Machine Vision (낮은 각도로 비추는 링 조명이 가장자리와 각인, 깊은 스크래치를 드러내는 원리, 텔레센트릭 렌즈와 함께 플라스틱이나 금속 표면의 작은 각인 문자 OCR에 쓰는 예, 조명을 부품 가까이 약 50 mm에 두는 배치)
  • 계산식: 수평면 밝기 ∝ sin E (램버트 반사, 앙각 E), 그림자 길이 L = h ÷ tan E, 최소 앙각 = atan(h ÷ 획 간격의 절반), 최대 앙각 = atan(h ÷ 3 px 길이), 판독 한계 높이 = 3 px 길이 × tan E, 링 앙각 = atan(H ÷ (Rr ∓ x)), 먼 쪽 조건 x ≤ H ÷ tan Emin − Rr, 음각 바닥 전체가 어두워지는 앙각 = atan(깊이 ÷ 홈 폭), 배율 m = 센서 폭 ÷ 시야, u = f × (1 + 1/m)

함께 읽으면 좋은 글 — 머신비전 조명 6가지 방식과 선택 기준 · 비전 카메라와 조명의 자리는 기구 설계 단계에서 먼저 잡는다 · 자동차 부품 외관검사, 조명 설계가 먼저입니다

2005년부터 생산설비의 기계설계와 프로젝트 관리를 맡아 온 엔지니어입니다. 설비에 들어가는 카메라·렌즈·조명을 수식과 공개 자료로 계산하고, 가정과 출처를 함께 밝혀 기록합니다.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다