- 영상의 그래디언트 (gradient)
- 함수 f(x,y)를 x축과 y축으로 각각 편미분하여 벡터 형태로 표현한 것
- 실제 영상에서 구한 그래디언트 크기와 방향
- 그래디언트 크기: 픽셀 값의 차이 정도, 변화량
- 그래디언트 방향: 픽셀 값이 가장 급격하게 증가하는 방향
- 2D 벡터의 크기 계산 함수
cv2.magnitude(x,y,magnitude=None) -> magnitude
• x: 2D 벡터의x 좌표행렬. 실수형.
• y: 2D 벡터의y 좌표행렬. x와같은크기.실수형.
• magnitude: 2D 벡터의크기행렬. x와같은크기, 같은타입.
- 2D 벡터의 방향 계산 함수
cv2.phase(x,y,angle=None,angleInDegrees=None) -> angle
• x: 2D 벡터의x 좌표행렬. 실수형.
• y: 2D 벡터의y 좌표행렬. x와같은크기.실수형.
• angle: 2D 벡터의크기행렬. x와같은크기, 같은타입.
angle(𝐼𝐼)=atan2(y𝐼𝐼,x𝐼𝐼)
만약x(I)=y(I)=0이면angle은0으로설정됨.
• angleInDegrees: True이면각도단위, False이면래디언단위.
- 소벨 필터를 이용한 에지 검출 예제
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,cv2.CV_32F,1,0)
dy=cv2.Sobel(src,cv2.CV_32F,0,1)
mag=cv2.magnitude(dx,dy) #255를 넘는 값들이 존재해서 하얗게 나옴
mag=np.clip(mag,0,255).astype(np.uint8) #0~255 사이의 값으로 조정
dst=np.zeros(src.shape[:2],np.uint8)
dst[mag>80]=255
cv2.imshow('mag',mag)
cv2.imshow('dst',dst)
cv2.waitKey()
cv2.destroyAllWindows()
'Computer Vision > opencv(python)' 카테고리의 다른 글
[37] 4) 허프 변환: 직선 검출 (0) | 2021.03.22 |
---|---|
[36] 3) 캐니 에지 검출 (0) | 2021.03.22 |
[34] 6. 영상의 특징 추출 1) 영상의 미분과 소벨 펠터 (0) | 2021.03.22 |
[33] 7) 문서 스캐너 구현 (0) | 2021.03.21 |
[32] 6) 리매핑 (0) | 2021.03.21 |