Sobel operator
lastmod 2023-11-05created 2023-10-164 edits
The Sobel operator, also called the Sobel-Feldman operator or Sobel filter, is used in image processing and computer vision, particularly within edge detection algorithms, where it creates an image emphasizing edges.
cv2.spatialGradient
Calculates the first order image derivative in both x and y using a Sobel operator.
cv2.Sobel
- (Python OpenCV) Image gradients and edge detection - cv2.magnitude, cv2.phase
- 10. Directional Filter(Sobel)
- Image edge detection (Sobel, Canny Edge): principles and usage - gaussian37
src = cv2.imread('lenna.bmp', cv2.IMREAD_GRAYSCALE)
dx = cv2.Sobel(src, cv2.CV_32F, 1, 0) # float 형태의 미분값을 저장
dy = cv2.Sobel(src, cv2.CV_32F, 0, 1)
mag = cv2.magnitude(dx, dy) # 그래디언트 크기
mag = np.clip(mag, 0, 255).astype(np.uint8) # 255보다 커질 수 있으므로 saturate 연산
# 흰색과 검은색으로만 나타내는 윤곽선 생성
dst = np.zeros(src.shape[:2], np.uint8) # 0(검은색)으로 채워져 있는 영상 생성
dst[mag > 120] = 255 # 120은 임계값, 값을 적절하게 설정하면 내가 원하는 부분만 나타낼 수 있음
# dst = cv2.threshold(mag, 120, 255, cv2.THRESH_BINARY) # cv2 함수로 임계값 설정하기
cv2.imshow('src', src)
cv2.imshow('mag', mag)
cv2.imshow('dst', dst)
cv2.waitKey()
cv2.destroyAllWindows()
See also
Favorite site
- Sobel operator - Wikipedia
- [Recommended] Image edge detection (Sobel, Canny Edge): principles and usage - gaussian37 1
References
-
Gaussian37.github.io_-vision-concept-_edge_detection.pdf ↩