# surface_match **Repository Path**: Little_rock/surface_match ## Basic Information - **Project Name**: surface_match - **Description**: No description available - **Primary Language**: Unknown - **License**: BSD-2-Clause - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-02-11 - **Last Updated**: 2025-02-11 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 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: ```C++ #include 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 pose; std::vector 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](img/gear.png) download [ gears model](https://download.ensenso.com/s/sampledata/download?files=gear.stl) (convert to ply first) and [gears scene](https://download.ensenso.com/s/sampledata/download?files=gear_n35.ply)