- Harris, GFTT, FAST 코너의 문제점
- 이동, 회전 변환에 강인
- 크기 변환에 취약
- 크기 불변 특징점 검출 방법
- SIFT,KAZE,AKAZE,ORB등 다양한 특징점 검출 방법에서 스케일 스페이스(scale-space),이미지 피라미드를 구성하여 크기 불변 특징점을 검출
- OpenCV 특징점 검출 클래스: Feature 2D 클래스와 파생 클래스
- 특징점 검출 알고리즘 객체 생성
cv2.KAZE_create(...) -> retval
cv2.AKAZE_create(...) -> retval
cv2.ORB_create(...) -> retval
cv2.xfeatures2d.SIFT_create(...) -> retval
• retval: 각 특징점 검출 알고리즘 객체
• 참고사항
1. 각각의 알고리즘은 고유한 파라미터를 인자로 받을 수 있음
2. 대부분의 인자는 기본값을 가지고 있으므로 함수 인자 없이 호출 가능
- 특징점 검출 함수
cv2.Feature2D.detect(image,mask=None) -> keypoints
• image: 입력 영상
• mask: 마스크 영상
• keypoints: 검출된 특징점 정보 . cv2.KeyPoint 객체의 리스트
- 검출된 특징점 그리기 함수
cv2.drawKeypoints(image,keypoints,outImage,color=None,flags=None) -> outImage
• image: 입력 영상
• keypoints 검출된 특징점 정보 . cv2.KeyPoint 객체의 리스트
• outImage ; 출력 영상
• color: 특징점 표현 색상 . 기본값은 (-1, -1, -1, -1) 이며 , 이 경우 임의의 색상으로 표현
•flags: 특징점 표현 방법
- 특징점 검출 예제
import sys
import numpy as np
import cv2
# 영상 불러오기
src1 = cv2.imread('graf1.png', cv2.IMREAD_GRAYSCALE)
src2 = cv2.imread('graf3.png', cv2.IMREAD_GRAYSCALE)
if src1 is None or src2 is None:
print('Image load failed!')
sys.exit()
# 특징점 알고리즘 객체 생성 (KAZE, AKAZE, ORB 등)
# feature=cv2.KAZE_create()
feature=cv2.AKAZE_create()
# feature=cv2.ORB_create()
# 특징점 검출
kp1 = feature.detect(src1)
kp2 = feature.detect(src2)
# 검출된 특징점 출력 영상 생성
dst1= cv2.drawKeypoints(src1,kp1,None,flags=cv2.DRAW_MATCHES_FLAGS_DRAW_RICH_KEYPOINTS)
dst2= cv2.drawKeypoints(src2,kp2,None,flags=cv2.DRAW_MATCHES_FLAGS_DRAW_RICH_KEYPOINTS)
cv2.imshow('dst1', dst1)
cv2.imshow('dst2', dst2)
cv2.waitKey()
cv2.destroyAllWindows()
- AKAZE 특징점 검출 결과
'Computer Vision > opencv(python)' 카테고리의 다른 글
[58] 4) 특징점 매칭 (0) | 2021.03.25 |
---|---|
[57] 3) 특징점 기술자 (0) | 2021.03.25 |
[55] 9.특징점 검출과 매칭 1) 코너 검출 (0) | 2021.03.25 |
[54] 7) 간단 스노우앱 (0) | 2021.03.24 |
[53] 6) HOG 보행자 검출 (0) | 2021.03.24 |