- 에지 (edge)
- 영상에서 픽셀의 밝기 값이 급격하게 변하는 부분
- 일반적으로 배경과 객체, 또는 객체와 객체의 경계
- 기본적인 에지 검출 방법
- 영상을 (x,y)변수의 함수로 간주했을 때, 이 함수의 1차 미분 값이 크게 나타나는 부분을 검출
- 1차 미분의 근사화 (approximation)
- 다양한 미분 마스크
- 소벨 필터를 이용한 미분 함수
cv2.Sobel(src,ddepth,dx,dy,dst=None,ksize=None,scale=None,delta=None,borderType=None) -> dst
• src: 입력영상
• ddepth: 출력영상데이터타입. -1이면 입력 영상과 같은 데이터 타입을 사용.
• dx: x 방향 미분 차수.
• dy: y 방향 미분 차수.
• dst: 출력 영상(행렬)
• ksize: 커널크기. 기본값은3.
• scale: 연산 결과에 추가적으로 곱할값. 기본값은1.
• delta: 연산 결과에 추가적으로 더할값. 기본값은0. (더하면 영상이 더 밝아진다)
• borderType: 가장자리 픽셀 확장 방식. 기본값은cv2.BORDER_DEFAULT.
대부분 dx=1, dy=0, ksize=3 또는 dx=0, dy=1, ksize=3 으로 지정
- 샤르 필터를 이용한 미분 함수
cv2.Scharr(src,ddepth,dx,dy,dst=None,scale=None,delta=None,borderType=None) -> dst
• src: 입력영상
• ddepth: 출력 영상 데이터타입. -1이면 입력 영상과 같은 데이터 타입을 사용.
• dx: x 방향 미분차수.
• dy: y 방향 미분차수.
• dst: 출력영상(행렬)
• scale: 연산 결과에 추가적으로 곱할 값. 기본값은1.
• delta: 연산결과에 추가적으로 더할값. 기본값은0.
• borderType: 가장자리 픽셀 확장 방식. 기본값은 cv2.BORDER_DEFAULT.
- 소벨 필터를 이용한 영상의 미분 예제
import sys
import numpy as np
import cv2
src = cv2.imread('lenna.bmp', cv2.IMREAD_GRAYSCALE)
src=cv2.resize(src,(512,512))
if src is None:
print('Image load failed!')
sys.exit()
dx=cv2.Sobel(src,-1,1,0,delta=128)
dy=cv2.Sobel(src,-1,0,1,delta=128)
cv2.imshow('dx',dx)
cv2.imshow('dy',dy)
cv2.waitKey()
x축과 y축에 관하여 미분한 영상들이 각각 다름을 알 수 있다
'Computer Vision > opencv(python)' 카테고리의 다른 글
[36] 3) 캐니 에지 검출 (0) | 2021.03.22 |
---|---|
[35] 2) 그래디언트와 에지 검출 (0) | 2021.03.22 |
[33] 7) 문서 스캐너 구현 (0) | 2021.03.21 |
[32] 6) 리매핑 (0) | 2021.03.21 |
[31] 5) 어파인 변환과 투시 변환 (0) | 2021.03.21 |