現在Computer Vision中的Bag of words來表示圖像的特征描述也是很流行的。大體思想是這樣的,假設有5類圖像,每一類中有10幅圖像,這樣首先對每一幅圖像划分成patch(可以是剛性分割也可以是像SIFT基於關鍵點檢測的),這樣,每一個圖像就由很多個patch表示,每一個patch用一個特征向量來表示,咱就假設用Sift表示的,一幅圖像可能會有成百上千個patch,每一個patch特征向量的維數128。
接下來就要進行構建Bag of words模型了,假設Dictionary詞典的Size為100,即有100個詞。那么咱們可以用K-means算法對所有的patch進行聚類,k=100,我們知道,等k-means收斂時,我們也得到了每一個cluster最后的質心,那么這100個質心(維數128)就是詞典里德100 個詞了,詞典構建完畢。
詞典構建完了怎么用呢?是這樣的,先初始化一個100個bin的初始值為0的直方圖h。每一幅圖像不是有很多patch么?我們就再次計算這些patch和和每一個質心的距離,看看每一個patch離哪一個質心最近,那么直方圖h中相對應的bin就加1,然后計算完這幅圖像所有的 patches之后,就得到了一個bin=100的直方圖,然后進行歸一化,用這個100維的向量來表示這幅圖像。對所有圖像計算完成之后,就可以進行分類聚類訓練預測之類的了。
轉自:http://blog.csdn.NET/lcj_cjfykx/article/details/8948888