728x90
목표
- 이미지 그라디언트와 에지를 구해봅시다
이론
- opencv에서는 sobel, scharr, laplacian 3가지 그라디언트 필터(고주파 통과 필터)를 제공하고 있습니다.
1. sobel과 shcarr 미분
- 소벨 연산자는 결합 가우시안 스무딩 + 미분을 수행하므로 노이즈에 강인하나, 미분 방향과 커널 크기를 명시해주어야 합니다.
- scharr 필터는 소벨 필터보다 더 좋은 결과를 내는데 한번 보세요
2. 라플라시안 미분
- 이미지 라플라시안을 구하려면 다음의 식을 계산하면 됩니다. 여기서 각각의 미분은 소벨과 동일하게 수행해서 얻을수 있겠습니다.
- ksize = 1로 하는 경우 다음의 커널이 필터링에 사용되겠습니다.
import cv2
import numpy as np
from matplotlib import pyplot as plt
img = cv2.imread('C:/Users/do/Documents/github/opencv_python/res/dave.jpg', 0)
laplacian = cv2.Laplacian(img,cv2.CV_64F)
sobelx = cv2.Sobel(img,cv2.CV_64F,1,0,ksize=5)
sobely = cv2.Sobel(img,cv2.CV_64F,0,1,ksize=5)
plt.subplot(2,2,1),plt.imshow(img,cmap = 'gray')
plt.title('Original'), plt.xticks([]), plt.yticks([])
plt.subplot(2,2,2),plt.imshow(laplacian,cmap = 'gray')
plt.title('Laplacian'), plt.xticks([]), plt.yticks([])
plt.subplot(2,2,3),plt.imshow(sobelx,cmap = 'gray')
plt.title('Sobel X'), plt.xticks([]), plt.yticks([])
plt.subplot(2,2,4),plt.imshow(sobely,cmap = 'gray')
plt.title('Sobel Y'), plt.xticks([]), plt.yticks([])
plt.show()
300x250
'로봇 > 영상' 카테고리의 다른 글
opencv-python 튜토리얼 - 14. 이미지 피라미드 (0) | 2020.08.15 |
---|---|
opencv-python 튜토리얼 - 13. 캐니 에지 검출기 (0) | 2020.08.14 |
opencv-python 튜토리얼 - 11. 모폴로지 연산 (0) | 2020.08.14 |
opencv-python 튜토리얼 - 10. 이미지 스무딩 (0) | 2020.08.14 |
opencv-python 튜토리얼 - 9. 이미지 이진화 (0) | 2020.08.14 |