GStreamer Video Stabilizer for NVIDIA Jetson Boards - Video Stabilization Basics

From RidgeRun Developer Wiki


Note
GstNVStabilize works for Jetpack versions up to 4.x. For latest Jetpacks please refer to our new Stabilization product:

RidgeRun Video Stabilization Library


  Index Next: User Guide





Introduction to GStreamer Video Stabilizer

GstNvStabilize is a GStreamer plug-in that performs video stabilization on a sequence of images accelerated with the GPU. Specifically, the algorithm uses internal modules provided by NVIDIA VisionWorks toolkit and OpenVX to compute the Harris feature detection and the Lucas-Kanade sparse pyramidal optical flow that provide the inter-frame's motion estimation.

NVIDIA VisionWorks Toolkit for OpenCV Video Stabilization

NVIDIA VisionWorks toolkit is a NVIDIA proprietary software development package for computer vision (CV) and image processing. It implements and extends the Khronos OpenVX standard, and it is optimized for CUDA-capable GPUs and SOCs. This enables developers to implement CV applications in a portable way for a variety of platforms.

The core VisionWorks modules are engineered for solutions in:

  • Robotics and Drones
  • Autonomous Driving
  • Intelligent Video Analytics
  • Augmented Reality

The toolkit helps you unlock the possibilities for GPU-based CV systems by adding your own algorithms and processing pipelines. Using VisionWorks in conjunction with other APIs like OpenCV provides access to many open-source CV algorithms.

VisionWorks Primitives

VisionWorks, being an extension of OpenVX, is a graph oriented framework. Each node represents a computation unit and is referred to as "primitives". Here are some interesting remarks about primitives:

  • VisionWorks primitives are CUDA optimized.
  • 85% of VisionWorks OpenVX API is also accelerated with NEON.
  • Primitives provide up to 92x speedup compared to OpenCV CPU kernels on Drive PX
  • Primitives provide up to 13x speedup compared to OpenCV CUDA kernels on Drive PX

How does GstNvStabilize Video Stabilizer Work?

GstNvStabilize plugin builds a graph of VisionWorks and OpenVX primitives. The following figure depicts an overview of the processing graph being used to perform the stabilization.

Image processing graph diagram employed by GstNvStabilize to reduce camera motion.


  Index Next: User Guide