2016-07-13 11 views
0

OpenCVを使用してPythonでCBIRシステムをセットアップしました。私は、キーポイントとディスクリプタを正常に抽出し、k-手段を使用してコードブックを作成し、このコードブックに基づいて画像を記述するヒストグラムを生成しました。私はこのコードの最後の行に生成されたこれらのヒストグラムをSVMを訓練するためにどのように使うことができるか、あるいはこれについて間違った方法で行っているかどうかを知りたいと思います。PythonでrootSIFT機能を使用してSVMを初期化してトレーニングする方法

import argparse 
import glob 
import cv2 
import numpy 
import pickle 
import base64 
from scipy.cluster.vq import * 
from cassandra.cluster import Cluster 

def compute(imagePath, eps=1e-7) 
    sift = cv2.xfeatures2d.SIFT_create() 
    image = cv2.imread(imagePath, 0) 

    kp, des = sift.detectAndCompute(image, None) 

    if des is not None: 
     kp, des = sift.compute(image, kp) 

     if len(kp) == 0: 
      return ([], None) 

     des /= (des.sum(axis=1, keepdims=True) + eps) 
     des = numpy.sqrt(des) 

     des = whiten(des) 

     return kp, des 

for imagePath in dataset : 
    kp,des = compute(imagePath) 

    codes, distortion = vq(des, codebook) 
    hist, bins = numpy.histogram(codes, K) 

答えて

0

sklearn.svmを見て、どのようにSVM分類はhereに動作します。 多分、Bag of Wordsの共通手順に従うことができます。つまり、各画像の特徴(ヒストグラム)に対して、(距離/類似度のある尺度に従って)辞書の最も近いコードワードを選択する必要があります。

関連する問題