Skip to content

WayneTimer/libSGM

 
 

Repository files navigation

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 Processing Time[Milliseconds] FPS
Tegra X2 (CUDA: v10.0) 28.5 35.1
GTX 1080 Ti (CUDA: v10.1) 2.0 495.1

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
$ 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.

Authors

The "SGM Team": Samuel Audet, Yoriyuki Kitta, Yuta Noto, Ryo Sakamoto, Akihiro Takagi
Fixstars Corporation

License

Apache License 2.0

About

Stereo Semi Global Matching by cuda

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Cuda 58.6%
  • C++ 38.0%
  • CMake 3.4%