Skip to content

unclearness/nanopm

Repository files navigation

NanoPM, single header only PatchMatch

NanoPM is a single header-only implementation of PatchMatch algorithm written in C++. Could be used for variety of applications.

src dst
PatchMatch (350 ms. a single thread) BruteForce as Ground Truth (3 min. 8 threads with OpenMP)
NNF (Nearest Neighbor Field)
Distance (white is higher error)
Reconstruction (esimated src by using only patches in dst)

Example applications

  • inpainting (WIP)

Optional Dependencies

You can include optional dependencies in nanopm.h (mainly for I/O) but it will no longer be "single header-only".

  • stb (default ON) https://github.com/nothings/stb
    • Image I/O
  • OpenCV (default OFF)
    • cv::Mat_ as Image class. Image I/O
  • OpenMP (default OFF) (if supported by your compiler)
    • Multi-thread accelaration

Reference

  • Barnes, Connelly, et al. "PatchMatch: A randomized correspondence algorithm for structural image editing." ACM Transactions on Graphics (ToG). Vol. 28. No. 3. ACM, 2009.

Data

Borrowed Middlebury Stereo Datasets. Original data is from http://vision.middlebury.edu/stereo/data/scenes2005/ThirdSize/zip-2views/ALL-2views.zip

  • D. Scharstein and C. Pal. Learning conditional random fields for stereo. In IEEE Computer Society Conference on Computer Vision and Pattern Recognition (CVPR 2007), Minneapolis, MN, June 2007.
  • H. Hirschmüller and D. Scharstein. Evaluation of cost functions for stereo matching. In IEEE Computer Society Conference on Computer Vision and Pattern Recognition (CVPR 2007), Minneapolis, MN, June 2007.

About

NanoPM, single header only PatchMatch

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published