Skip to content

XiaXingLuo/surface_match

 
 

Repository files navigation

Surface Match: fast and robust point pair feature

highlights:

  • score based multi-instance
  • OpenMP & SIMD based concurrency
  • build kdtree only once
  • pose refined with icp
  • support model save/load

usage:

#include <ppf.h>
int main(int argc, char *argv[]) {
    ppf::PointCloud model;
    ppf::readPLY(argv[ 1 ], model);
    ppf::PointCloud scene;
    ppf::readPLY(argv[ 2 ], scene);
    scene.viewPoint = {620, 100, 500};

    {
        ppf::Detector detector;
        detector.trainModel(model, 0.04f);
        detector.save("1.model");
    }

    {
        std::vector<Eigen::Matrix4f> pose;
        std::vector<float>           score;
        ppf::Detector detector;
        detector.load("1.model");
        detector.matchScene(scene, pose, score, 0.04f, 0.1f, 0.2f);
        
        for (int i = 0; i < pose.size(); i++) {
            std::cout << pose[ i ] << std::endl;
            std::cout << score[ i ] << std::endl;
        }
    }
    return 0;
}

sample:

gear

download gears model (convert to ply first) and gears scene

About

fast and robust point pair feature

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Languages

  • C++ 98.3%
  • CMake 1.3%
  • C 0.4%