본문 바로가기
비전검사 기초 및 실무/비전검사 기초 실무

[비전검사 시리즈 16편] Contour Detection 활용법 | 외곽선 검출과 치수 측정 실무

by eins-solutionlab 2026. 7. 10.

Contour Detection이란?

비전검사에서 제품의 크기나 형상을 분석하려면 단순히 객체를 찾는 것만으로는 부족합니다.

객체의 외곽선(Contour) 을 정확하게 검출해야 다양한 측정과 분석이 가능합니다.

Contour Detection(외곽선 검출) 은 이미지 안에서 객체의 경계를 따라 연결된 윤곽선을 추출하는 기술입니다.

자동차 부품, 반도체, PCB, 전자제품, 식품, 의약품 등 대부분의 머신비전 검사에서 사용되며, 특히 치수 측정과 형상 검사의 핵심 기술로 활용됩니다.

Contour와 Edge의 차이

많은 초보자들이 Contour와 Edge를 같은 개념으로 생각하지만 실제로는 목적이 다릅니다.

Edge Detection Contour Detection
밝기 변화 검출 객체 외곽선 추출
경계선 일부 검출 폐곡선 형태 추출
Gradient 기반 Binary Image 기반
치수 측정 전처리 형상 분석

쉽게 말하면 Edge는 경계를 찾는 기술 Contour는 하나의 객체를 완성하는 기술 이라고 이해하면 됩니다.

Contour Detection의 원리

Contour Detection은 일반적으로 다음 순서로 수행됩니다.

① 이미지 입력

         ↓

② Gray 변환

         ↓

③ Threshold 적용

         ↓

④ Binary Image 생성

         ↓

⑤ Contour 검색

         ↓

⑥ 형상 분석

         ↓

⑦ 검사 결과 출력

즉, Threshold가 제대로 수행되어야 정확한 Contour를 얻을 수 있습니다.

Binary Image가 중요한 이유

Contour Detection은 대부분 이진화(Binary Image) 이후 수행됩니다.

예를 들어

배경은 검정

제품은 흰색

으로 분리되어 있어야 외곽선을 쉽게 찾을 수 있습니다.

Threshold가 잘못 설정되면

  • 외곽선이 끊어짐
  • 두 객체가 하나로 연결됨
  • 작은 구멍 발생
  • 노이즈 증가

등의 문제가 발생합니다.

OpenCV에서 사용하는 주요 함수

OpenCV에서는 다음 함수를 가장 많이 사용합니다.

 
findContours()

drawContours()

arcLength()

contourArea()

approxPolyDP()

boundingRect()

minAreaRect()

minEnclosingCircle()
 

실제 머신비전 프로그램에서도 대부분 이러한 함수들을 조합하여 사용합니다.

Contour Detection으로 얻을 수 있는 정보

Contour 하나를 검출하면 다양한 정보를 계산할 수 있습니다.

분석 항목설명

 

분석항목 설명
Area 면적
Perimeter 둘레 길이
Bounding Box 외접 사각형
Rotated Rectangle 회전 사각형
Center Point 중심 좌표
Circularity 원형도
Convex Hull 볼록 껍질
Aspect Ratio 가로·세로 비율
Orientation 회전 각도

이러한 정보는 대부분의 형상 검사 알고리즘에서 활용됩니다.

치수 측정에서 Contour Detection 활용

Contour Detection의 가장 대표적인 활용 분야는 치수 측정(Dimension Measurement) 입니다.

예를 들어 제품의 외곽선을 검출한 후

  • 길이
  • 직경
  • 두께
  • Hole 크기

등을 계산할 수 있습니다.

산업 현장에서는 자동차 부품, PCB, 금속 가공품 검사에 가장 많이 사용됩니다.

형상 검사(Shape Inspection)

제품의 모양이 정상인지 검사하는 것도 Contour Detection의 중요한 역할입니다.

예를 들어 정상 제품은 원형이어야 하는데 타원으로 변형되었다면 Contour를 비교하여 불량으로 판정할 수 있습니다.

또한

  • 모서리 파손
  • Burr 발생
  • Crack
  • 변형

등도 외곽선 분석을 통해 검출할 수 있습니다.

Hole(구멍) 검사

제품 내부의 Hole도 Contour로 쉽게 검사할 수 있습니다.

예를 들어 정상 제품에는 Hole이 4개 존재해야 한다면 Contour 개수와 위치를 검사하여 누락 여부를 판단할 수 있습니다.

Circularity(원형도) 검사

원형도는 제품이 얼마나 원에 가까운지를 나타내는 값입니다.

공식은 다음과 같습니다.

Circularity

= 4π × Area / Perimeter²
 

원에 가까울수록 1에 가까워집니다.

예를 들어 제품Circularity

1.00
타원 약 0.85
사각형 약 0.78
불규칙 형상 0.5 이하

베어링, 와셔, O-Ring 검사에서 자주 사용됩니다.

Bounding Box 활용

Contour를 찾으면

Bounding Box를 생성할 수 있습니다.

Bounding Box는

객체를 감싸는 최소 사각형입니다.

이를 이용하여

  • Width
  • Height
  • Center
  • ROI 생성

등을 쉽게 계산할 수 있습니다.

Convex Hull 활용

Contour에는 움푹 들어간 부분이 존재할 수 있습니다.

Convex Hull은

이러한 부분을 제거하여

가장 바깥쪽 외곽선을 생성합니다.

주로

  • 손가락 개수 인식
  • 제품 변형 검사
  • 형상 비교

등에 사용됩니다.

Contour Approximation

Contour는 수백~수천 개의 점으로 이루어질 수 있습니다.

ApproxPolyDP()를 이용하면

불필요한 점을 제거하여

단순한 다각형으로 표현할 수 있습니다.

예를 들어

원 → 많은 점

사각형 → 4개의 꼭짓점

으로 단순화할 수 있습니다.

Contour Detection 활용 사례

자동차 부품 검사

볼트, 너트, 기어의 외곽선을 검출하여

직경과 위치를 측정합니다.

PCB 검사

부품의 위치와 형상을 검사합니다.

납땜(Solder) 상태도 확인할 수 있습니다.

식품 검사

과자의 모양이 깨졌는지

Contour를 이용하여 검사합니다.

제약 검사

알약의 모양과 크기를 검사합니다.

깨짐이나 변형 여부도 쉽게 확인할 수 있습니다.

전자부품 검사

Connector 핀의 형상과 위치를 검사합니다.

Contour Detection과 Blob Analysis 비교

많은 사람들이 Blob과 Contour를 혼동합니다.

Blob Analysis Contour Detection
면적 중심 외곽선 중심
Pixel 분석 Shape 분석
개수 검사 형상 검사
유무 검사 치수 측정

실무에서는 Blob으로 제품을 찾고 Contour로 형상을 검사하는 경우가 가장 많습니다.

OpenCV 구현 순서

일반적인 구현 과정은 다음과 같습니다.

  1. 이미지 읽기
  2. Gray 변환
  3. Gaussian Blur
  4. Threshold 적용
  5. findContours()
  6. contourArea()
  7. drawContours()
  8. Bounding Box 계산
  9. 결과 출력

실무에서 많이 하는 실수

Threshold가 일정하지 않다.

Contour 품질이 크게 저하됩니다.

노이즈 제거를 하지 않는다.

작은 노이즈도 Contour로 인식됩니다.

Calibration 없이 치수를 측정한다.

Pixel은 실제 길이가 아닙니다.

반드시 Pixel → mm 변환이 필요합니다.

조명이 일정하지 않다.

외곽선 위치가 흔들리게 됩니다.

Contour Detection 성능을 높이는 방법

다음 사항을 함께 관리하면 더욱 안정적인 검사가 가능합니다.

  • 조명 일정하게 유지
  • Camera Focus 최적화
  • Exposure 최적화
  • Histogram 확인
  • Gaussian Blur 적용
  • Morphology 적용
  • Threshold 최적화
  • Camera Calibration 수행

Camera Calibration이 중요한 이유

Contour를 이용한 치수 측정은 픽셀(Pixel) 단위로 계산됩니다.

하지만 실제 생산 현장에서는 mm(밀리미터) 단위의 결과가 필요합니다.

예를 들어 Contour로 제품의 폭을 측정한 결과가 850 Pixel이라면, 이 값만으로는 실제 크기를 알 수 없습니다.

이때 Camera Calibration을 수행하면 1 Pixel = 0.02 mm와 같은 변환 계수를 얻을 수 있으며, 실제 치수는 다음과 같이 계산할 수 있습니다.

850 Pixel × 0.02 mm = 17.0 mm
 

따라서 정밀 치수 측정에서는 Calibration이 필수입니다.

실무 체크리스트

Contour Detection을 적용하기 전에 다음 항목을 확인해 보세요.

  • Threshold가 적절한가?
  • Histogram 분포가 안정적인가?
  • 조명이 일정한가?
  • Focus가 정확한가?
  • Gaussian Blur를 적용했는가?
  • Morphology를 적용했는가?
  • Calibration이 완료되었는가?
  • 외곽선이 끊어지지 않았는가?

Contour Detection 실패 사례와 개선 방법

실패 사례 1. Threshold 불안정으로 외곽선이 깨지는 경우

문제 상황

제품 외곽선을 검출하기 위해 Contour Detection을 적용했지만 생산라인에서 일부 제품의 외곽선이 끊어지는 문제가 발생했습니다.

발생 결과:

  • Contour 생성 실패
  • 치수 측정 불가능
  • 제품 형상 분석 오류
  • 간헐적인 NG 발생

원인

Contour Detection은 일반적으로 Binary Image를 기반으로 동작합니다.

하지만 Threshold 값이 적절하지 않으면 제품과 배경이 명확하게 분리되지 않습니다.

결과적으로:

  • 제품 일부가 배경으로 제거됨
  • 외곽선이 끊어짐
  • 하나의 객체가 여러 개로 분리됨

문제가 발생합니다.

개선 방법

  • Histogram 분석 후 Threshold 설정
  • Otsu Threshold 적용 검토
  • Adaptive Threshold 적용
  • 조명 밝기 일정하게 유지
  • Binary Image 결과 확인

실패 사례 2. 반사광 때문에 잘못된 Contour가 생성되는 경우

문제 상황

금속 부품의 외곽 치수를 측정하기 위해 Contour Detection을 적용했습니다.

하지만 제품 표면의 반사광이 또 다른 객체처럼 검출되었습니다.

발생 결과:

  • 실제 외곽선보다 많은 Contour 생성
  • 잘못된 Bounding Box 생성
  • 측정값 변화 발생

원인

Contour Detection은 이미지에서 연결된 영역을 객체로 판단합니다.

따라서 강한 반사 영역이나 밝기 변화도 하나의 객체로 인식될 수 있습니다.

특히 다음 제품에서 문제가 자주 발생합니다.

  • 금속 부품
  • 크롬 도금 제품
  • 유광 플라스틱
  • 반사 필름

개선 방법

  • Dome Light 적용
  • 조명 각도 변경
  • 편광 필터 사용
  • 반사 영역 제거 ROI 설정
  • 확산 조명 적용

실패 사례 3. Camera Calibration 없이 치수를 측정한 경우

문제 상황

Contour Detection으로 제품 폭을 측정하고 Pixel 값을 그대로 기준으로 사용했습니다.

예:

측정 결과:

850 Pixel

하지만 실제 생산 기준은 mm 단위였습니다.

결과:

  • 장비 변경 시 측정값 변화
  • 렌즈 변경 후 오차 발생
  • 실제 치수와 불일치

원인

이미지 Pixel 값은 실제 길이가 아닙니다.

카메라 거리, 렌즈 배율, 센서 크기에 따라 Pixel과 실제 길이 관계가 달라집니다.

개선 방법

Camera Calibration 수행:

예)

1 Pixel = 0.02mm

측정:

850 Pixel × 0.02mm

= 17mm

처럼 실제 단위로 변환해야 합니다.

정밀 치수 검사에서는 반드시 Calibration을 적용해야 합니다.

실패 사례 4. 작은 노이즈를 Contour로 인식하는 경우

문제 상황

제품 표면 검사에서 작은 먼지와 이미지 노이즈가 Contour로 생성되었습니다.

발생 결과:

  • 불필요한 Contour 증가
  • 검사 속도 저하
  • 오검출 증가

원인

Threshold 이후 Binary Image에는 작은 점 형태의 Noise가 포함될 수 있습니다.

Contour Detection은 이러한 작은 영역도 객체로 판단합니다.

개선 방법

전처리 적용:

  • Gaussian Blur
  • Median Filter
  • Morphology Opening
  • 작은 Contour 제거
  • 최소 Area 조건 설정

예:

Area < 50 Pixel

→ Noise 제거

실패 사례 5. 조명 변화로 측정 위치가 변경되는 경우

문제 상황

개발 환경에서는 정확하게 측정되었지만 생산라인에서는 측정값이 조금씩 변하는 문제가 발생했습니다.

발생 결과:

  • 동일 제품 측정값 편차 증가
  • 치수 검사 불안정
  • 품질 판정 오류

원인

조명 밝기가 변하면 제품과 배경 사이의 경계 위치가 달라질 수 있습니다.

특히 Edge 기반 Contour에서는 작은 밝기 변화도 외곽선 위치에 영향을 줍니다.

개선 방법

  • LED 조명 컨트롤러 적용
  • Strobe 조명 사용
  • 외부 조명 차단
  • Exposure 고정
  • Gain 최소화

실패 사례 6. Morphology 처리 부족으로 Hole 검사가 실패하는 경우

문제 상황

제품 내부 Hole 개수를 검사하기 위해 Contour Detection을 적용했습니다.

하지만 작은 틈이나 노이즈 때문에 Hole이 정상적으로 분리되지 않았습니다.

발생 결과:

  • Hole 개수 오류
  • 형상 판단 실패
  • 불량 검출 누락

원인

Binary Image 상태가 불안정하면 연결되어야 하는 영역이 분리되거나, 분리되어야 하는 영역이 연결됩니다.

개선 방법

Morphology 연산 적용:

Closing

끊어진 영역 연결

Opening

작은 Noise 제거

제품 형상에 맞는 전처리를 적용해야 안정적인 Contour를 얻을 수 있습니다.

실패 사례 7. 잘못된 Contour 선택으로 측정 오류 발생

문제 상황

하나의 이미지에서 여러 개의 Contour가 검출되었습니다.

하지만 프로그램에서 첫 번째 Contour만 선택하도록 구현했습니다.

결과:

  • 제품이 아닌 Noise 측정
  • 잘못된 크기 계산
  • 간헐적인 검사 실패

개선 방법

Contour Filtering 적용:

  • Area 기준
  • 위치 기준
  • Shape 기준
  • Bounding Box 크기 기준

예:

가장 큰 Area의 Contour만 선택

또는

검사 ROI 내부 Contour만 선택

하는 방식으로 안정성을 높일 수 있습니다.

Contour Detection 실패를 줄이는 실무 핵심 조건

안정적인 Contour Detection을 위해서는 알고리즘보다 입력 이미지 품질 관리가 중요합니다.

권장 설정 순서:

  1. 조명 환경 최적화
  2. Camera Focus 조정
  3. Exposure 설정
  4. Histogram 확인
  5. Threshold 최적화
  6. Noise 제거
  7. Contour Filtering
  8. Calibration 적용

특히 치수 측정 시스템에서는 다음 3가지가 가장 중요합니다.

  • 안정적인 조명
  • 정확한 Calibration
  • 올바른 Contour 선택

이 세 가지 조건이 확보되어야 반복 생산 환경에서도 신뢰성 높은 검사 결과를 얻을 수 있습니다.

자주 묻는 질문(FAQ)

Q1. Edge Detection과 Contour Detection은 무엇이 다른가요?

Edge Detection은 밝기가 급격히 변하는 경계를 찾는 기술이며, Contour Detection은 객체의 닫힌 외곽선을 추출하여 형상을 분석하는 기술입니다.

Q2. Contour Detection만으로 치수를 측정할 수 있나요?

가능합니다. 다만 정확한 실제 치수를 얻기 위해서는 Camera Calibration을 수행하여 Pixel을 mm 단위로 변환해야 합니다.

Q3. Contour Detection과 Blob Analysis 중 어떤 것을 사용해야 하나요?

면적, 개수, 유무 검사는 Blob Analysis가 적합하며, 형상 비교와 치수 측정은 Contour Detection이 더 적합합니다. 실제 현장에서는 두 알고리즘을 함께 사용하는 경우가 많습니다.

Q4. OpenCV에서는 어떤 함수를 가장 많이 사용하나요?

findContours(), drawContours(), contourArea(), boundingRect(), minAreaRect() 등이 가장 많이 활용됩니다.

마무리

Contour Detection은 비전검사에서 형상을 이해하는 핵심 기술입니다.

제품의 외곽선을 기반으로 면적, 둘레, 중심 좌표, 원형도, 회전 각도 등을 계산할 수 있어 자동차, 반도체, 전자제품, 식품, 제약 등 다양한 산업에서 폭넓게 활용되고 있습니다.

특히 Edge Detection, Threshold, Blob Analysis, Camera Calibration과 함께 사용할 때 더욱 높은 검사 정확도를 얻을 수 있습니다. 안정적인 조명과 정확한 전처리 과정을 갖춘다면 Contour Detection은 매우 강력한 검사 도구가 됩니다.

다음 편에서는 "Pattern Matching과 Template Matching 차이점 | 비전검사에서 어떤 알고리즘을 선택해야 할까?"를 통해 두 기술의 원리와 실무 적용 방법을 자세히 알아보겠습니다.