5

画像の特徴を選別した後にバッグ オブ ワードを実装することに関する記事をたくさん読みましたが、次に何をすべきかまだ混乱しています。私は具体的に何をしますか?

早々のご案内、誠にありがとうございました。

これは私がこれまでに持っているコードです。

cv::Mat mat_img = cropped.clone();
Mat grayForML;
cvtColor(mat_img, grayForML, CV_BGR2GRAY);
IplImage grayImageForML = grayForML.operator IplImage();


//create another copy of iplGray
IplImage *input = cvCloneImage(&grayImageForML);
Mat matInput = cvarrToMat(input);
//  Mat matInput = copy_gray.clone();
cv::SiftFeatureDetector detector;
std::vector<cv::KeyPoint> keyPoints;
detector.detect(input, keyPoints);
//add results to image and save.
cv::Mat output;
cv::drawKeypoints(input, keyPoints, output);    //SIFT OUTPUT RESULT


//resize and display
cv::Mat output_reduced;
cv::resize(output, output_reduced, cv::Size2i(output.cols / 2, output.rows / 2));


imshow("SIFT result", output_reduced);
4

1 に答える 1

5

bag of words システムのトレーニングは次のようになります。

  1. トレーニング セットの各画像の特徴を計算する
  2. それらの機能をクラスター化する
  3. そのクラスター内の特徴を持つ画像で各クラスターにラベルを付けます

この時点でトレーニングが完了し、次のようにテストを開始できます。

  1. テスト画像の特徴を計算する
  2. 各機能について、最も近いクラスターを見つけます
  3. このクラスターに属するトレーニング画像ごとに目盛りを追加します
  4. テスト画像のすべての機能について繰り返します
  5. ティック数が最も多い画像がベスト マッチであり、ティック数が 2 番目に多い画像が 2 番目にベスト マッチです。

お気づきのとおり、SIFT の使用に制限はありません。さまざまな特徴エクストラクタと記述子を試すことができます。

于 2015-06-19T01:44:26.023 に答える