본문 바로가기

etc/FastCampus 챌린지

[패스트캠퍼스 수강 후기] 컴퓨터비전인강 100% 환급 챌린지 8회차

728x90
반응형

8회차 인가..

힘들다...

 

미분 : 순간변화율

 

 

edge 검출과 미분

▪ 에지(edge)

• 영상에서 픽셀의 밝기 값이 급격하게 변하는 부분
• 일반적으로 배경과 객체, 또는 객체와 객체의 경계

▪ 기본적인 에지 검출 방법
• 영상을 (x, y) 변수의 함수로 간주했을 때, 이 함수의 1차 미분(1st derivative) 값이 크게 나타나는 부분을 검출

 

영상의 미분과 소벨 필터

▪ 1차 미분의 근사화(approximation)

• 전진 차분 (Forward difference):



• 후진 차분 (Backward difference):



• 중앙 차분 (Centered difference):

( 가장 정확하고 많이 사용 됨 )

▪ 다양한 미분 마스크

 

▪ 소벨 필터를 이용한 미분 함수

cv2.Sobel(scr, ddepth, dx, dy, dst=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.

 

X 방향으로의 미분 변화


중간 그림 : dx = cv2.filter2D(src, -1, kernel)
우측 그림 : dx = cv2.filter2D(src, -1, kernel, delta=128)

흰색 부분은 값이 급격하게 증가 ( 검 -> 흰 )
검은색 부분은 값이 급격하게 감소 ( 흰 -> 검 )

import sys
import numpy as np
import cv2

src = cv2.imread('Lenna.png', cv2.IMREAD_GRAYSCALE)

if src is None:
    print('Image load Failed!')
    sys.exit()

kernel = np.array([
    [-1, 0, 1],
    [-2, 0, 2],
    [-1, 0, 1]], dtype=np.float32)

dx = cv2.filter2D(src, -1, kernel)

cv2.imshow('src', src)
cv2.imshow('dx', dx)
cv2.waitKey()

 

 

y 방향 ( dy ) 
x 방향 ( dx ) 비교

 

src , dx , dy

import sys
import numpy as np
import cv2

src = cv2.imread('Lenna.png', cv2.IMREAD_GRAYSCALE)

if src is None:
    print('Image load Failed!')
    sys.exit()

kernel = np.array([
    [-1, 0, 1],
    [-2, 0, 2],
    [-1, 0, 1]], dtype=np.float32)

dx = cv2.Sobel(src, -1, 1, 0, delta=128)
dy = cv2.Sobel(src, -1, 0, 1, delta=128)

cv2.imshow('src', src)
cv2.imshow('dx', dx)
cv2.imshow('dy', dy)
cv2.waitKey()

 

▪ 샤르 필터를 이용한 미분 함수 ( 많이 사용 안됨 )

cv2.Scharr(scr, ddepth, dx, dy, dst=None, delta=None, borderType=None) -> dst

• src: 입력 영상 
• ddepth: 출력 영상 데이터 타입. -1이면 입력 영상과 같은 데이터 타입을 사용. 
• dx: x 방향 미분 차수. 
• dy: y 방향 미분 차수. 
• dst: 출력 영상(행렬) 
• scale 연산 결과에 추가적으로 곱할 값. 기본값은 1. 
• delta: 연산 결과에 추가적으로 더할 값. 기본값은 0. 
• borderType: 가장자리 픽셀 확장 방식. 기본값은 cv2.BORDER_DEFAULT.

728x90
반응형