All Projects → fixstars → Libsgm

fixstars / Libsgm

Licence: apache-2.0
Stereo Semi Global Matching by cuda

Labels

Projects that are alternatives of or similar to Libsgm

Fast gicp
A collection of GICP-based fast point cloud registration algorithms
Stars: ✭ 307 (-16.58%)
Mutual labels:  cuda
Bayadera
High-performance Bayesian Data Analysis on the GPU in Clojure
Stars: ✭ 342 (-7.07%)
Mutual labels:  cuda
K2
FSA/FST algorithms, differentiable, with PyTorch compatibility.
Stars: ✭ 354 (-3.8%)
Mutual labels:  cuda
Cuda Programming
Sample codes for my CUDA programming book
Stars: ✭ 313 (-14.95%)
Mutual labels:  cuda
Arrayfire
ArrayFire: a general purpose GPU library.
Stars: ✭ 3,693 (+903.53%)
Mutual labels:  cuda
Nimtorch
PyTorch - Python + Nim
Stars: ✭ 346 (-5.98%)
Mutual labels:  cuda
Unsupervised Videos
Unsupervised Learning of Video Representations using LSTMs
Stars: ✭ 309 (-16.03%)
Mutual labels:  cuda
Loopy
A code generator for array-based code on CPUs and GPUs
Stars: ✭ 367 (-0.27%)
Mutual labels:  cuda
Cudpp
CUDA Data Parallel Primitives Library
Stars: ✭ 333 (-9.51%)
Mutual labels:  cuda
Tutorials
Some basic programming tutorials
Stars: ✭ 353 (-4.08%)
Mutual labels:  cuda
Jitify
A single-header C++ library for simplifying the use of CUDA Runtime Compilation (NVRTC).
Stars: ✭ 314 (-14.67%)
Mutual labels:  cuda
3
GPU-accelerated micromagnetic simulator
Stars: ✭ 324 (-11.96%)
Mutual labels:  cuda
Visionaray
A C++-based, cross platform ray tracing library
Stars: ✭ 342 (-7.07%)
Mutual labels:  cuda
Thrust
The C++ parallel algorithms library.
Stars: ✭ 3,595 (+876.9%)
Mutual labels:  cuda
Arrayfire Python
Python bindings for ArrayFire: A general purpose GPU library.
Stars: ✭ 358 (-2.72%)
Mutual labels:  cuda
Knn Cuda
Fast k nearest neighbor search using GPU
Stars: ✭ 310 (-15.76%)
Mutual labels:  cuda
Cudahandbook
Source code that accompanies The CUDA Handbook.
Stars: ✭ 345 (-6.25%)
Mutual labels:  cuda
Darkpose
Distribution-Aware Coordinate Representation for Human Pose Estimation
Stars: ✭ 369 (+0.27%)
Mutual labels:  cuda
Cuda Api Wrappers
Thin C++-flavored wrappers for the CUDA Runtime API
Stars: ✭ 362 (-1.63%)
Mutual labels:  cuda
Sleef
SIMD Library for Evaluating Elementary Functions, vectorized libm and DFT
Stars: ✭ 353 (-4.08%)
Mutual labels:  cuda

libSGM


A CUDA implementation performing Semi-Global Matching.

Introduction


libSGM is library that implements in CUDA the Semi-Global Matching algorithm.
From a pair of appropriately calibrated input images, we can obtain the disparity map.

Features


Because it uses CUDA, we can compute the disparity map at high speed.

Performance

The libSGM performance obtained from benchmark sample

Settings

  • image size : 1024 x 440
  • disparity size : 128
  • sgm path : 4 path
  • subpixel : enabled

Results

Device CUDA version Processing Time[Milliseconds] FPS
GTX 1080 Ti 10.1 2.0 495.1
GeForce RTX 3080 11.1 1.5 651.3
Tegra X2 10.0 28.5 35.1
Xavier(MODE_15W) 10.2 17.3 57.7
Xavier(MAXN) 10.2 9.0 110.7

Requirements

libSGM needs CUDA (compute capabilities >= 3.5) to be installed.
Moreover, to build the sample, we need the following libraries:

  • OpenCV 3.0 or later
  • CMake 3.1 or later

Build Instructions

$ git clone https://github.com/fixstars/libSGM.git
$ cd libSGM
$ git submodule update --init  # It is needed if ENABLE_TESTS option is set to ON
$ mkdir build
$ cd build
$ cmake ../  # Several options available
$ make

Sample Execution

$ pwd
.../libSGM
$ cd build
$ cmake .. -DENABLE_SAMPLES=on
$ make
$ cd sample/movie/
$ ./stereo_movie <left image path format> <right image path format> <disparity_size>
left image path format: the format used for the file paths to the left input images
right image path format: the format used for the file paths to the right input images
disparity_size: the maximum number of disparities (optional)

"disparity_size" is optional. By default, it is 128.

Next, we explain the meaning of the "left image path format" and "right image path format".
When provided with the following set of files, we should pass the "path formats" given below.

left_image_0000.pgm
left_image_0001.pgm
left_image_0002.pgm
left_image_0003.pgm
...

right_image_0000.pgm
right_image_0001.pgm
right_image_0002.pgm
right_image_0003.pgm
$ ./stereo_movie left_image_%04d.pgm right_image_%04d.pgm

The sample images available at Daimler Urban Scene Segmentation Benchmark Dataset 2014 are used to test the software.

Test Execution

libSGM uses Google Test for tests as Git submodule.
So, we need to init submodule by following command firstly.

$ pwd
.../libSGM
$ git submodule update --init

We can run tests after a build.

$ pwd
.../libSGM
$ cd build
$ cd test
$ ./sgm-test

Test code compares our implementation of each functions to naive implementation.

Author

The "adaskit Team"

The adaskit is an open-source project created by Fixstars Corporation and its subsidiary companies including Fixstars Autonomous Technologies, aimed at contributing to the ADAS industry by developing high-performance implementations for algorithms with high computational cost.

License

Apache License 2.0

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].