Frage

Wie erstelle ich eine Datenbank mit SIFT -Deskriptoren (von Bildern)? Meine Absicht ist es, ein überwidriges Trainingseinsatz für Support -Vector -Maschine zu implementieren.

War es hilfreich?

Lösung

Welche Art von Bildern brauchen Sie? Wenn Sie sich nicht darum kümmern, können Sie einfach einige öffentliche Computer -Vision -Datensatze wie möglich herunterladen http://lear.inrialpes.fr/~jegou/data.php#holidays Dies bietet sowohl Bilder als auch bereits berechnete Sifts aus seinen Regionen. Oder versuchen Sie beispielsweise andere Datensätze von http://www.cvpapers.com/datasets.html

Eine andere Möglichkeit besteht nur darin, viele Fotos herunterzuladen, Interessenspunkte zu erkennen und sie mit Sifts zu beschreiben. Es kann mit erledigt werden mit Opencv, Vlfeat oder andere Bibliotheken.

OpenCV -Beispiel.

    #include <opencv2/opencv.hpp>
    #include <opencv2/nonfree/nonfree.hpp>
    #include <fstream>


    void WriteSIFTs(std::vector<cv::KeyPoint> &keys, cv::Mat desc, std::ostream &out1)
    {
      for(int i=0; i < (int) keys.size(); i++)
        {
          out1 << keys[i].pt.x << " " << keys[i].pt.y << " " << keys[i].size << " " << keys[i].angle << " "; 
//If you don`t need information about keypoints (position, size) 
//you can comment out the string above

          float* descPtr = desc.ptr<float>(i);
          for (int j = 0; j < desc.cols; j++)
              out1  << *descPtr++ << " ";
          out1 << std::endl;
        }

    }


    int main(int argc, const char* argv[])
    {
      const cv::Mat img1 = cv::imread("graf.png", 0); //Load as grayscale

      cv::SiftFeatureDetector detector;
      std::vector<cv::KeyPoint> keypoints;
      detector.detect(img1, keypoints);

      cv::SiftDescriptorExtractor extractor;
      cv::Mat descriptors;
      extractor.compute(img1, keypoints, descriptors);

      std::ofstream file1("SIFTs1.txt");
      if (file1.is_open())
        WriteSIFTs(keypoints,descriptors,file1);
      file1.close();
      return 0;
    }
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top