이미지 특성 매칭이란 이미지의 특징들을 찾아 유사한 특징점들을 연결하는 것을 말한다.
밑에서 동그란 점들은 각 이미지에서 찾은 특징들을 의미하고 선은 특정 값이상의 유사도를 가지는 특징쌍을 연결한것을 의미한다.
- 이미지 매칭 결과
- 코드
import numpy as np import cv2 img1 =cv2.imread("1.jpg",cv2.IMREAD_GRAYSCALE) img2 =cv2.imread("eye.jpg",cv2.IMREAD_GRAYSCALE) img1 = cv2.resize(img1, None, fx=0.1, fy=0.1, interpolation=cv2.INTER_CUBIC) img2 = cv2.resize(img2, None, fx=0.7, fy=0.7, interpolation=cv2.INTER_CUBIC) res = Noneorb=cv2.ORB_create() kp1, des1 = orb.detectAndCompute(img1,None) kp2, des2 = orb.detectAndCompute(img2,None)
bf= cv2.BFMatcher(cv2.NORM_HAMMING, crossCheck=True) matches=bf.match(des1,des2)
matches = sorted(matches, key=lambda x:x.distance) res=cv2.drawMatches(img1,kp1,img2,kp2,matches[:5],res,flags=0)
cv2.imshow("Feature Matching",res) cv2.waitKey(0) cv2.destroyAllWindows()
- 코드 분석
orb=cv2.ORB_create()
- 이미지 특성 매칭에는 여러 방식이 있다 SIFT, SURF, BRIEF, ORB.... 등등 써봤을때 성능은 ORB가 좋은것 같다.
matches = sorted(matches, key=lambda x:x.distance)
res=cv2.drawMatches(img1,kp1,img2,kp2,matches[:5],res,flags=0)- 정렬하고 유사한 특징들을 연결한다.
- matches[:5] : 가장 유사한 특징 쌍 부터 5개의 쌍을 연결한다.
- 이미지 매칭 하면서 느낀점
이미지 특성 매칭의 경우 색상의 차이는 특징이 되지 않는다.
색상이 아닌 선분의 굴곡등과 같은 특징이 많아야 한다.
회전, 이미지 크기 등과 같은 변화에 강하다.
'IT > 영상 처리' 카테고리의 다른 글
[Python_OpenCV] 모폴로지 연산 (morphology) (0) | 2018.09.08 |
---|---|
[Python_OpenCV] Gaussian, Bilateral, Median flter (0) | 2018.09.06 |
[Python_OpenCV] 지정경로에서 이미지 파일 읽어오기 (0) | 2018.08.08 |
[Python_OpenCV] Templete Matching(템플릿 매칭) (0) | 2018.07.22 |
[Python_OpenCV] K-Clustering (0) | 2018.07.21 |