- Authors:
- Abhijit Ogale: Overall library design, Dense stereo and optical flow code.
- Justin Domke: 3D egomotion estimation
- Acknowledgements:
- Open-source grant from Google.
- Professor Yiannis Aloimonos, Computer Vision Lab, University of Maryland.
- DOWNLOAD OpenVis3D
- README.txt
- Code documentation
- References
- Sample results (Symmetric dense stereo and optical flow with occlusions)
Goal
The goal of this project is to provide a library of efficient 3D computer vision routines for image and video processing. It includes routines for dense stereo matching, optical flow (motion) estimation, occlusion detection, and egomotion (3D self-motion) estimation.
Benefits
- Provides symmetric dense stereo matching with occlusions, symmetric dense optical flow with occlusions, probabilistic 3D egomotion estimation.
- Designed as a template library.
- Uses adapters to be compatible with Matlab, OpenCV, and can be easily tailored to be used with any other image processing library. Example code is included for OpenCV and Matlab. See the README.txt within the download.
- Internal image template class OvImageT can be wrapped around OpenCV or Matlab image data, and provides Matlab-style functionality, including:
- Operators:
- Arithmetic: + - / += -= /= =
- Comparison: < <= == >= >
- Logical: ! || &&
- Math: cos sin tan acos asin atan atan2 cosh sinh tanh exp log log10 abs ceil floor round mod pow pow sqrt
- Bottom line: We can have expressions like iflag = (1+exp(-i2*i3)) < i4 , where iflag is a boolean image and i2, i3, i4 are double images (say).
- Direct efficient pixel access by overloading function call operator:
- A(row,col,channel)
- E.g., A(1,5,2) = 10;
- Masked assignment and sub-image access, e.g.,
- A.copyMasked(mask, B);
- A.copyMasked(mask, 5);
- A = B.getSubImage(5,10,3,11);
- Matlab-like functions:
- convolve2D, filter2D with arbitrary 2D kernel
- medianFilter2D, meanfilter2D, minFilter2D, maxFilter2D
- min, max, mean, sum along any dimension.
- repmat, reshape, meshgrid.
- transpose, flipLR, flipUD, shiftImageXY, resize (nn, bilinear), random, gaussian, oriented gabor, rgb2gray.
- And many more ...
- Modular structure of Stereo and Optical flow code makes it easy to add new algorithms for local matching, global matching, pre- and post-processing.
- Well-documented code (see the Doxygen-generated documentation)