본문 바로가기

공학/영상처리

OpenCV::DMatch 연구

1. 두 사진에서 KeyPoint를 뽑아낸다 (여러가지 방식이 있지만 나는 SURF이용)

2. Match를 위해서 descriptor를 뽑아낸다 (이것도 여러가지 방식이 있지만 이것도 SURF이용)

3. descriptor로 match점을 뽑아낸다.



vector<DMatch> matches;



DMatch로 선언된 이 일치점들에는 4가지의 파라미터가 있다.


distance

tranIdx

queryIdx

imgIdx


이것들을 그냥 콘솔에 프린트 해 보았더니


알수 없는 값들이 나왔으며, imgIdx는 전부 0이 나왔다.




완전히 같은 두 사진을 이용한 첫 실험

같은 사진이므로 당연히 일치점도 같다.




모든 점의 distance는 모두 0.



trainIdx와 queryIdx가 뭔지 몰라서 

일단 각각 y축, x축으로 그래프를 그려 보았더니

정확하게  y=x꼴의 일차 직선그래프가 출력되었다.


두 사진은 같은 사진이였으므로

distance가 낮으면 일치율이 높고, y=x직선에 가까울수록 사진이 일치하는건가?





두번째는 각도를 다르게 하여 찍은 두개의 사진이다.


각 점의 distance는 0~0.3의 값을 보였는데,

0~0.1에 해당하면 흰색

0.1~0.2 는 초록색,

0.2~0.3 에 해당하면 빨간색으로 색을 구분했다.



trainIdx와 queryIdx로 구성된 그래프를 살펴보았는데,,

distance가 낮은 흰색점이 y=x에 무조건 가깝지가 않다.

처음 가정이 잘못되었다는것인데..


이 DMatch 파라미터들만 뭔지 알고

수치들을 잘 이용하면 여러가지로 유용하게 써먹을 것 같은데..

원하는 정보를 구글링해도 찾기가 힘들다.


일단 계속 연구중이다.









'공학 > 영상처리' 카테고리의 다른 글

기계와 사람의 시각정보 판단  (0) 2018.07.23