본문 바로가기

[ 프로그래밍 ]/OpenCV 관련

OpenCV find-obj를 이용한 마커리스 AR

위성/심해 영상 정합과 관련된 논문을 읽으며, SIFT, SURF 테스트 프로그램을 좀 짜봐야겠다고 생각하고 있던 차에
OpenCV에서 이미 SURF를 구현해 두었기에 간단히 테스트를 해 보았다.

아래는 데모프로그램에서 제공하는 예제 사진인데 생각했던 것 보다 성능이 괜찮다. 다만 문제는 수행시간이다.
상단의 책 영상의 크기가 324 x 223 px, 아래 타겟 영상은 512 x 384 px 인데,
키포인트를 찾고 하는데 걸리는 시간이 290ms. 과연 실시간으로 가능할지 궁금해졌다.


먼저 몇 개의 테스트 영상으로 다른 응용방법을 생각해 보았다.
테스트 영상으로 사용한 영상(손쉽게 구할 수 있는 데이타가 이것 밖에 없음에)은 참으로 나답게도 번호판 영상이다.


수행시간이 좀 오래 걸리는 편이라 이미지를 작게 해서 테스트를 했는데 결과는 고만고만하다.
OpenCV 라이브러리에서 제공한 예제 이미지와 비교해볼 때,
SURF는 키포인트의 수가 부족한 영상에 대해서는 확실히 제기능을 발휘하지 못한다.
그런 관점에서 SURF는 마커리스 AR 같은 응용에 적합할 것 같은 생각이 들었다.


아래는 '그런 관점에서' 만들어 본 테스트 프로그램이다.


집에서 추워서 이러고 있다.

 

대체적으로 제성능을 발휘하는 것으로 보여지며, 수행시간 또한 평균 200ms(5 frames/sec) 정도로 크게 나쁘지는 않아 보임.
빠른 움직임 때문에 포커스가 나가는 경우 칼만필터 등을 적용하여 개선이 가능할 것으로 판단된다.