OpenCV 비전 실무11장 · Canny 와 Edge 비교20 / 21← 이전목차다음 →MetaContents

11장. Canny 와 Edge 비교

정리

Canny 의 네 단계, 기준값 정하기, 성능 견주기의 세 칸으로 11장을 요약한 인포그래픽
  • 좋은 경계 검출은 존 캐니가 1986년에 세운 세 기준, 곧 잘 찾기(빠뜨림·헛것 없이), 제자리에, 한 번만(한 줄)을 지킵니다. 세 기준은 서로 당기므로 한쪽만 보고 숫자를 고르지 않습니다.
  • Canny 는 블러 → 기울기 크기·방향 → 비최대 억제 → 이력 임계값의 네 단계입니다. cv2.Canny 는 블러를 해 주지 않으므로 cv2.GaussianBlur 를 먼저 겁니다.
  • 비최대 억제는 기울기 방향(0·45·90·135도)의 이웃 두 칸보다 큰 칸만 남깁니다. 원 테두리를 가로지르는 칸이 5개에서 1개로 줄었고, 직접 짠 NumPy 결과도 cv2.Canny 와 같은 한 칸 두께였습니다.
  • 이력 임계값은 high 이상은 남기고, low 와 high 사이는 강한 경계와 이어질 때만 남깁니다. 옅어지는 띠에서 low 를 150 에서 10 으로 낮추자 재현율이 0.523 에서 0.739 로 올랐고, 강한 경계가 없는 원은 high 를 80 으로 낮춰야 나타났습니다.
  • 기준값은 high : low = 2 : 1 ~ 3 : 1 이 출발점입니다. apertureSize 를 키우면 기준값도 키워야 하고(5 에서 F1 0.116), L2gradient=True 는 노이즈 낀 도형 그림에서 F1 을 0.939 에서 0.990 으로 올렸습니다.
  • 자동 기준값은 경험 규칙입니다. 노이즈 낀 세 그림의 평균 F1 은 Otsu 규칙 0.983, 고정 50, 150 이 0.979, 중앙값 규칙 0.761 이었고, 중앙값 규칙은 어두운 바탕에서 기준값이 너무 낮아졌습니다.
  • 성능은 정답 경계를 팽창으로 1칸 넓혀 정밀도·재현율·F1 로 잽니다. 프로젝트에서 노이즈 0·15 에서는 Canny(F1 0.953, 0.982), 노이즈 30 에서는 Sobel(0.853)이 앞섰지만, Canny 의 기준값을 100, 200 으로 올리면 다시 가장 높았습니다. 다음 12장에서는 Canny 로 얻은 선을 윤곽선으로 묶습니다.
← 이전 절11장 · 프로젝트 1 — 경계 검출 알고리즘 비교 보고서다음 절 →11장 · 확인문제와 해답