OpenCV 비전 실무10장 · Sobel 과 Laplacian 경계 검출20 / 21← 이전목차다음 →MetaContents

10장. Sobel 과 Laplacian 경계 검출

정리

기울기와 Sobel, 크기와 선, Laplacian 의 세 칸으로 10장을 요약한 인포그래픽
  • 경계는 밝기가 갑자기 바뀌는 곳이고, 옆 칸끼리 빼서 그 변화량(기울기)을 잽니다. [50, 50, 50, 200, 200] 에 [-1, 0, 1] 을 걸면 경계 양옆 두 칸이 150 이 됩니다.
  • 가로 기울기 gx 는 세로로 선 경계를, 세로 기울기 gy 는 가로로 누운 경계를 찾습니다. 빼는 방향과 찾아지는 선의 방향은 직각입니다.
  • Sobel 은 빼기 [-1, 0, 1] 에 가운데 무게 1-2-1 을 더한 3×3 커널입니다. cv2.Sobel(img, cv2.CV_64F, 1, 0, ksize=3) 은 네모의 왼쪽 변에서 600, 오른쪽 변에서 −600 을 돌려줍니다.
  • 빼면 음수가 나오므로 CV_64F 로 계산하고, 볼 때만 cv2.convertScaleAbs 로 절댓값을 0~255 에 담습니다. uint8 로 바로 받으면 도형 그림에서 경계 칸의 0.372(834칸)가 사라졌습니다.
  • 크기는 피타고라스 정리 √(gx² + gy²) 로 합칩니다(3 과 4 면 5). cv2.magnitude 가 이 계산을 하고, 방향은 cv2.phase 로 읽습니다. addWeighted 어림값은 원의 곧은 테두리에서 크기의 0.500, 45도 비스듬한 곳에서 0.707 로 방향에 따라 달라졌습니다.
  • Laplacian 은 두 번 빼기라 경계 양옆에 + 와 − 가 나란히 나오고, 0 을 지나는 곳이 경계입니다. 방향이 없고 노이즈에 더 약합니다. 도형 그림에서 0 을 지나는 곳(가로 59~60, 139~140 등)은 밝기가 바뀌는 자리와 똑같았습니다.
  • 노이즈가 있으면 Gaussian 블러를 먼저 겁니다. 표준편차 20 의 노이즈에서 바탕을 경계로 잘못 찾은 비율이 Sobel 0.372, Laplacian 0.591 이었고, 5×5 블러 뒤에는 둘 다 0 이 되었습니다. 크기에 기준을 걸어 경계 지도를 만들고, 이 일을 더 똑똑하게 하는 Canny 는 11장에서 봅니다.
← 이전 절10장 · 프로젝트 1 — 도로 그림에서 차선과 정지선 찾기다음 절 →10장 · 확인문제와 해답