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.
|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)|
- inpainting (WIP)
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
- Barnes, Connelly, et al. "PatchMatch: A randomized correspondence algorithm for structural image editing." ACM Transactions on Graphics (ToG). Vol. 28. No. 3. ACM, 2009.
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.