Классификация изображений с функциями просеивания и Knn?

Можете ли вы помочь мне дождаться классификации изображений с использованием функции SIFT?

Я хочу классифицировать изображения на основе функций SIFT:

  • Учитывая обучающий набор изображений, извлеките из них SIFT
  • Вычислите K-средние по всему набору SIFT, извлеченному из обучающего набора. параметр «К» (количество кластеров) зависит от количества SIFT, которые у вас есть для обучения, но обычно составляет около 500-> 8000 (чем больше, тем лучше).
  • Теперь вы получили K кластерных центров.
  • Вы можете вычислить дескриптор изображения, назначив каждый SIFT изображения одному из K кластеров. Таким образом, вы получите гистограмму длины K.
  • У меня есть 130 изображений в тренировочном наборе, поэтому мой тренировочный набор 130 * K размерный.
  • Я хочу классифицировать свои тестовые изображения, у меня есть 1 изображение, поэтому мой образец имеет размерность 1 * k. Я написал этот код knnclassify (образец, тренировочный набор, группа).

Я хочу отнести к 7 группе. Таким образом, 1_

Ошибка: длина GROUP должна равняться количеству строк в TRAINING. Что я могу сделать?


person user3836704    schedule 10.11.2014    source источник


Ответы (1)


Прямо из документов:

CLASS = knnclassify(SAMPLE,TRAINING,GROUP) классифицирует каждую строку данных в SAMPLE в одну из групп в TRAINING, используя метод ближайшего соседа. SAMPLE и TRAINING должны быть матрицами с одинаковым количеством столбцов. GROUP — группирующая переменная для TRAINING. Его уникальные значения определяют группы, и каждый элемент определяет группу, к которой принадлежит соответствующая строка TRAINING. GROUP может быть числовым вектором, массивом строк или массивом ячеек строк. ОБУЧЕНИЕ и ГРУППА должны иметь одинаковое количество строк.

Это означает, что group должно быть 130x1 и должно указывать, к какой группе принадлежит каждая обучающая выборка. unique(group) в вашем случае должно возвращать 7 значений — семь категорий, представленных в вашем тренировочном наборе. Если у вас еще нет группового вектора, указывающего, к каким категориям относится изображение, вы можете использовать kmeans, чтобы разделить тренировочный набор на 7 групп:

group = kmeans(trainingset,7);
knnclassify(sample, trainingset, group);
person nkjt    schedule 12.11.2014