2013-11-29 6 views
4

핸드 헬드 카메라에서 찍은 두 개의 이미지를 정렬하려고합니다.FFT 기반 이미지 등록 (선택적으로 OpenCV 사용)?

처음에는 SIFT/SURF 기능 지점을 기반으로 OpenCV warpPerspective 방법을 사용하려고했습니다. 문제는 화질이 높을 때 특징 추출 & 일치 프로세스가 매우 느릴 수 있다는 것입니다 (3000x4000). 나는 특징점을 찾기 전에 이미지 크기를 줄이려고 시도했으나 결과는 이전처럼 좋지 않습니다. findHomography에서 생성 된 Mat은 이미지 크기를 줄이면 영향을받지 않습니다. 좋은 특징점이 일치하면 결과가 이상합니다.

이 항목을 검색 한 후 푸리에 도메인에서 문제를 해결하면 등록 프로세스가 빨라질 것으로 보입니다. 그리고 나는 code here로 나를 안내하는 this question을 발견했습니다.

유일한 문제는 코드가 꽤 열심히 OpenCV의에서, 나는 단지 dft을 찾아 더 fftshift가 없습니다 수 (OpenCV의를 사용하여 C++ 코드를 재 작성 할 수 있습니다 (심지어 OpenCV의 사용 안 함) NumPy와 함께 파이썬으로 작성된다 또한 fft 물건, 나는 NumPy에 대해 잘 알고 있지 않으며, 단순히 누락 된 방법을 무시할 정도로 용감하지 않습니다.) 그래서 C++을 사용하여 푸리에 도메인 이미지를 구현하지 않는 이유가 궁금합니다.

당신이 저에게 구현 방법에 대한 제안이나 이미 구현 된 C++ 버전에 대한 링크를 제공 할 수 있습니까? 아니면 파이썬 코드를 C++ 코드로 바꾸는 데 도움이 될까요?

큰 감사!

답변

3

FFT 방법은 유사성 변환 즉, (2d) 회전, 평행 이동 및 축척 만 복구 할 수 있다고 확신합니다. 핸드 헬드 카메라를 사용하면 결과가 그렇게 좋지 않을 수도 있습니다.

질문에 대한 직접적인 대답은 아니지만 빠른 속도 향상을위한 제안으로 더 빠른 기능 감지기 및 설명자를 사용해 보셨습니까? OpenCV에서 SIFT/SURF는 피쳐 추출/매칭을위한 가장 느린 메소드 중 일부입니다. 먼저 other 메서드 중 일부를 테스트 해 볼 수 있습니다. 모두 잘 작동하며 SIFT/SURF보다 빠릅니다. 특히 FLANN 기반 매처를 사용하는 경우.

필자는 비슷한 크기의 이미지로 과거에이 작업을 수행해야했으며 OpenCV의 바이너리 설명자를 사용하면 속도가 크게 향상되었습니다.

+0

동의 - 푸리에 공간의 상관 관계는, 간단한 번역, 회전 허용 규모 어렵고 거의 쓸모 투사에 가장 적합합니다. * 진짜 * 질문에 대답하려고 시도한 +1. –

+0

감사합니다. 데이비드, 다른 추출기에 시도해보기로했습니다. 그것이 이미지 등록, 언제 어느 탐지기/추출기 조합이 가장 좋아하는지에 관해서 궁금합니다. –

+0

이미지 내용에 따라 다르지만, 나는 같은 관점에서 가까운 이미지에서 많은 성공을 거두기 위해 FAST/FREAK를 사용했습니다. 또한 ORB를 사용하여 시도했지만 잘못된 일치 항목이 많았지 만 비정상적으로 제거 된 후에는 SIFT와 매우 비슷하게 빠르게 수행되었습니다. –