Computer Vision/opencv(python)

[34] 6. 영상의 특징 추출 1) 영상의 미분과 소벨 펠터

jwjwvison 2021. 3. 22. 09:28
  • 에지 (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