테두리 검출

qkdk·2024년 8월 21일

openCV

목록 보기
5/15
post-thumbnail

Canny Edge Detection

존 캐니(John F. Canny)가 개발한 알고리즘으로, 이미지에서 에지를 검출하는 매우 효과적인 방법 중 하나.

일반 모서리만 필요한 고해상도 이미지의 경우 캐니 알고리즘을 적용하기 전에 자신의 블러(스무딩) 부터 적용하는것이 좋다.

캐니 알고리즘에서는 사용자가 높은 , 낮은 임계값을 정해야함
방정식을 이용하면 알수있지만, 직접 매뉴얼하게 하는경우도 있다.

방정식

  • lower bound : 이미지의 중간값의 70%
  • upper bound : 이미지의 중간값의 130%

Canny Edge Detection 과정

  1. 노이즈 감소(Noisy Reduction):

    • 먼저 Gaussian 블러(Gaussian Blur)를 사용하여 이미지의 노이즈를 제거합니다. 이는 에지 검출의 정확성을 높이기 위해 중요한 단계입니다.
    • OpenCV에서는 cv2.GaussianBlur 함수를 사용합니다.
  2. 그레이디언트 계산(Gradient Calculation):

    • Sobel 연산자를 사용하여 이미지의 수평(X-axis)과 수직(Y-axis) 방향의 그래디언트를 계산합니다.
    • 이를 통해 밝기 변화가 급격한 부분, 즉 잠재적인 에지를 확인합니다.
  3. 비최대 억제(Non-Maximum Suppression):

    • 얻게 된 그레이디언트를 억제하여 에지의 두께를 1픽셀로 만듭니다.
    • 이는 에지를 더욱 선명하게 만듭니다.
  4. 이중 임곗값(Double Thresholding):

    • 두 개의 서로 다른 임곗값(threshold)을 사용하여 에지를 분류합니다.
    • 높은 값은 강한 에지(strong edge)를, 낮은 값은 약한 에지(weak edge)를 나타냅니다.
  5. 에지 추적과 이음선 연결(Edge Tracking by Hysteresis):

    • 강한 에지에서 시작하여 약한 에지까지 추적합니다. 이로써 전체적인 에지를 연결합니다.
# Syntex

# Example
  • image: 입력 이미지, 그레이스케일이어야 합니다.
  • threshold1: 하단 임곗값(lower threshold)입니다.
  • threshold2: 상단 임곗값(upper threshold)입니다.
  • apertureSize: Sobel 연산에 사용되는 커널 크기, 기본값은 3입니다.
  • L2gradient: 그레이디언트의 크기를 계산할 때
    (dI/dx)2+(dI/dy)2\sqrt{(dI/dx)^2 + (dI/dy)^2}
    을 사용할지 여부. 기본값은 False입니다.
원본블러링 X블러링 O블러링 O + 임계값 수동 조정

엣지 검출은 블러링과 임계값 조정를 활용해 최대한의 결과물을 만들어 내야한다.

profile
qkdk

0개의 댓글