AI 그게 뭔데
끄적끄적 개발일지
AI 그게 뭔데
전체 방문자
오늘
어제
  • 분류 전체보기 (342)
    • 논문 (5)
    • DL(Deep-Learning) (34)
      • 개념 (14)
      • Python 기초 (14)
      • Tensorflow (6)
      • Pytorch (0)
    • NLP (10)
    • OpenCV (53)
    • DevOps (10)
      • AWS (2)
      • Docker & Kubernetes (4)
      • Spark (3)
      • SQL (1)
    • MacOS (1)
    • React-Native (2)
    • BI (3)
      • GA(Google Analytics) (3)
      • Tableau (0)
    • 알고리즘 (221)
      • 백준 (76)
      • 프로그래머스 (108)
      • 기타 알고리즘 (37)

인기 글

태그

  • 연습문제
  • level1
  • Python
  • 알고리즘
  • 파이썬
  • 백준
  • OpenCV
  • LEVEL2
  • 이코테
  • 프로그래머스

최근 글

hELLO · Designed By 정상우.
AI 그게 뭔데

끄적끄적 개발일지

[OpenCV with Python] 영상의 특징 추출 : 그래디언트와 에지 검출
OpenCV

[OpenCV with Python] 영상의 특징 추출 : 그래디언트와 에지 검출

2022. 2. 4. 11:20

그래디언트  Gradient

그래디언트는 함수 f(x,y)를 x축과 y축으로 각각 편미분(partial derivative)하여 벡터 형태로 표현한 것이다.

x방향 미분과 y방향 미분을 따로 계산하고 벡터라는 것으로 묶은 것이 그래디언트이다.

 

그래디언트 크기는 픽셀 값의 차이, 변화량을 의미하며, 그래디언트 방향은 픽셀 값이 가장 급격하게 증가하는 방향을 나타낸다.

 

 

✔︎  2D 백터의 크기 계산 함수 - cv2.magnitude

소벨 필터로 구한 x방향, y방향 미분 값을 cv2.magnitude에 입력값으로 설정하면 백터의 크기를 계산할 수 있다. 

 

magnitude = cv2.magnitude(x, y, magnitude=None)
  • x : 2D 벡터의 x 좌표 행렬. 실수형.
  • y : 2D 벡터의 y 좌표 행렬. x와 같은 크기. 실수형
  • magnitude : 2D 벡터의 크기 행렬. x와 같은 크기, 같은 타입.

 

 

✔︎  2D 백터의 방향 계산 함수 - cv2.phase

angle = cv2.phase(x, y, angle=None, angleInDegrees=None)
  • x : 2D 벡터의 x 좌표 행렬. 실수형.
  • y : 2D 벡터의 y 좌표 행렬. x와 같은 크기. 실수형.
  • angle : 2D 벡터의 크기 행렬. x와 같은 크기, 같은 타입.
  • angleInDegrees : True이면 각도 단위, False이면 래디언 단위

 

 

💬  소벨필터를 이용한 에지 검출 예제

import sys
import numpy as np
import cv2


src = cv2.imread('lenna.bmp', cv2.IMREAD_GRAYSCALE)

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

dx = cv2.Sobel(src, cv2.CV_32F, 1, 0)
dy = cv2.Sobel(src, cv2.CV_32F, 0, 1)

mag = cv2.magnitude(dx, dy)
mag = np.clip(mag, 0, 255).astype(np.uint8)

dst = np.zeros(src.shape[:2], np.uint8)
dst[mag > 120] = 255
#_, dst = cv2.threshold(mag, 120, 255, cv2.THRESH_BINARY)

cv2.imshow('src', src)
cv2.imshow('mag', mag)
cv2.imshow('dst', dst)
cv2.waitKey()

cv2.destroyAllWindows()

 

원본 / 그래디언트 크기 / 임계값 설정

'OpenCV' 카테고리의 다른 글

[OpenCV with Python] 영상의 특징 추출 : 영상에서 직선 검출하기 - 허프 변환  (0) 2022.02.04
[OpenCV with Python] 영상의 특징 추출 : 캐니 에지 검출 cv2.Canny  (1) 2022.02.04
[OpenCV with Python] 영상의 특징 추출 : 영상의 미분과 소벨 필터  (0) 2022.02.04
[OpenCV with Python] 영상 기하학적 변환 : 리매핑(remapping) - cv2.remap  (0) 2022.02.02
[OpenCV with Python] 영상 기하학적 변환 : 투시 변환  (0) 2022.02.02
    AI 그게 뭔데
    AI 그게 뭔데
    공부와 개발 그리고 AI가 약간 첨가된 흔적 남기기

    티스토리툴바