Сравните дескрипторы SURF в одном изображении со списком дескрипторов в других изображениях

Я хочу сравнить дескрипторы SURF в одном изображении (A) с дескрипторами в нескольких других изображениях (B, C, D, ..), чтобы найти изображение, наиболее похожее на A. Дескрипторы имеют 64 измерения.

Используя C # и Emgu, сопоставление осуществляется путем сравнения дескрипторов A с дескрипторами B, затем с дескрипторами C, затем с D и так далее. Это очень медленно, когда количество изображений превышает 10, потому что нужно искать множество нерелевантных дескрипторов.

Чтобы ускорить процесс, верный путь (согласно статьям), кажется, состоит в том, чтобы построить одно kd-дерево для дескрипторов в (B, C, D, ..), чтобы быстро найти дескриптор в A Kd-дерево разбито по размерам в соответствии с уровнем. Первое разбиение определяется по 1-му измерению, второе - по 2-му измерению и т. Д. Однако при большом количестве измерений для дескрипторов (64) выгода от использования KD-дерева становится меньше.

Итак, мой вопрос: какой у вас опыт или знания в использовании KD-дерева / другого метода для сопоставления дескрипторов SURF от одного изображения (A) к нескольким изображениям (B, C, D ..). Что работает хорошо, а что не очень хорошо, и делали ли вы что-нибудь подобное?

Здесь можно было бы использовать FLANN, поскольку он используется OpenCV, но я не могу найти версию для C #. Примерно ближайший Neightboor также был бы вариантом для ускорения kd-дерева, но хорошо ли это работает с совпадающими изображениями?

С уважением Мортен

6
задан MortenGR 30 November 2011 в 11:05
поделиться