Computer Vision/opencv(python)

[56] 2) 특징점 검출

jwjwvison 2021. 3. 25. 10:54
  • 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