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

+ Recent posts