All Projects → gabrieleilertsen → briefmatch

gabrieleilertsen / briefmatch

Licence: BSD-3-Clause License
BriefMatch real-time GPU optical flow

Programming Languages

C++
36643 projects - #6 most used programming language
Cuda
1817 projects
c
50402 projects - #5 most used programming language
CMake
9771 projects

Projects that are alternatives of or similar to briefmatch

Lighthouse2
Lighthouse 2 framework for real-time ray tracing
Stars: ✭ 542 (+1405.56%)
Mutual labels:  real-time, gpu, cuda
tiny-cuda-nn
Lightning fast & tiny C++/CUDA neural network framework
Stars: ✭ 908 (+2422.22%)
Mutual labels:  real-time, gpu, cuda
Plotoptix
Data visualisation in Python based on OptiX 7.2 ray tracing framework.
Stars: ✭ 252 (+600%)
Mutual labels:  real-time, gpu, cuda
Optical Flow Filter
A real time optical flow algorithm implemented on GPU
Stars: ✭ 146 (+305.56%)
Mutual labels:  real-time, gpu, cuda
instant-ngp
Instant neural graphics primitives: lightning fast NeRF and more
Stars: ✭ 1,863 (+5075%)
Mutual labels:  real-time, cuda
Real-Time-Abnormal-Events-Detection-and-Tracking-in-Surveillance-System
The main abnormal behaviors that this project can detect are: Violence, covering camera, Choking, lying down, Running, Motion in restricted areas. It provides much flexibility by allowing users to choose the abnormal behaviors they want to be detected and keeps track of every abnormal event to be reviewed. We used three methods to detect abnorma…
Stars: ✭ 35 (-2.78%)
Mutual labels:  real-time, optical-flow
Fastmot
High-performance multiple object tracking based on YOLO, Deep SORT, and optical flow
Stars: ✭ 284 (+688.89%)
Mutual labels:  real-time, optical-flow
Supra
SUPRA: Software Defined Ultrasound Processing for Real-Time Applications - An Open Source 2D and 3D Pipeline from Beamforming to B-Mode
Stars: ✭ 96 (+166.67%)
Mutual labels:  real-time, cuda
Cupoch
Robotics with GPU computing
Stars: ✭ 225 (+525%)
Mutual labels:  gpu, cuda
Metalpetal
A GPU accelerated image and video processing framework built on Metal.
Stars: ✭ 907 (+2419.44%)
Mutual labels:  real-time, gpu
peakperf
Achieve peak performance on x86 CPUs and NVIDIA GPUs
Stars: ✭ 33 (-8.33%)
Mutual labels:  gpu, cuda
Occa
JIT Compilation for Multiple Architectures: C++, OpenMP, CUDA, HIP, OpenCL, Metal
Stars: ✭ 230 (+538.89%)
Mutual labels:  gpu, cuda
Omniscidb
OmniSciDB (formerly MapD Core)
Stars: ✭ 2,601 (+7125%)
Mutual labels:  real-time, gpu
Aresdb
A GPU-powered real-time analytics storage and query engine.
Stars: ✭ 2,814 (+7716.67%)
Mutual labels:  real-time, cuda
Optix Pathtracer
Simple physically based path tracer based on Nvidia's Optix Ray Tracing Engine
Stars: ✭ 231 (+541.67%)
Mutual labels:  gpu, cuda
FGPU
No description or website provided.
Stars: ✭ 30 (-16.67%)
Mutual labels:  gpu, cuda
Genomeworks
SDK for GPU accelerated genome assembly and analysis
Stars: ✭ 215 (+497.22%)
Mutual labels:  gpu, cuda
Nvidia Modded Inf
Modified nVidia .inf files to run drivers on all video cards, research & telemetry free drivers
Stars: ✭ 227 (+530.56%)
Mutual labels:  gpu, cuda
Hidden Two Stream
Caffe implementation for "Hidden Two-Stream Convolutional Networks for Action Recognition"
Stars: ✭ 179 (+397.22%)
Mutual labels:  real-time, optical-flow
allgebra
Base container for developing C++ and Fortran HPC applications
Stars: ✭ 14 (-61.11%)
Mutual labels:  gpu, cuda

BriefMatch

General

BriefMatch provides a fast GPU optical flow algorithm. The method performs a dense binary feature matching with BRIEF descriptors, and using the iterative propagation scheme from PatchMatch. The matching is followed by a trilateral filtering step that refines the correspondence field and removes outliers. All matching and filtering computations run on the GPU, which allows for real-time performance.

The method is described in our SCIA2017 paper. If you use the BriefMatch software for your research work, please consider citing this as follows:

@InProceedings{EFU17,
  author       = "Eilertsen, Gabriel and Forssén, Per-Erik and Unger, Jonas",
  title        = "BriefMatch: Dense binary feature matching for real-time optical flow estimation",
  booktitle    = "Proceedings of the Scandinavian Conference on Image Analysis (SCIA17)",
  year         = "2017"
}

Dependencies

The following libraries are used by BriefMatch:

  • Cuda for GPU processing.
  • libPNG for image I/O.
  • OpenCV (optional) for a more flexible and faster image input. OpenCV is used if it can be successfully located, otherwise image input is made directly with libPNG through imageLib (see below). OpenCV can also be explicitly excluded with the CMake flag, USE_OPENCV=0.

Compilation and installation

Compilation is provided through CMake.

UNIX

For an out-of-tree build:

$ cd <path_to_briefmatch>
$ mkdir build
$ cd build
$ cmake ../
$ make

A set of advanced briefmatch command line options can be provided with the CMake flag ADVANCED_OPTIONS:

$ cmake -DADVANCED_OPTIONS=1 ../

BriefMatch usage

After compilation of BriefMatch, run ./briefmatch -h to display available input options.

Quality/speed are best traded off by changing the up-sampling factor (--up-sampling-x and --up-sampling-y). These are used to up-sample image width and height, respectively, before performing the matching. Larger up-sampling gives more accurate flow vectors, but takes longer time and uses more memory. Furthermore, with larger up-sampling there is more benefit in having longer feature vectors (--feature_length). Additionally, the radius of the BRIEF descriptors can be calibrated with --patch-radius, which specifies the radius in percent of the image diagonal.

To fine-tune the optical flow quality there are a set of advanced options (provided by the ADVANCED_OPTIONS flag) that can be used to calibrate matching and filtering. For example, the properties of the flow refinement filtering kernel can be calibrated by tweaking the median filtered image used (--median-size), and setting the standard deviations of the three terms in the trilateral kernel: --range-epe, --range-i and --range-spatial.

Output format

Estimated optical flow fields can be output in three different formats:

  1. Binary floating point raw data, which first stores all x-components of the flow, followed by the y-components. There is no meta data stored, so image size needs to be known in order to read the data.
  2. Middlebury .flo format, which also stores binary floating points. The format can be read in C++ and Matlab using the flowIO code provided at the Middlebury benchmark webpage.
  3. 8-bit color png images. The flow directions are encoded by hue, and magnitudes by color saturation. The --vis_max_motion parameter can be used to scale the specified value to have maximum saturation and clamp all values above.

Examples

Following are three examples of different quality/speed trade-offs, that use the RubberWhale sequence from the Middlebury benchmark training data:

  • Faster (lower quality): ./briefmatch --input data/RubberWhale/frame%02d.png --frames 7:14 --output output/flow%02d.png --up-sampling-x 1.5 --up-sampling-y 1.5 --feature_length 32

  • Moderate (medium quality): ./briefmatch --input data/RubberWhale/frame%02d.png --frames 7:14 --output output/flow%02d.png --up-sampling-x 2.9 --up-sampling-y 2.9 --feature_length 128

  • Slower (higher quality): ./briefmatch --input data/RubberWhale/frame%02d.png --frames 7:14 --output output/flow%02d.png --up-sampling-x 4.9 --up-sampling-y 4.9 --feature_length 512

Included libraries

BriefMatch utilizes the flowIO code provided on the Middlebury benchmark website. The code is used to colorcode 2D vectors for visualization of the optical flow, and in order to store the optical flow using the flowIO format (.flo).

FlowIO uses imageLib in order to handle images. Both flowIO and imageLib are included in ./util. Please see ./util/imageLib/ for further information and license information on imageLib.

License

Copyright (c) 2017, The BriefMatch authors. All rights reserved.

BriefMatch is distributed under a BSD license. See LICENSE for information.

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