- 특징점 매칭 (feature point matching)
- 두 영상에서 추출한 특징점 기술자를 비교하여 서로 유사한 기술자를 찾는 작업
- 특징 벡터 유사도 측정 방법
- 실수 특징 벡터: (L2 norm) 사용
- 이진 특징 벡터: (hamming distance) 사용
- OpenCV 특징점 매칭 클래스
- 특징점 매칭 알고리즘 객체 생성
cv2.BFMatcher_create(normType=None,crossCheck=None) -> retval
- 특징점 검출 알고리즘 객체 생성
cv2.DescriptorMatcher.match(queryDescriptors,trainDescriptors,mask=None) -> matches
• queryDescriptors (기준 영상 특징점) 질의 기술자 행렬
• trainDescriptors : (대상 영상 특징점) 학습 기술자 행렬
• mask: 매칭 진행 여부를 지정하는 행렬 마스크
• matches: 매칭 결과 . cv2.DMatch 객체의 리스트
cv2.DescriptorMatcher.knnmatch(queryDescriptors,trainDescriptors,k,mask=None,compactResult=None)
-> matches
• queryDescriptors (기준 영상 특징점) 질의 기술자 행렬
• trainDescriptors : (대상 영상 특징점) 학습 기술자 행렬
• k: 질의 기술자에 대해 검출할 매칭 개수
• mask: 매칭 수행 여부를 지정하는 행렬 마스크
• compactResult : mask 가 None 이 아닐 때 사용되는 파라미터 . 기본값은 False 이며 이 경우 결과 matches 는 기 준 영상 특징점과 같은 크기를 가짐 .
• matches: 매칭 결과 cv2.DMatch 객체의 리스트의 리스트
- 특징점 매칭 결과 영상 생성
- 특징점 매칭 예제
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() #실수 descriptor(기술자)를 쓴다
#feature = cv2.AKAZE_create() #이진 기술자를 쓴다 --> 밑에서 NORM_HAMMING 을 사용해야함
#feature = cv2.ORB_create() #이진 기술자를 쓴다
# 특징점 검출 및 기술자 계산
kp1,desc1=feature.detectAndCompute(src1,None)
kp2,desc2=feature.detectAndCompute(src2,None)
# 특징점 매칭
matcher=cv2.BFMatcher_create()
# matcher=cv2.BFMatcher_create(cv2.NORM_HAMMING)
matches=matcher.match(desc1,desc2)
print('# of kp1:', len(kp1))
print('# of kp2:',len(kp2))
print('# of matches:',len(matches))
# 특징점 매칭 결과 영상 생성
dst=cv2.drawMatches(src1,kp1,src2,kp2,matches,None)
cv2.imshow('dst',dst)
cv2.waitKey()
cv2.destroyAllWindows()
'Computer Vision > opencv(python)' 카테고리의 다른 글
[60] 6) 호모그래피와 영상 매칭 (0) | 2021.03.25 |
---|---|
[59] 5) 좋은 매칭 선별 (0) | 2021.03.25 |
[57] 3) 특징점 기술자 (0) | 2021.03.25 |
[56] 2) 특징점 검출 (0) | 2021.03.25 |
[55] 9.특징점 검출과 매칭 1) 코너 검출 (0) | 2021.03.25 |