A heterogeneous and fully parallel stereo matching algorithm for depth estimation, implementing a local adaptive support weight (ADSW) Guided Image Filter (GIF) cost aggregation stage. Developed in both C++ and OpenCL.
Please use these citations in your publication if you use this work: (bibtex here)
Charles Leech, Charan Kumar, Amit Acharyya, Sheng Yang, Geoff V. Merrett, and Bashir M. Al-Hashimi. 2017. Runtime Performance and Power Optimization of Parallel Disparity Estimation on Many-Core Platforms. ACM Transactions on Embedded Computing Systems (TECS) Volume 17 Issue 2, Article 41 (November 2017), 19 pages. DOI: https://doi.org/10.1145/3133560
Leech, Charles (2018) Runtime energy management of multi-core processors. University of Southampton, Doctoral Thesis, 293pp.
A heterogeneous and fully parallel stereo matching algorithm for depth estimation. Stereo Matching is based on the disparity estimation algorithm, an algorithm designed to calculate 3D depth information about a scene from a pair of 2D images captured by a stereoscopic camera. The algorithm contains the following stages:
git clone https://github.com/PRiME-project/PRiMEStereoMatch.git
cd PRiMEStereoMatch/
.mkdir build
cd build
cmake ..
(Two dots are required in order to reference the base directory)make -jN
.
make -j8
.Run the application from the build dir: ./PRiMEStereoMatch <program arguments>
The program mode is selected with git-style commands. Valid commands include:
A set of global options also exist, which must be specified for all modes:
For example, to run using a stereo camera, specify:
./PRiMEStereoMatch video
To run with calibration and capture beforehand, specify:
./PRiMEStereoMatch video --recal --recap
Image disparity estimation is achieved using:
./PRiMEStereoMatch image -l left_img.png -r right_img.png
The first time the application is deployed using a stereo camera, the --recal and --recap flags must be set in order to capture chessboard image to calculate the intrinsic and extrinsic parameters.
This process only needs to be repeated if the relative orientations of the left and right cameras are changed or a different resolution is specified.
Once the intrinsic and extrinsic parameters have been calucalted and saved to .yml files, the application can be re-run with the same camera without needing to recalibrate as the parameters will be loaded from these files. The files can be found in the data directory.
folders:
assets - OpenCL kernel files
data - program data including input images, stereo camera parameters, calibration images
docs - images for the readme & wiki
include - Project header files (h/hpp)
src - Project source files (c/cpp)
files:
CMakeLists.txt - cmake project compilation file
LICENCE.txt - license file
README.md - this readme file
Some components of the application are based on source code from the following locations:
rookiepig/CrossScaleStereo - The basis for some C++ functions (GNU Public License)
atilimcetin/guided-filter - CPU-based GIF implementation using the Fast Guided Filter (MIT License)
The algorithm in this work is based in parts on those presented in the following publications:
[Hosni2011CVPR]: C. Rhemann, A. Hosni, M. Bleyer, C. Rother, and M. Gelautz. Fast cost-volume filtering for visual correspondence and beyond. In CVPR, 2011
[Hosni2011ICME]: A. Hosni, M. Bleyer, C. Rhemann, M. Gelautz and C. Rother, Real-time local stereo matching using guided image filtering, in Multimedia and Expo (ICME), 2011 IEEE International Conference on, Barcelona, 2011.
[Ttofis2014]: C. Ttofis and T. Theocharides, High-quality real-time hardware stereo matching based on guided image filtering, in Design, Automation and Test in Europe Conference and Exhibition (DATE), Dresden, 2014.
[He2012]: K. He, J. Sun and X. Tang, Guided Image Filtering, Pattern Analysis and Machine Intelligence, IEEE Transactions on, pp. 1397-1409, 02 October 2012.
This software is released under the BSD 3 Clause License. See LICENSE.txt for details.
To cite this code in your work, please also include the following reference:
Charles Leech, Charan Kumar, Amit Acharyya, Sheng Yang, Geoff V. Merrett, and Bashir M. Al-Hashimi. 2017. Runtime Performance and Power Optimization of Parallel Disparity Estimation on Many-Core Platforms. ACM Transactions on Embedded Computing Systems (TECS) Volume 17 Issue 2, Article 41 (November 2017), 19 pages. DOI: https://doi.org/10.1145/3133560
Bibtex:
@article{Leech:2017:RPP:3160927.3133560,
author = {Leech, Charles and Kumar, Charan and Acharyya, Amit and Yang, Sheng and Merrett, Geoff V. and Al-Hashimi, Bashir M.},
title = {Runtime Performance and Power Optimization of Parallel Disparity Estimation on Many-Core Platforms},
journal = {ACM Transactions on Embedded Computing Systems (TECS)},
issue_date = {January 2018},
volume = {17},
number = {2},
month = nov,
year = {2017},
issn = {1539-9087},
pages = {41:1--41:19},
articleno = {41},
numpages = {19},
url = {http://doi.acm.org/10.1145/3133560},
doi = {10.1145/3133560},
acmid = {3133560},
publisher = {ACM},
address = {New York, NY, USA},
keywords = {Runtime management, computer vision, many-core platforms, power optimization},
}