머신비전 불량 이미지를 한 달 모아봤더니 보인 것들
검사기는 매일 불량을 잡는데, 막상 원인을 찾으려 하면 남아 있는 것은 판정 코드와 흐릿한 축소 이미지뿐인 경우가 많습니다. 저도 처음에는 저장 용량을 아끼려고 불량 이미지만 무작정 모았습니다. 그런데 한 달 뒤 폴더를 열어보니 비슷한 사진 수천 장이 쌓였을 뿐, 조명 문제인지 제품 변화인지 구분하기 어려웠습니다.
저장 방식을 조금씩 바꿔 보니 머신비전 이미지는 많이 남기는 것보다 비교할 수 있게 남기는 일이 중요했습니다. 별도 고가 소프트웨어 없이도 파일명, 정상 이미지 표본, 관심 영역, 간단한 수치 기록만 손보면 재현하기 힘든 오검출의 단서를 꽤 빠르게 찾을 수 있습니다.
불량 한 장보다 앞뒤 세 장을 남겼더니 원인이 보였습니다
단독 사진이 감추는 생산 흐름
불량이 발생한 순간의 이미지만 저장하면 그 프레임 안에서만 원인을 찾게 됩니다. 하지만 실제 생산라인의 이상은 이전 제품에서 시작되는 경우가 많습니다. 이송 장치의 미세한 흔들림, 조명 컨트롤러의 응답 지연, 제품 간 간격 변화는 불량 판정 직전 프레임을 함께 봐야 드러납니다. 저는 불량 이미지와 함께 직전 2장, 직후 2장을 순환 버퍼에서 꺼내 저장하도록 설정했습니다.
이 방식으로 확인한 의외의 원인은 컨베이어 정지 후 재가동할 때만 생기는 첫 프레임의 밝기 변화였습니다. 불량 한 장만 보면 제품 표면의 얼룩처럼 보였지만, 앞뒤 이미지를 나란히 놓자 전체 화면의 평균 밝기가 단계적으로 회복되는 모습이 보였습니다. 사람이 시각 정보를 받아들이는 기본 개념은 시각 용어 설명에서도 살펴볼 수 있지만, 산업용 이미징에서는 사람이 느끼기 어려운 작은 밝기 차이까지 수치로 비교해야 합니다.
파일명에 시간을 넘어 조건을 넣는 방법
촬영 시각만 적힌 파일은 나중에 설비 로그와 맞추기 번거롭습니다. 파일명에 모든 정보를 넣을 필요는 없지만, 검색에 필요한 최소 조건은 남겨 두는 편이 좋습니다. 항목 사이에는 공백 대신 밑줄을 사용하고 순서를 고정해야 폴더 정렬과 스크립트 분석이 쉬워집니다.
- 라인·품번: 어느 설비에서 어떤 제품을 검사했는지 표시합니다.
- 판정 코드: Scratch, Missing, Position처럼 알고리즘의 최종 판단을 기록합니다.
- 노출값·조명 단계: 자동 보정이나 레시피 변경 여부를 추적합니다.
- 트리거 간격: 제품 유입 속도의 순간 변화를 확인하는 숨은 단서가 됩니다.
팁: 파일명은 사람이 읽을 설명서가 아니라 검색용 색인으로 생각합니다. 긴 설명은 CSV 로그에 두고, 파일명에는 네 가지 핵심 조건만 남기면 관리가 편합니다.
정상 이미지도 일부러 섞었더니 오검출이 분리됐습니다
불량 폴더에 정상 표본이 필요한 이유
불량 이미지만 모으면 모든 차이가 결함처럼 보이는 함정에 빠집니다. 특히 사출품의 미세한 색 변화나 금속 가공 흔적처럼 정상 범위가 넓은 대상은 같은 시간대의 양품과 비교해야 합니다. 저는 불량 한 건이 저장될 때 가장 가까운 정상 판정 이미지 한 장도 함께 복사했습니다. 저장량은 늘었지만 제품 자체의 변화와 촬영계 변화를 나누는 시간이 크게 줄었습니다.
예를 들어 오전 불량과 정상 이미지가 모두 어두워졌다면 제품 결함보다 광원, 렌즈 오염, 카메라 설정을 먼저 의심할 수 있습니다. 반대로 정상 이미지의 배경은 일정한데 불량 제품의 특정 영역만 달라졌다면 실제 공정 이상일 가능성이 커집니다. 빛의 성질과 전달을 이해할 때는 광에 관한 기초 설명도 용어를 맞추는 데 도움이 됩니다.
골든 샘플을 한 장으로 고정하지 않기
현장에서는 대표 양품 한 장을 골든 샘플로 지정하곤 합니다. 그러나 한 장만 기준으로 두면 로트, 온도, 공급사, 표면 방향에 따른 정상 편차를 반영하지 못합니다. 저는 조건별로 정상 이미지를 10장씩 골라 작은 기준 묶음을 만들었습니다. 검사 대상이 바뀌면 가장 비슷한 묶음과 평균 밝기, 대비, 에지 위치를 비교했습니다.
- 주간과 야간처럼 환경이 달라지는 시간대를 나눕니다.
- 정상 생산품 가운데 경계에 가까운 양품도 포함합니다.
- 평균 영상뿐 아니라 가장 밝은 표본과 어두운 표본을 보관합니다.
- 기준 묶음이 바뀐 날짜와 변경 사유를 별도 로그에 적습니다.
- 매주 같은 조건으로 기준 샘플을 다시 촬영해 광학계 변화를 확인합니다.
이렇게 하면 임계값을 무작정 느슨하게 조정하지 않고도 현재 입력 영상이 정상 분포에서 얼마나 벗어났는지 판단할 수 있습니다. 단, 골든 샘플을 자주 교체하면 장기 변화가 지워질 수 있으므로 기존 세트는 삭제하지 않고 버전 번호를 붙여 보존하는 것이 안전합니다.
전체 화면 대신 작은 조각을 비교하니 저장비와 분석 시간이 줄었습니다
ROI 원본과 주변 여백을 함께 보관하기
고해상도 카메라의 원본을 매번 저장하면 디스크가 빠르게 차고 네트워크 전송도 검사 주기에 부담을 줍니다. 그렇다고 결함 영역만 딱 잘라 남기면 주변 구조를 잃어 위치 오차나 제품 기울기를 확인할 수 없습니다. 숨은 요령은 검사 ROI보다 사방 15~30% 넓은 영역을 무압축 또는 무손실 형식으로 저장하고, 전체 이미지는 저해상도 미리보기로 남기는 것입니다.
작은 스크래치 검사라면 ROI 원본에서 픽셀 값을 분석하고, 전체 미리보기에서는 제품의 안착 방향과 지그 위치를 확인할 수 있습니다. PNG는 용량과 보존 품질의 균형이 좋지만 저장 시간이 문제가 되면 비트맵 원본을 짧은 기간만 유지하는 방식도 가능합니다. JPEG는 미세 결함 주변에 압축 흔적을 만들 수 있어 알고리즘 재검증용 원본으로는 신중하게 사용해야 합니다.
평균값보다 네 모서리를 따로 기록하기
전체 화면 평균 밝기 하나만 기록하면 중앙은 정상이고 한쪽 모서리만 어두워지는 비네팅이나 조명 편심을 놓칠 수 있습니다. 저는 중앙과 네 모서리에 작은 고정 영역을 만들고 각 영역의 평균과 표준편차를 CSV로 저장했습니다. 다섯 숫자의 추세를 선 그래프로 그리자 렌즈 오염이 시작된 방향과 조명 위치가 느슨해진 시점을 이미지보다 먼저 찾을 수 있었습니다.
광학계가 빛을 다루는 방식은 광학의 기본 개념과 연결됩니다. 현장에서는 이론을 복잡하게 적용하기보다 같은 조건의 기준 영역을 꾸준히 측정하는 것만으로도 변화 감지가 가능합니다. 픽셀 포화 비율도 함께 기록하면 밝기는 비슷하지만 하이라이트 정보가 사라지는 상황을 구분할 수 있습니다.
- 중앙만 하락: 렌즈 중앙 오염, 초점 변화, 제품 높이 편차를 살펴봅니다.
- 한쪽만 하락: 조명 각도, 케이블 장력, 카메라 브래킷의 회전을 확인합니다.
- 전 영역 동시 하락: 광원 열화, 노출 설정, 전원 상태를 우선 점검합니다.
- 표준편차만 상승: 표면 거칠기 변화나 외란광 유입 가능성을 비교합니다.
실무 팁: 통계값은 절대 기준보다 변화량이 유용합니다. 설비가 안정된 날의 중앙값을 기준으로 삼고, 일정 비율 이상 달라질 때만 알림을 걸면 불필요한 경보를 줄일 수 있습니다.
야간에만 생기던 검은 얼룩을 이미지 기록으로 추적해봤습니다
한 건의 오검출을 끝까지 따라간 과정
한 포장 부품 라인에서는 오후 10시 이후 검은 얼룩 불량이 갑자기 늘었지만 작업자가 제품을 닦아 보면 흔적이 없었습니다. 처음에는 야간 원재료 로트 문제를 의심했습니다. 저장 폴더에서 같은 시간의 정상 이미지와 불량 이미지를 짝지어 보니 제품 외곽 위치는 같았고, 불량 영역은 매번 화면 오른쪽 아래에 나타났습니다. 제품을 따라 움직이지 않는 결함이라는 점에서 카메라 쪽 원인으로 범위를 좁혔습니다.
다음으로 중앙과 네 모서리의 밝기 로그를 확인했습니다. 오른쪽 아래 영역의 평균값만 오후 8시부터 천천히 낮아졌고 자정 무렵에는 기준 대비 약 7% 떨어졌습니다. 전체 평균은 2%도 변하지 않아 기존 모니터링에서는 정상으로 표시됐습니다. 앞뒤 프레임에서는 생산 속도가 올라갈수록 얼룩의 명암이 강해졌지만 위치는 고정되어 있었습니다.
닦기 전에 재현 조건부터 고정했습니다
바로 렌즈를 닦으면 원인이 사라져 검증할 수 없으므로 먼저 노출, 조명 출력, 제품 위치를 고정해 기준판을 촬영했습니다. 화면 오른쪽 아래에서 흐린 음영이 재현됐고, 조명을 끈 다크 프레임에서는 나타나지 않았습니다. 카메라 센서 노이즈보다는 조명에서 렌즈로 이어지는 광경로 문제라는 뜻이었습니다. 렌즈 보호창을 비스듬히 비춰 보니 가장자리에서만 얇은 오일 막이 확인됐습니다.
- 오염 상태에서 기준판 이미지를 10장 저장했습니다.
- 보호창만 세척한 뒤 카메라와 조명 설정을 그대로 유지했습니다.
- 동일 위치에서 기준판을 다시 촬영해 다섯 영역의 밝기를 비교했습니다.
- 오른쪽 아래 평균값이 기존 기준의 1% 이내로 회복되는지 확인했습니다.
- 실제품 50개를 연속 검사하고 기존 이미지를 재투입해 판정 차이를 확인했습니다.
세척 뒤 야간 오검출은 사라졌고, 다음날 같은 시간대에도 오른쪽 아래 밝기는 안정적으로 유지됐습니다. 오일 막은 야간 증산에 맞춰 빨라진 설비에서 미세하게 비산한 윤활유가 보호창에 누적된 것이었습니다. 이후에는 매 교대 때 렌즈를 무조건 닦는 대신 기준판 한 장을 촬영해 다섯 영역 중 하나라도 기준 대비 4% 이상 변할 때만 점검했습니다. 덕분에 불필요한 세척으로 카메라 각도가 달라지는 문제까지 줄이면서, 머신비전 이미징 기록을 예방 정비 신호로 활용할 수 있었습니다.
- 다음글첫 생산라인에 머신비전 카메라를 설치할 때 센서 고르는 법 26.08.31
등록된 댓글이 없습니다.
