2014-11-10 4 views
1

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

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

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

Я хочу классифицировать по 7 группам. Таким образом, knnclassify(sample(1*10),trainingset(130*10),group(7*1))

Ошибка: Длина GROUP должна равняться количеству строк в ТРЕНИРОВОК. Что я могу сделать?

ответ

0

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

КЛАСС = knnclassify (ОБРАЗЕЦ, ПОДГОТОВКА, ГРУППА) классифицирует каждую строку из данных в выборке в одну из групп, в процессе обучения с использованием методы ближайши- соседа. ОБРАЗЕЦ И ОБУЧЕНИЕ должны быть матрицами с тем же числом столбцов. . GROUP - это переменная группировки для ТРЕНИРОВКИ. Его уникальные значения определяют , а каждый элемент определяет группу , которой принадлежит соответствующая строка ОБУЧЕНИЯ. GROUP может быть цифровым вектором , массив строк или массив ячеек строк. ТРЕНИРОВКА и GROUP должны иметь одинаковое количество строк.

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

group = kmeans(trainingset,7); 
knnclassify(sample, trainingset, group); 
Смежные вопросы