2013-09-27 3 views
1

, пожалуйста, мне нравится классифицировать набор изображений в 4 классах с помощью SIFT DESCRIPTOR и SVM. Теперь, используя SIFT-экстрактор, я получаю ключевые точки разных размеров, например img1 имеют 100 ключевых точек img2 имеют 55 ключевых точек .... как построить гистограммы, которые дают фиксированные векторы размера с помощью matlabПодготовка классификатора SVM с использованием функций SIFT

ответ

0

Используя обычный подход SIFT, вы никогда не будете иметь одинаковый номер ключевых точек в каждом изображении. Одним из способов достижения этой цели является выборочный анализ дескрипторов плотно, используя Dense SIFT, который помещает регулярную сетку поверх изображения. Если все изображения имеют одинаковый размер, то у вас будет одинаковое количество ключевых точек на изображение.

6

Вы всегда будете получать различное количество ключевых точек для различных изображений, но размер вектора признаков каждой точки дескриптора остается прежним, т.е. 128. Люди предпочитают использовать векторного квантования или K-Mean кластеризацию и построить Bag- гистограммы модели. Вы можете взглянуть на нить this.

6

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

Есть два основных этапа:

Этап 1: Создание кодовой книги.

  1. Разделите входное изображение на набор суб-изображений.
  2. Применить просеивание по каждому суб-изображению. Каждая ключевая точка будет иметь 128-мерный вектор признаков.
  3. Кодировать эти векторы для создания кодовой книги, просто применяя кластеризацию k-значений с выбранным k. Каждое изображение будет производить матрицу В я (i <= n и n этого количество изображений, используемых для создания кодового слова.) Размера 128 * m, где m является количеством ключевых точек, собранных из изображения. Следовательно, вход в K-средство является большой матрицей V, созданной с помощью горизонтальной конкатенации V i, для всех i. Выход K-средств представляет собой матрицу C с размером 128 * k.

Этап 2: Расчет гистограмм.

Для каждого изображения в наборе данных, выполните следующие действия:

  1. Создание гистограммы вектор h размера k и инициализировать его нулями.
  2. Нанести плотные просеять, как на стадии 2 в стадии 1.
  3. Для вектора каждой ключевой точки находит индекс это «лучший матч» вектор в матрице кодовой книги C (может быть минимальной в евклидовом расстоянии).
  4. Увеличьте соответствующий бункер до этого индекса в h на 1.
  5. Нормализовать h по нормам L1 или L2.

Сейчас h готов к классификации.

Другая возможность состоит в том, чтобы использовать вектор Фишера вместо кодовой книги, https://hal.inria.fr/file/index/docid/633013/filename/jegou_aggregate.pdf

+0

Не могли бы вы объяснить, как процессы тестирования и обучения должны идти? Я пытаюсь реализовать описанный здесь подход и не могу понять, как тестировать модель. Если у меня есть помеченный набор данных изображений, во-первых, я создаю кодовую книгу для тестового изображения, верно? Затем для каждого изображения в наборе данных я вычисляю гистограммы с помощью кодовой книги тестового изображения. Итак, я получаю кучу гистограмм, на которых я могу тренировать свой SVM. Но как это проверить? Как получить одно единственное входное изображение, предназначенное для тестирования в формате этих гистограмм, чтобы я мог проверить его обучаемый SVM? Или мое понимание ошибочно? –

+1

Хорошо, я думаю, что получаю это. Я должен создать кодовую книгу не для «входного изображения», а для всего набора данных. И только тогда создайте гистограммы, подающие иск на сгенерированную кодовую книгу. –

Смежные вопросы