Каков порядок параметров в vl_ubcmatch?

Я использую реализацию SIFT VLFEAT для вычисления дескрипторов SIFT для двух наборов изображений: запросов и изображений базы данных. Учитывая набор запросов, я хотел бы получить наиболее близкие дескрипторы из большой базы данных дескрипторов, для чего я использую vl_ubcmatch.

Имея синтаксис vl_ubcmatch как MATCHES = vl_ubcmatch(DESCR1, DESCR2), я получаю разные результаты, если сначала ввожу дескрипторы запроса, а дескрипторы базы данных в качестве второго параметра или наоборот.

Какой правильный синтаксис?

1) MATCHES = vl_ubcmatch(QUERY_DESCR,DATABASE_DESCR)

or

2) MATCHES = vl_ubcmatch(DATABASE_DESCR,QUERY_DESCR)


person josemrivera    schedule 25.06.2013    source источник


Ответы (2)


MATCHES = vl_ubcmatch(DESCR1, DESCR2) для каждого дескриптора в DESCR1 ищет ближайший дескриптор в DESCR2 и добавляет его к выходным данным, если совпадение проходит тест (подробнее см. ответ deltheil). Поэтому я считаю, что MATCHES = vl_ubcmatch(QUERY_DESCR,DATABASE_DESCR) - это вариант, который вам нужен.

person user1228855    schedule 26.06.2013

Я получаю разные результаты, если сначала ввожу дескрипторы запроса, а дескрипторы базы данных в качестве второго параметра или наоборот.

Это связано с тем, что в этом методе за кулисами используется алгоритм проверки отношения[1], т. е. сравнение расстояния до ближайшего соседа с расстоянием до второго ближайшего соседа.

Реализация vl_feat по умолчанию использует порог 1.5 следующим образом:

if(thresh * (float) best < (float) second_best) {
  /* accept the match */
}

Этот тест отношения не является симметричным, поэтому вы можете получить различия между наборами совпадений при обмене входными данными.

Если вас это не устраивает, вы можете обратиться к Программированию компьютерного зрения с использованием библиотеки OpenCV Глава 9, в которой предлагается прагматичный способ симметричного сопоставления следующим образом:

Из этих [соответствующих] наборов мы теперь извлечем совпадения, которые согласуются с обоими наборами. Это симметричная схема сопоставления, предполагающая, что для того, чтобы пара совпадения была принята, обе точки должны быть лучшими соответствующими характеристиками друг друга.

[1] см. 7.1 Сопоставление ключевых точек из статьи Д. Лоу.

person deltheil    schedule 25.06.2013