Computer Vision Algorithm Implementations
If you have additions or changes, send an (remove the "nospam").
This material is presented to ensure timely dissemination of scholarly and technical work. Copyright and all rights therein are retained by authors or by other copyright holders. All persons copying this information are expected to adhere to the terms and constraints invoked by each authors copyright.
Participate in Reproducible Research
General Image Processing
- (C/C++ code, BSD lic) Image manipulation, matrix manipulation, transforms
- (C/C++ code, BSD lic) Basic image processing, matrix manipulation and feature extraction algorithms: rotation, flip, photometric normalisations (Histogram Equalization, Multiscale Retinex, Self-Quotient Image or Gross-Brajovic), edge detection, 2D DCT, 2D FFT, 2D Gabor, PCA to do Eigen-Faces, LDA to do Fisher-Faces. Various metrics (Euclidean, Mahanalobis, ChiSquare, NormalizeCorrelation, TangentDistance, ...)
- (C/C++ code, GPL lic) GradientShop: A Gradient-Domain Optimization Framework for Image and Video Filtering
- (C/C++ code, MIT lic) A Free Experimental System for Image Processing (loading, transforms, filters, histogram, morphology, ...)
- (C/C++ code, GPL and LGPL lic) CImg Library is an open source C++ toolkit for image processing -
- (C/C++ code, MIT lic) Adobe open source C++ Generic Image Library (GIL) a kinder, gentler machine vision library
- (python code, MIT lic) SimpleCV is a Python interface to several powerful open source computer vision libraries in a single convenient package , The Point Cloud Library
- (C/C++ code, BSD lic) The Point Cloud Library (or PCL) is a large scale, open project for point cloud processing. The PCL framework contains numerous state-of-the art algorithms including filtering, feature estimation, surface reconstruction, registration, model fitting and segmentation. , imaging library in C++ for processing, analysing, modelling and visualising
- (C/C++ code, CeCill lic) Population is an open-source imaging library in C++ for processing, analysing, modelling and visualising including more than 200 algorithms designed by V. Tariel.
- (C/C++ code, LGPL 3) A computer vision framework based on Qt and OpenCV that provides an easy to use interface to display, analyze and run computer vision algorithms. The library is provided with multiple application examples including stereo, SURF, Sobel and and Hough transform.
- (MATLAB/C, LGPL lic) image processing, segmentation, blob/line/point features, multiview geometry, camera models, colorimetry. Free but not open source - is a matrix library for CUDA
- (CUDA/C++, free lic) ArrayFire offers hundreds of general matrix and image processing functions, all running on the GPU. The syntax is very Matlab-like, with the goal of offering easy porting of Matlab code to C++/ArrayFire.
Image Acquisition, Decoding & encoding
- (C/C++ code, LGPL or GPL lic) Record, convert and stream audio and video (lot of codec)
- (C/C++ code, BSD lic) PNG, JPEG,... images, avi video files, USB webcam,...
- (C/C++ code, BSD lic) Video file decoding/encoding (ffmpeg integration), image capture from a frame grabber or from USB, Sony pan/tilt/zoom camera control using VISCA interface
- (C/C++ code, GPL lic) Used by VLC player: record, convert and stream audio and video
- (C/C++ code, LGPL lic) RTSP streams
- (C/C++ code, GPL lic) Loading & saving DPX, EXR, GIF, JPEG, JPEG-2000, PDF, PhotoCD, PNG, Postscript, SVG, TIFF, and more
- (C/C++ code, LGPL lic) Loading & saving various image format
- (C/C++ code, GPL & FPL lic) PNG, BMP, JPEG, TIFF loading
- (C/C++ code, LGPL lic) VideoMan is trying to make the image capturing process from cameras, video files or image sequences easier.
Segmentation
- (C/C++ code, BSD lic) Pyramid image segmentation
- (C/C++ code, Microsoft Research Lic) Branch-and-Mincut Algorithm for Image Segmentation ( )
- (C/C++ code) Segmentation, object category labelling, stereo
Machine Learning
- (C/C++ code, BSD lic) Gradient machines ( multi-layered perceptrons, radial basis functions, mixtures of experts, convolutional networks and even time-delay neural networks), Support vector machines, Ensemble models (bagging, adaboost), Non-parametric models (K-nearest-neighbors, Parzen regression and Parzen density estimator), distributions (Kmeans, Gaussian mixture models, hidden Markov models, input-output hidden Markov models, and Bayes classifier), speech recognition tools
Object Detection
- (C/C++ code, BSD lic) Viola-jones face detection (Haar features)
- (C/C++ code, BSD lic) MLP & cascade of Haar-like classifiers face detection
- (C/C++ code, Microsoft Research Lic) Class-Specific Hough Forests for Object Detection
- (C/C++ code, Apache Lic) Christoph Lampert "Efficient Subwindow" algorithms for Object Detection
- (C/C++ code, Custom Lic) Histograms of Oriented Gradients library for Object Detection
Object Category Labelling
- ( )
- (C/C++ code) Segmentation, object category labelling, stereo
- (C/C++/MATLAB code) The gco-v3.0 library is for optimizing multi-label energies. It supports energies with any combination of unary, pairwise, and label cost terms.
Optical flow
- (C/C++ code, BSD lic) Horn & Schunck algorithm, Lucas & Kanade algorithm, Lucas-Kanade optical flow in pyramids, block matching.
- (C/C++/OpenGL/Cg code, LGPL) Gain-Adaptive KLT Tracking and TV-L1 optical flow on the GPU.
- (C/C++/Matlab code, Custom Lic.) The RLOF library provides GPU / CPU implementation of Optical Flow and Feature Tracking method.
Features Extraction & Matching
- (C/C++ code, GPL lic) SIFT feature extraction & RANSAC matching
- (C/C++ code) SURF feature extraction algorihtm (kind of fast SIFT) (from )
- (C/C++ code, Ecole Polytechnique and ENS Cachan for commercial Lic) Affine SIFT (ASIFT)
- (C/C++ code) SIFT, MSER, k-means, hierarchical k-means, agglomerative information bottleneck, and quick shift
- A GPU Implementation of Scale Invariant Feature Transform (SIFT)
- (C/C++ code, GPL lic) An enhance version of RANSAC that considers the correlation between data points
Nearest Neighbors matching
- (C/C++ code, BSD lic) Approximate Nearest Neighbors ( )
- (C/C++ code, LGPL lic) Approximate Nearest Neighbor Searching
Tracking
- (C/C++ code, BSD lic) Kalman, Condensation, CAMSHIFT, Mean shift, Snakes
- (C/C++ code, public domain) Kanade-Lucas-Tomasi Feature Tracker
- (C/C++/OpenGL/Cg code, ) A GPU-based Implementation of the Kanade-Lucas-Tomasi Feature Tracker
- (C/C++/OpenGL/Cg code, LGPL) Gain-Adaptive KLT Tracking and TV-L1 optical flow on the GPU
- (C/C++, LGPL) On-line boosting tracker, semi-supervised tracker, beyond semi-supervised tracker
Simultaneous localization and mapping
- (C/C++ code, LGPL lic) Real-time vision-based SLAM with a single camera
- (C/C++ code, Isis Innovation Limited lic) Parallel Tracking and Mapping for Small AR Workspaces
Camera Calibration & constraint
- (C/C++ code, BSD lic) Chessboard calibration, calibration with rig or pattern
- Minimal problems in computer vision arise when computing geometrical models from image data. They often lead to solving systems of algebraic equations.
- (Matlab toolbox) Camera Calibration Toolbox for Matlab by Jean-Yves Bouguet (C implementation in OpenCV)
Multi-View Reconstruction
- (C/C++ code, GPL lic) A Generic Sparse Bundle Adjustment Package Based on the Levenberg-Marquardt Algorithm
- (C/C++ code, LGPL lic) Simple Sparse Bundle Adjustment (SSBA)
Stereo
- ( )
- (C/C++ code) Segmentation, object category labelling, stereo
- (C/C++ code) Disparity maps, stereo
Structure from motion
- (C/C++ code, GPL lic) A structure-from-motion system for unordered image collections ( )
- (C/C++ code, GPL lic) A multi-view stereo software that takes a set of images and camera parameters, then reconstructs 3D structure of an object or a scene visible in the images - work in progress
- (C/C++ code, MIT lic) A structure from motion library
- (C/C++/GPU code, GPL3 lic) Design and implementation of new inexact Newton type Bundle Adjustment algorithms that exploit hardware parallelism for efficiently solving large scale 3D scene reconstruction problems.
Visual odometry
- (C/C++ code, Matlab, GPL lic) Libviso 2 is a very fast cross-platfrom (Linux, Windows) C++ library with MATLAB wrappers for computing the 6 DOF motion of a moving mono/stereo camera.