Retina is still a work in progress! (and it might never be finished)
Retina is a zero-dependency (almost) computer vision library built from scratch in C++17 (or trying to be). The only required dependency is ffmpeg (libavutil, libavformat, libavcodec, libswscale) for the video decoding bit. It was written to be easily readable (yes I'm looking at you OpenCV) and understandable, while trying to achieve decent performance. Technically, it could be built for embedded platforms as well if you don't need video decoding.
You won't ever be using this if you are mentally stable, but if you're looking for simple code to understand basic CV algorithms, this is the right place.
Build it with cmake. Use it as in the example project in example/
.
The following papers and articles were used to understand all the computer vision methods and algorithms used in the building of this project:
- ORB: an efficient alternative to SIFT or SURF
- Fusing Points and Lines for High Performance Tracking
- Machine learning for high-speed corner detection
- BRIEF: Binary Robust IndependentElementary Features
- Measuring Corner Properties
- A COMBINED CORNER AND EDGE DETECTOR
- https://docs.opencv.org/3.0-beta/doc/py_tutorials/py_feature2d/py_orb/py_orb.html
- https://github.com/opencv/opencv
- Harris
- FAST
- oFAST
- BRIEF
- steered BRIEF
- rBRIEF
- ORB
- Scale pyramid
- Learning Good Binary Features
- Brute-force matcher
- FLANN Matcher
- Image rescaling
- Downscaling
- Upscaling
- Simple convolution filters
- Gaussian filter
- Sobel operator
- Color conversion
- Multi-threading
- Algorithmic optimizations (Matrix class mainly)
- Harris algorithm (oh god it's terribly slow and dumb)