VisionWorks Toolkit Reference

December 18, 2015 | 1.2 Release

 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
Motion Estimation Demo App

Motion Estimation Demo user guide.

Introduction

nvx_demo_motion_estimation is a code sample that implements the NVIDIA Iterative Motion Estimation (IME) algorithm. IME is a block based motion estimation algorithm which incorporates iterative refinement steps to improve output motion field.

nvx_demo_motion_estimation sample pipeline illustrates one-directional motion estimation computing backward motion vectors from current to previous frame. The sample pipeline generates a motion vector per every 2x2 block stored in Q14.2 format.

Note
Developers may choose to extend the pipeline to implement bidirectional motion estimation.

The following block diagram illustrates steps of the pipeline:

                                 (next frame)
                                       |
                               [ColorConvertNode]
                                       |
                             [GaussianPyramidNode]
                                       |
(current pyramid)               (next pyramid)
         |                             |
         +--------------+--------------+
                        |
                      [IME]
                        |
                 (motion field)

The sample uses vx_delay object to keep these frames from input video. After graph processing, the delay is aged, the next frame becomes current.

The IME algorithm applies the following pipeline for each pyramid level, starting from the smallest one:

(motion field from previous level)        (level from current pyramid)            (level from next pyramid)
               |                                       |                                       |
               +---------------------------------------+---------------------------------------+
                                                       |
                                           [CreateMotionFieldNode]
                                                       |
                                        (motion field for 8x8 blocks)
                                                       |
                                           [RefineMotionFieldNode]
                                                       |
                                        (motion field for 8x8 blocks)
                                                       |
                                         [PartitionMotionFieldNode]
                                                       |
                                        (motion field for 4x4 blocks)
                                                       |
                                              [MultiplyByScalar]
                                                       |
                                       (motion field for the next level)

At the end the following pipeline is used:

(motion field 4x4 for the level 0)
                |
   [PartitionMotionFieldNode]
                |
 (motion field for 2x2 blocks)
                |
       [MultiplyByScalar]
                |
      (final motion field)

nvx_demo_motion_estimation is installed in the following directory:

usr/share/visionworks/sources/demos/motion_estimation

For the steps to build sample applications, see the Samples and Demos section for your OS.

Executing Motion Estimation Sample

./nvx_demo_motion_estimation [options]

Command Line Options

This topic provides a list of supported options and the values they consume.

-s, --source

-c, --config

-h, --help

Operational Key