https://docs.opencv.org/3.4/d2/d2c/tutorial_sobel_derivatives.html
가장자리는 급격하게 값이 변하는 곳으로 표현할 수 있다.
1차 미분을 하게 되면 엣지 부분을 더 쉽게 볼 수 있다.
sobel operation은 3x3크기의 행렬을 사용해서 연산을 할 때 중심을 기준으로 앞 뒤 방향으로 비교해서 변화량을 검출하는 알고리즘이다.
sobel은 x방향, y방향으로 나눠서 각각 행렬을 갖는다. (대각선으로도 가능하다.)
이 행렬은 모두 홀수 size를 가져야한다.
먼저 x방향으로 다음과 같이 kernel G_x를 나타낼 수 있다.
다음 y방향으로 다음과 같이 표현할 수 있다.
이미지의 각 지점에서 두 결과 G_x, G_y를 계산결과를 결합해서 해당 지점의 gradient의 근사값을 구한다.
위 식보다 더 간단히 아래와 같이 표현하기도 함.
사용하는 방법은 굉장히 간단하다.
#edge는 픽셀값이 급격하게 변하는 지점이다.
#주변보다 1차 미분값이 큰 부분을 엣지로 검출하게된다.
#sobel x,y 방향 각각의 별도 커널을 사용해서 엣지 검출한다.
#sobel x는 수직선 방향
#sobel y는 수평선 방향
import cv2
from google.colab.patches import cv2_imshow
img_path='/content/drive/My Drive/다핏문제/909/lena.jpg'
이미지를 grayscale로 읽어서 cv2.Sobel()함수를 사용하면 된다.
Sobel()함수의 파라미터는 다음과 같다.
img = cv2.imread(img_path,2)
res = cv2.Sobel(img,-1,1,1,ksize=3)
cv2_imshow(res)
'DAFIT > 909 - OpenCV 연습하기 (1)' 카테고리의 다른 글
<DAFIT> 09 OpenCV 연습하기(1) - 05 Noise and Filtering(2) (0) | 2019.12.11 |
---|---|
<DAFIT> 09 OpenCV 연습하기(1) - 07 Edge Detection(2) (0) | 2019.12.11 |
<DAFIT> 09 OpenCV 연습하기(1) - 05 Noise and Filtering(2) (0) | 2019.12.10 |
<DAFIT> 09 OpenCV 연습하기(1) - 04 Noise and Filtering(1) (0) | 2019.12.10 |
<DAFIT> 09 OpenCV 연습하기(1) - 03 Sharpening Filter (0) | 2019.12.10 |