簡體   English   中英

如何使用SIFT功能/描述符作為SVM培訓的輸入?

[英]How to use SIFT features/descriptors as input for SVM training?

我想使用C ++將腦腫瘤的MRI圖像分為良性和惡性。 我正在使用SIFT功能,接下來我將在培訓SVM分類器之前使用kmeans對它們進行聚類。 我不明白的是為什么需要這樣做? 據我所知,kmeans僅將特征聚類。 它不會改變輸入的大小。

我已經讀過可能的方法是BoW和直方圖。 在直方圖方法中 ,它僅計算每個聚類中的要素數量,對嗎? 我認為這不會提供我對良性和惡性腫瘤進行分類所需的信息,因為它們可能既大又小。 在BoW方法中 ,我不了解此鏈接

基本上,我不知道如何使用SIFT功能將其用作SVM的輸入。 我真的必須創建某種字典嗎? 我求求你,請賜教。 非常感謝你!

我對OpenCV或SIFT功能不太熟悉,但這應該足夠通用才能對所有編程語言都有用。 我還將在下面僅介紹BoW方法。

假設我們有N張圖像。 對於每個圖像i ,我們有F個特征,每個特征都有D維。 我們可以將所有功能放入數組feats ,使其看起來像這樣:

[1, 2, ..., D]
[..., ..., ..., D]
[N*F, ..., ..., D] 

每行feats是一個具有D維的特征,並且我們總共有N*F特征。

在k均值中,我們采用所有這些特征並將它們分組為k簇。 因此,每個單個功能都分配給單個群集。 大多數k均值函數通常返回大小為kx D的矩陣C ,它表示簇的質心。 該矩陣C是k-means算法的“碼本”或“字典”。 某些人還會返回一個大小為N*F的向量,該向量顯示每個功能分配給哪個群集(在OpenCv中,此鏈接中的labels變量表示: http : //www.developerstation.org/2012/01/kmeans- clustering-in-opencv-with-c.html )。

由於我們已經分配了所有特征,因此每個圖像i都具有F特征,可以簡單地用它們所屬的簇表示。 例如,如果原始圖像表示為

[1, 2, ..., D]
[..., ..., ..., D]
[F, ..., ..., D] 

那么圖像也可以簡單地表示為矢量:

[1] % Assignment of feature 1
[...]
[F] % Assignment of feature F

因此,您可以采用此向量,並形成所表示的群集的直方圖h 此直方圖是圖像的特征向量,您以后可以在SVM中使用。

PS:如果您需要任何進一步的說明和/或示例,請告訴我!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM