2017-08-22 73 views
0

該任務的目的是通過SVM對圖像進行分類。變量'圖像'應該包含圖像信息,相應地labels包含圖像標籤。 imageslabels應該如何構建(什麼格式和尺寸)?我試圖unsuccesfully images是一個Python陣列(追加扁平圖像),然後在另一種嘗試,numpy的數組:如何在圖像上訓練OpenCV SVM分類器

images=np.zeros((number_of_images, image_size)) 
labels=np.zeros((number_of_images, 1)) 

svm=cv2.SVM() 
svm.train(images, labels) 

它是一個正確的解決問題的方法,如果是這樣,什麼是訓練正確的方法分類器?

回答

2

我不認爲你可以使用原始圖像數據來訓練SVM模型。好吧,你可以,但它不會很有成效。

的基本方法是提取一些功能從每個圖像,並使用這些功能訓練模型。一組功能形成了一個單詞詞典,其中每個單詞都描述了您的圖像。由於您使用相同的單詞來描述每個圖像,因此您可以比較與不同圖像對應的功能。 This link介紹更多細節,請檢查它。

接下來是什麼?

  1. 選擇適合您的算法中特徵提取 - HOG,SURF,SIFT(link)從每個圖像
  2. 提取特徵。您將獲得一個與圖像數組長度相同的數組。
  3. 初始化袋的字(BOG)模型
  4. 列車SVM與加納銀行

相關鏈接:

  1. C++ vey detailed example
  2. Documentation for existing BOG classifier
+0

您可以使用原始圖像數據訓練SVM模型,這是非常有成果的。例如,R,G,B/L,a,b通道訓練顏色校正模型。 –

+0

@RickM。但是我們正在討論分類,不是嗎? – CaptainTrunky