Что такое `query` и` train` в openCV features2D

Всюду в классах features2D я вижу термины query и train. Например, matches имеют trainIdx и queryIdx, а Matchers имеют метод train().

Я знаю определение слов train и query на английском языке, но я не могу понять смысл этих свойств или методов.

P.S. Я понимаю, что это очень глупый вопрос, но, возможно, потому, что английский не мой родной язык.

Ответ 1

Чтобы закончить ответ sansuiso, я полагаю, что причина выбора этих имен должна заключаться в том, что в каком-то приложении у нас есть набор изображений (учебные изображения) заранее, например, 10 изображений, сделанных внутри вашего офиса. Функции могут быть извлечены, и дескрипторы функций могут быть рассчитаны для этих изображений. И во время выполнения системе обращается к системе, чтобы запросить подготовленную базу данных. Следовательно, изображение запроса относится к этому изображению. Мне действительно не нравится, как они назвали эти параметры. Там, где у вас есть пара стереоизображений, и вы хотите соответствовать этим функциям, эти имена не имеют смысла, но вы должны выбрать соглашение, всегда называйте левое изображение изображением запроса и правильным изображением в качестве учебного изображения. Я сделал свою кандидатуру на компьютерное зрение, и некоторые соглашения об именах в OpenCV кажутся мне очень запутанными/глупыми. Поэтому, если вы обнаружите, что эти смутные или глупые вы не одиноки.

Ответ 2

  • train: эта функция создает внутреннее состояние классификатора, чтобы сделать его работоспособным. Например, подумайте о подготовке SVM или создании kd-дерева из справочных данных. Возможно, вы сбиты с толку, потому что этот шаг часто упоминается как обучение в литературе.

  • query - это действие нахождения ближайших соседей по множеству точек, и, кроме того, оно также относится ко всему множеству точек, для которых yo требуется ближайший сосед. Напомним, что вы можете попросить соседей по 1 точке или целому ряду в том же вызове функции (путем укладки объектов в матрицу).

  • trainIdx и queryIdx ссылаются на индекс пинты в наборе ссылок/запросов соответственно, т.е. вы запрашиваете совпадение для ближайшей точки (сохраненной в позиции trainIdx) в какой-то другой точке (сохраняется в позиции queryIdx). Конечно, trainIdx известен после вызова функции. Если ваши точки хранятся в матрице, индекс будет линией рассматриваемой функции.

Ответ 3

Я понимаю "запрос" и "тренирую" очень наивным, но полезным способом: "поезд": данные или изображение предварительно обрабатываются для получения базы данных "запрос": входные данные или изображение, которые будут запрашиваться в базе данных, которую мы предварительно изучили. Надеюсь, это поможет и вам.