Real-time CUDA-based stereo matching using Cyclops2 algorithm
Tóm tắt
This paper presents a novel stereo matching algorithm Cyclops2. The algorithm produces a disparity image, provided two rectified grayscale images. The matching is based on the concept of minimising a weight function calculated using the absolute difference of pixel intensities. We present three simple and easily parallelizable weight functions. Each presented function gives a different trade-off between algorithm processing time and reconstructed depth image accuracy. Detailed description of the algorithm implementation in CUDA is provided. The implementation was specifically optimised for embedded NVIDIA Jetson platform. NVIDIA Jetson TK1 and TX1 boards have been used to evaluate the algorithms. We evaluated seven algorithm variations with different parameter values. Each variation results in a different speed accuracy trade-off, demonstrating that our algorithm can be used in various situations. The presented algorithm achieves up to 70 FPS processing time on lower resolution images (750 × 500 pixels) and up to 23 FPS on high-resolution images (1500 × 1000 pixels). The use of optional post-processing stage (median filter) has also been investigated. We conclude that despite its limitations, our algorithm is relevant in the field of real-time obstacle avoidance.
Tài liệu tham khảo
J Han, L Shao, D Xu, J Shotton, Enhanced computer vision with microsoft kinect sensor: a review. IEEE transactions on cybernetics 43(5), 1318–1334 (2013)
S Foix, G Alenya, C Torras, Lock-in time-of-flight (ToF) cameras: a survey. IEEE Sensors J. 11(9), 1917–1926 (2011)
D Scharstein, H Hirschmüller, Y Kitajima, G Krathwohl, N Nešić, X Wang, P Westling, in German Conference on Pattern Recognition. High-resolution stereo datasets with subpixel-accurate ground truth (Springer, Cham, 2014), pp. 31–42
M Menze, A Geiger, in Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. Object scene flow for autonomous vehicles (2015), pp. 3061–3070
F Massanes, M Cadennes, JG Brankov. Cuda Implementation of a Block–Matching Algorithm for Multiple GPU Cards (2010), https://www.researchgate.net/publication/267379671_CUDA_implementation_of_a_block-matching_algorithm_for_Multiple_GPU_cards. Accessed 8 Nov 2016
H Hirschmuller, Stereo processing by semi-global matching and mutual information. IEEE Trans Patt A Mach Int 30(2), 328–341 (2008)
A CUDA implementation performing Semi-Global Matching (2016), https://github.com/fixstars/libSGM. Accessed 30 Nov 2016
G Bradski, A Kaehler, Learning OpenCV: Computer Vision with the OpenCV Library (O'Reilly Media, Inc., 2008)
NVIDIA VisionWorks toolkit (2017), https://developer.nvidia.com/embedded/visionworks. Accessed 02 Sep 2017
D Hernandez-Juarez, A Chacon, A Espinosa, D Vasquez, JC Moure, AM Lopez, Embedded real-time stereo estimation via Semi-Global Matching on GPU. Int Conf Comp Sc 80, 143–153 (2016)
J Kowalczuk, ET Psota, LC Perez, Real-time stereo matching on CUDA using an iterative refinement method for adaptive support-weight correspondences. IEEE Trans Syst Video Technol 25(1), 94–104 (2013). https://doi.org/10.1109/TCSVT.2012.2203200
J Žbontar, Y LeCun, Stereo matching by training a convolutional neural network to compare image patches. J Mach L Res 17(65), 1–32 (2016)
W Luo, GA Schwing, R Urtasun, Efficient deep learning for stereo matching. IEEE Conf Comp Vision Patt Recog, 5695–5703 (2016)
N Mayer, E Ilg, P Hausser, P Fischer, D Cremers, A Dosovitskiy, T Brox, A large dataset to train convolutional networks for disparity, optical flow, and scene flow estimation. arXiv:1512.02134v1
CUDA C Programming Guide (2016), https://docs.nvidia.com/cuda/cuda-c-programming-guide. Accessed 15 Nov 2016.