2013-07-17 177 views
1

我想使用篩選使用Normal Bayes分類器進行對象分類。當我計算每個可變大小圖像的描述符時,我會得到不同大小的特徵向量。例如:Opencv SiFT的特徵向量大小

Feature Size: [128 x 39] 

Feature Size: [128 x 54] 

Feature Size: [128 x 69] 

Feature Size: [128 x 64] 

Feature Size: [128 x 14] 

至於發展,我使用20個訓練圖像,因此我有20個標籤。我的分類只有三類,包含汽車,書和球。所以我的標籤向量大小是[1 x 20]

據我所知,執行機器學習的特徵向量大小和標籤向量大小應該是相同的,所以我應該得到一個向量大小爲[__ x 20]並且標籤是[1 x 20]。

但我的問題是,篩選有128維的特徵空間,因此每個圖像都有不同的特徵尺寸,如上所示。如何將所有尺寸轉換爲相同尺寸而不會丟失功能? 或者我可能做得不對,請幫我解決這個問題?

PS:實際上我已經使用BOW模型做了它,它的工作原理,但僅僅是爲了我的學習目的,我試圖在這個問題上做,只是爲了學習興趣,所以任何提示和建議都歡迎。謝謝

回答

3

你說得對,SIFT描述符是一個128維的特徵。

爲圖像中檢測到的每個關鍵點計算SIFT描述符。在計算描述符之前,您可能使用了檢測器(如Harris,Sift或Surf Detector)來檢測興趣點。

檢測關鍵點和計算描述符是兩個獨立的步驟!

當您在程序中打印Feature Size: [128 x Y]時,Y表示在當前圖像中檢測到的關鍵點數。

通常,使用BOW允許您爲每個關鍵點描述符分配BOW中最接近的簇的指示。根據您的應用程序,您可以做出決定......(對現場中存在的一個對象進行投票或...)

+0

謝謝。其實我做了一個任務,我用弓,它運作良好。然而,我非常感興趣,我正在嘗試不同的方式來分類圖像。我想分類而不使用BOW模型,所以我想知道如何分配訓練矩陣。你覺得我把矩陣從[128 x Y]改爲[1 x Y]。這意味着我只使用矢量的一個維度。你怎麼看待這個? – rish

+1

[1 x Y]矩陣沒有意義。實際上,您可以使用Y的各個SIFT特徵[128 x 1],並將它們與其他圖像中提取的SIFT進行比較。 – Eric

+0

對不起,這是什麼意思..非常感謝。 – rish

0

如果您不想使用BOW,可嘗試將各個SIFT功能與描述在原始SIFT paper by Lowe

其基本思想是將兩幅圖像相互比較並決定它們是否相似。您可以通過比較各個SIFT功能來做到這一點。你決定他們是否匹配。然後,要檢查空間位置是否一致,您需要檢查是否可以將匹配的特徵從一個圖像轉換爲另一個圖像。

它在SIFT wikipedia article中有更詳細的描述。