Question

Comment créer une base de données de descripteurs SIFT (d'images)? Mon intention est de mettre en œuvre un ensemble de formation supervisionné sur la machine vectorielle de support.

Était-ce utile?

La solution

De quel genre d'images avez-vous besoin? Si vous ne vous en souciez pas, vous pouvez simplement télécharger un ensemble de données de vision par ordinateur public comme http://lear.inrialpes.fr/~jegou/data.php#holidays qui propose à la fois des images et des tamis déjà calculés de ses régions. Ou essayez d'autres ensembles de données, par exemple, à partir de http://www.cvpapers.com/datasets.html

Une autre possibilité est simplement de télécharger faire beaucoup de photos, de détecter le point d'intérêt et de les décrire avec des tamis. Cela peut être fait avec Opencv, Vlfeat ou d'autres bibliothèques.

Exemple OpenCV.

    #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;
    }
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top