▎ 인턴십 기간: 2025.08 ~ 2026.02 | 경남대학교 IPP 산학협력 프로젝트
1. 프로젝트 개요
삼천산업의 사출·조립 공정 제품 자동화 불량 검사 시스템을 설계·개발
기존 수작업 육안 검사의 한계(누락 판정, 검사 일관성 저하, 실시간 데이터 부재)를 해결하기 위해, 컴퓨터 비전 기술을
활용한 머신 비전 검사 시스템을 처음부터 구축
- 참여 인원: 2명 (경남대 IPP 강민수, 김창모)
- 개발 기간: 약 6개월 (2025.09 ~ 2026.02)
- 역할: 백엔드 마이크로서비스 설계 및 구현, WPF 클라이언트 개발, 검사 알고리즘 구현

2. 서비스 소개

- 무엇을 해결하는가
공장 생산라인에서 제품이 조립·사출된 후, 육안 검사 없이 카메라 한 대로 OK/NG를 자동 판정
검사 대상 불량 유형:
- 부품 누락 (패턴 검사)
- 체결/정위치 불량 (특징점 매칭 검사)
- 색상·명도 이상 (명도/채도 검사)
- 위치 틀어짐 (이미지 정렬 전처리)
- 주요 사용 흐름
현장 작업자
→ 카메라로 제품 촬영 (Basler 산업용 카메라)
→ WPF 화면에서 검사 실행 버튼 클릭
→ 1초 내 OK/NG 결과 + 불량 위치 이미지 표시
→ 검사 이력 및 시간대별 통계 확인
레시피(검사 설정 프로파일) 기반으로 제품 모델마다 검사 항목·파라미터를 독립 구성할 수 있어 여러 제품 라인에 재사용이
가능
3. 시스템 구조
마이크로서비스 아키텍처(MSA)를 채택해 각 검사 알고리즘이 독립 서비스로 동작
- 백엔드 흐름도

- 전체 데이터 흐름도

- 광학 장비 셋팅

- 와이어프레임

- 검사 실행 흐름
1. 클라이언트에서 이미지 촬영/업로드 + 검사 실행 요청
2. API Gateway가 Correlation ID 부여 후 DB Service로 전달
3. 이미지 정렬(Image Alignment) 먼저 수행 — 제품 위치 편차 보정
4. 패턴·명도·채도·특징점 검사 서비스를 비동기 병렬 실행 (asyncio.gather)
5. 결과 저장 + 시간별 통계 갱신
6. 최종 OK/NG + 결과 표시 이미지(시각화) + 실행 로그 반환
4. 기술 스택
Backend
언어 : Python 3.11
프레임워크 : FastAPI
이미지 처리 : OpenCV, NumPy
데이터베이스 : SQLite + SQLAlchemy ORM
컨테이너 : Docker, Docker Compose
비동기 처리 : asyncio (병렬 검사 실행)
Frontend (WPF Client)
언어 : C# .NET
프레임워크 : WPF (Windows Presentation Foundation)
아키텍처 패턴 : MVVM
카메라 SDK : Basler Pylon SDK
HTTP 통신 : HttpClient
JSON 처리 : Newtonsoft.Json
DevOps / 기타
컨테이너 오케스트레이션 : Docker Compose
버전 관리 : Git
API 문서 : Markdown (자체 명세 작성)
5. 핵심 기술
5-1. 이미지 정렬 (Image Alignment)

현장에서 제품이 카메라 앞에 정확히 같은 위치에 놓이지 않아도 검사가 가능하도록 기준 이미지 대비 위치·회전 편차를 자동
보정하는 전처리 모듈
동작 방식:
- 기준점(Fiducial Mark)을 템플릿 이미지와 테스트 이미지에서 탐색
- cv2.matchTemplate + CLAHE(대비 향상) 전처리로 신뢰도 높은 매칭 수행
- 기준점 1개: 이동(dx, dy)만 보정
- 기준점 2개 이상: 이동 + 회전각 계산 → Affine 변환으로 ROI 좌표 전체 보정
효과: 제품이 수 픽셀~수 도(°) 범위로 틀어져도 검사 정확도 유지
5-2. 검사 알고리즘 4종
- 패턴 검사

- 특징점 매칭

- 명도 검사

5-3. ROI 기반 다중 영역 검사
하나의 제품 이미지에서 여러 검사 영역(ROI)을 독립적으로 설정하고, 영역별 OK/NG를 개별 판정
검사 결과는 ROI 단위로 저장되어 어느 부위에서 불량이 발생했는지 추적 가능
5-4. 실행 추적 (Correlation ID 기반 로깅)
분산 마이크로서비스 환경에서 하나의 검사 요청이 여러 서비스를 거칠 때, X-Correlation-ID 헤더로 전 구간 요청을
추적.
현장 장애 발생 시 어느 단계에서 지연·실패했는지 실시간 확인 가능
5-5. Basler 산업용 카메라 통합
Basler Pylon SDK를 WPF 클라이언트에 통합해 다음 두 가지 모드를 지원
- 단발 촬영 모드: 검사 시 소프트웨어 트리거로 1회 캡처
- 라이브 뷰 모드: 연속 프레임 스트리밍으로 제품 위치 확인
카메라 제어 인터페이스(ICameraService)를 추상화하여 카메라 기종 변경에 유연하게 대응 가능하도록 설계
6. 프로젝트 결과물
운영 화면 (WPF Client)
- 메인 검사 화면: 실시간 카메라 뷰 + 검사 실행 + OK/NG 결과 이미지 표시

- 모델 변경 화면 : 각종 제품 모델 및 상세 레시피 선택/수정/삭제

- 레시피 수정 화면: 모델/레시피/부품 등록

- 작업 설정 화면: 검사 항목별 ROI 및 파라미터 설정

7. 성과 및 배운 점
기술적 성과
- MSA(마이크로서비스 아키텍처) 설계·구현 경험: 검사 알고리즘을 독립 서비스로 분리해 알고리즘 교체·실험이 메인 시스템에
영향 없이 가능한 구조 구축 - 비동기 병렬 처리 적용: asyncio.gather로 4종 검사 서비스를 병렬 실행해 전체 검사 처리 시간 단축
- 컴퓨터 비전 알고리즘 실무 적용: Template Matching, ORB/SIFT 특징점 매칭, RANSAC, CLAHE 등 OpenCV 알고리즘을
실제 불량 판정에 적용 - 산업용 광학 장비 선정: 제품과 환경에 따라 적절한 광학 장비의 특징들을 조합하여 장비 선정
- 산업용 카메라 SDK 통합: Basler Pylon SDK 기반 트리거 촬영·라이브 스트리밍 구현
- 현장 배포 가능한 Docker 기반 배포 환경 구성
협업 및 설계 경험
- 2인 개발팀에서 백엔드(Python/FastAPI)와 프론트엔드(C#/WPF) 역할 분담
- REST API 명세서, 기술 문서, 분석 보고서 작성 습관
- 단순 기능 동작을 넘어 운영 현장 요구사항(디버깅 추적성, 장애 대응, 통계 관리)을 설계 단계에서 반영하는 경험
아쉬운 점 & 향후 개선 방향
- 정렬 서비스 v1/v2 인터페이스 표준화 미완성 → 서비스 계약 통일 필요
- API 기본 주소 하드코딩 → 환경변수 기반 외부화 필요
- 자동 검사 모드(라인 트리거 연동) 미구현 → 실제 생산라인 자동화 연계 과제로 남음
- 향후 딥러닝 기반 불량 분류 모듈 추가 고려
개별 성과


▎ 본 프로젝트는 삼천산업과 경남대학교 IPP 프로그램의 산학협력 과제로 진행되었습니다.
▎ 코드 및 내부 상세 자료는 기업 보안 정책상 공개하지 않습니다.
'Project' 카테고리의 다른 글
| [2025 캡스톤 디자인] AI 기반 지능형 식재료 관리 솔루션 (3) | 2026.01.15 |
|---|---|
| [2024년 하계 일머리 사관학교 대상] 센서 기반 자율주행 RC카 제어 (0) | 2026.01.13 |