2011-11-30 12 views
6

한 이미지 (A)의 SURF 디스크립터와 다른 여러 이미지 (B, C, D, ..)의 디스크립터를 비교해보고 싶습니다. 디스크립터는 64 개의 차원을 갖는다.한 이미지의 SURF 디스크립터와 다른 이미지의 디스크립터 목록 비교

C# 및 Emgu를 사용하면 A의 설명자를 B, C의 순서로 비교 한 다음 D를 비교하여 일치를 수행합니다. 많은 관련이없는 설명자를 검색해야하므로 이미지 수가 10 개를 초과하면 매우 느립니다.

프로세스 속도를 높이려면 (기사에 따라) 적절한 방법은 (B, C, D, ..)의 설명자에 대해 하나의 kd 트리를 작성하여 A. kd 트리는 레벨에 따라 크기가 나뉩니다. 첫 번째 분할은 1 차원, 2 차원으로 분할 된 두 번째 차원 등으로 결정됩니다. 그러나 설명자 (64)에 대한 차원 수가 높으면 KD 트리를 사용하면 얻을 수있는 이점이 줄어 듭니다.

내 질문은 : KD 트리/다른 방법을 사용하여 하나의 이미지 (A)에서 여러 이미지 (B, C, D ..)로 SURF 설명자를 일치시키는 경험이나 지식이 있습니까? 잘되고 잘 돌아 가지 않고 이런 일을 했습니까?

OpenCV에서 사용되는 FLANN이 여기에 옵션이 될 수 있지만 C#의 버전을 찾을 수 없습니다. Nearest Neighboor는 kd-tree의 속도를 높이는 옵션이 될 수도 있지만 일치하는 이미지와 잘 작동합니까?

안부 모르 텐

답변

0

당신은 C 또는 C++에 FLANN에게 그것을 시도 할 수 있습니다. 너무 복잡하지 않습니다.

그러나 FLANN은 C++에서 테스트하고 있지만 일치하는 시간 (SURF 기능, FLANN, 1,000 개의 이미지 쿼리 사용)은 20 초에서 400 초 (이미지 당 특징 벡터의 수에 따라 다름)에서 매우 길다.