본문 바로가기

OpenCV/Python

에지 검출

에지란?

:픽셀값이 급격하게 커지는 부분

: 그냥 심플하게 픽셀값 곡선을 미분해서, 미분값이 가장 큰 부분을 에지로 검출

 

1. 소벨의 마스크

 

1) 수직 방향 검출용 마스크

 

2) 수평 방향 검출용 마스크

3) 사용 방법

cv.Sobel(이미지 , cv.CV_64F, 수직 마스크, 수평 마스크, ksize=3)

 

-> 적용 후 출력하려면 반드시 8비트 unsigned int 로 변경해줘야 한다.

 

EX) 이 이미지의 에지를 검출해보자

1. 수직 검출 마스크 사용

import cv2 as cv
import numpy as np

img = cv.imread('Sobel.png')
img_gray = cv.cvtColor(img, cv.COLOR_BGR2GRAY)

sobel_x = cv.Sobel(img_gray, cv.CV_64F, 1, 0, ksize=3)
sobel_X = cv.convertScaleAbs(sobel_x)

cv.imshow('x', sobel_x)


cv.waitKey(0)

 

2. 수평 검출 마스크

sobel_x = cv.Sobel(img_gray, cv.CV_64F, 0, 1, ksize=3) -> 요 부분만 변경

 

3. 두 소벨 마스크 결과 합치기

import cv2 as cv
import numpy as np

img = cv.imread('Sobel.png')
img_gray = cv.cvtColor(img, cv.COLOR_BGR2GRAY)

sobel_x = cv.Sobel(img_gray, cv.CV_64F, 1, 0, ksize=3)
sobel_x = cv.convertScaleAbs(sobel_x)


sobel_y = cv.Sobel(img_gray, cv.CV_64F, 0, 1, ksize=3)
sobel_y = cv.convertScaleAbs(sobel_y)

img_all = cv.addWeighted(sobel_x, 1, sobel_y, 1, 0)

cv.imshow('All', img_all)


cv.waitKey(0)

 

 

 

 

※ Canny edge Detector

: 그 동안 몇번 썻던 Canny 함수다

 

코딩 시작하고 수학 손땐지 쫌 됬었는데, 다시 잡아야될 듯

 

 

 

 

 

'OpenCV > Python' 카테고리의 다른 글

모폴로지 Morphology  (0) 2021.06.13
Convolution and Mask  (0) 2021.06.13
원근(퍼스펙티브) 변환  (0) 2021.06.13
영역 지정 (내가 헷갈려서 정리..)  (0) 2021.06.13
이미지 기하학적 변환  (0) 2021.06.13