컴퓨터비전 - Contour Detection

Sylen·2024년 7월 24일

Dive to Computer Vision

목록 보기
2/16

Contour Detection

Contour : 같은 색깔 및 intensity를 가지는 연속적인 경계점들로 이루어진 Curve

  • 고전 컴퓨터 비전을 활용해 raw image에서 객체의 contour를 추출

중요성

  • 딥러닝 모델을 사용하지 않으면서 딥러닝 모델 학습을 위한 데이터 가공 시 활용 가능
  • 데이터가 충분하지 않을 떄는 고전 알고리즘이 더 좋은 성능을 보일 떄도 많음

과정

Edge Detection -> Dilation (optional) -> Contour Detection

Canny Edge Detector

: 컴퓨터 비전에서 가장 널리 사용되는 Edge Detector

  • 1986 TPAMI에서 발표된 논문, John Canny에 의해 개발됨
  • 정확도 높음
  • 실행시간 느림
  • 구현 복잡함

과정

  1. 노이즈 제거
  2. 이미지 내의 높은 미분값 찾기
  3. 최대값이 아닌 픽셀 값 0으로 치환
  4. 하이퍼파라미터 조정을 통한 세밀한 엣지 검출

1. 노이즈 제거

: 이미지 내에 노이즈가 있다면 엣지를 찾는데 어려움이 있음
노이즈를 줄이기 위해, 가우시안 필터 이용

가우시안 필터란?

  • 가우시안 분포 함수를 근사하여 생성한 필터 마스크
  • 가우시안 필터 마스크 행렬은 중앙부에서 큰 값을 가짐
  • 중앙에서 외곽으로 갈 수 록 0에 가까운 작은 값을 가짐

2. 이미지 내의 높은 미분값 찾기 Find The Intensity Gradient

  • Sobel 커널을 각 방향으로 적용하여 Gradient 추출
  • 수평방향의 gradient : G_x, 수직방향의 gradient : G_y
  • Gradient의 방향은 엣지와 수직한 방향
    Angle(seta) = tan^{-1}(G_y/G_x)

Sobel 커널이란?

  • 행 또는 열의 변화율을 계산하는 마스크
  • Edge 검출에 특화

3. 최대값이 아닌 픽셀 값 0으로 치환 - Non Maximum Suppression

  • 목표 : 엣지 검출에 기여하지 않은 픽셀을 제거
  • Gradient 방향으로 Gradient의 최대값을 가진 픽셀을 찾음
  • 주변의 값과 비교하여, 엣지가 아닌 픽셀값들을 제거(0으로 치환)함

4. 하이퍼파라미터 조정을 통한 세밀한 엣지 검출 - Hyteresis Thresholding

  • 2가지의 Threshold (Low Threshold, High Threshold)를 정의

Contour Detection with OpenCV

  • Raw Image를 binary Image로 변환 -> OpenCV의 FindContours() 함수 이용
  • Binary Image를 만들 떄 Edge Detection의 결과를 활용
profile
AI가 재밌는 걸

0개의 댓글