Se você pudesse implementar um SVM, poderá quantificar os recursos. :)
Normalmente, os recursos são quantizados usando o cluster de k-means. Primeiro, você decide qual deve ser o seu "tamanho do vocabulário" (digamos 200 "palavras visuais") e, em seguida, executa o k-means clustering para esse número de clusters (200). Os descritores SIFT são vetores de 128 elementos, ou seja, pontos no espaço 128-dimensional. Então você pode tentar agrupá-los, como qualquer outro ponto. Você extrai descritores SIFT de um grande número de imagens, semelhantes às que você deseja classificar usando um conjunto de recursos. (Idealmente, esse deve ser um conjunto separado de imagens, mas, na prática, as pessoas geralmente obtêm recursos do conjunto de imagens de treinamento.) Em seguida, você executa o k-means clustering nesse grande conjunto de descritores SIFT para particioná-lo em 200 (ou o que for) clusters , ou seja, para atribuir cada descritor a um cluster. k-means lhe dará 200 centros de cluster,
Em seguida, você pega cada descritor SIFT na sua imagem e decide a qual dos 200 clusters ele pertence, localizando o centro do cluster mais próximo a ele. Depois, basta contar quantos recursos de cada cluster você possui. Assim, para qualquer imagem com qualquer número de recursos SIFT, você tem um histograma de 200 posições. Esse é o seu vetor de recursos que você fornece ao SVM. (Observe, o termo recursos está extremamente sobrecarregado).
Pelo que me lembro, houve muito trabalho a respeito de como esses histogramas deveriam ser normalizados. Eu posso estar errado, mas eu me lembro de um artigo que afirmava que um vetor de recurso binário (ou seja, 1 se pelo menos 1 recurso deste cluster estiver presente e 0 caso contrário) funcionou melhor que um histograma. Você precisaria verificar a literatura para obter detalhes, e os detalhes são importantes.
Edit: O Computer Vision System Toolbox para MATLAB agora fornece o pacote de funcionalidades .