OpenVX Programming Guide

OpenVX Programming Guide

1st Edition - May 22, 2020

Write a review

  • Authors: Frank Brill, Victor Erukhimov, Radha Giduthuru, Stephen Ramm
  • eBook ISBN: 9780128166192
  • Paperback ISBN: 9780128164259

Purchase options

Purchase options
DRM-free (Mobi, PDF, EPub)
Sales tax will be calculated at check-out

Institutional Subscription

Free Global Shipping
No minimum order


OpenVX is the computer vision API adopted by many high-performance processor vendors. It is quickly becoming the preferred way to write fast and power-efficient code on embedded systems. OpenVX Programming Guidebook presents definitive information on OpenVX 1.2 and 1.3, the Neural Network, and other extensions as well as the OpenVX Safety Critical standard. This book gives a high-level overview of the OpenVX standard, its design principles, and overall structure. It covers computer vision functions and the graph API, providing examples of usage for the majority of the functions. It is intended both for the first-time user of OpenVX and as a reference for experienced OpenVX developers.

Key Features

  • Get to grips with the OpenVX standard and gain insight why various options were chosen
  • Start developing efficient OpenVX code instantly
  • Understand design principles and use them to create robust code
  • Develop consumer and industrial products that use computer vision to understand and interact with the real world


Engineers developing products with a component of computer vision and intelligence in areas such as automotive safety, video surveillance, computational photography, autonomous mobile robots and drones. Computer Engineering students and researchers

Table of Contents

  • 1. Introduction

    • What is OpenVX and why do we need it?
    • How portable is OpenVX
    • Graph API with opaque memory model
    • OpenVX vs. OpenCV and OpenCL
    • What you should know before reading this book

    2. Build your first OpenVX program

    • With Immediate Mode API
    • With Graph API

    3. Using the Graph API to write efficient portable code

    • Node parameters
    • Graph parameters
    • Execution model
    • Asynchronous execution
    • Control flow
    • User kernels and nodes
    • Examples

    4. Building an OpenVX graph

    • Linking nodes
    • Graph verification
    • Parameter validation
    • What can be changed at runtime?
    • Examples

    5. Deploying an OpenVX graph to a target platform

    • Exporting and importing objects
    • The XML schema extension
    • Immutable graphs

    6. Basic image transformations

    • Data objects: image, matrix
    • Convolution
    • Region of interest
    • Border modes
    • Undistortion with Remap
    • Image filtering example
    • Virtual objects
    • Filter stacking example

    7. Background subtraction and object detection

    • Threshold
    • Distribution
    • User kernels
    • Object detection example

    8. Computational photography

    • LUT
    • Pyramid
    • Example

    9. Efficient data input/output

    • Import an image to OpenVX
    • Import a video stream to OpenVX
    • Accessing OpenVX data

    10. Tracking

    • Data structures: keypoint, array
    • Delay object
    • Optical flow example

    11. Use OpenVX for deep neural networks

    • Neural Network Extension
    • Tensor objects
    • How to import a network into OpenVX
    • Examples

    12. OpenVX safety critical applications

    • Feature subsets
    • Determinism

    13. Using OpenVX with other vision frameworks

    • General remarks
    • OpenCL
    • OpenCV

    14. Making the most of your OpenVX code

    • Using OpenVX debugging capabilities to understand what is going on
    • Profiling your OpenVX code
    • Optimization tips

Product details

  • No. of pages: 372
  • Language: English
  • Copyright: © Academic Press 2020
  • Published: May 22, 2020
  • Imprint: Academic Press
  • eBook ISBN: 9780128166192
  • Paperback ISBN: 9780128164259

About the Authors

Frank Brill

Frank Brill manages OpenVX software development for Cadence’s Tensilica Imaging and Vision DSP organization. Frank obtained his PhD in Computer Science from the University of Virginia and started his career doing computer vision research and development for video security and surveillance applications at Texas Instruments, where he obtained 5 patents related to this work. He then moved into silicon device program management, where he was responsible for several digital still camera and multimedia chips, including the first device in TI’s DaVinci line of multimedia processors (the DM6446). Frank worked at NVIDIA from 2013 to 2014, where he managed the initial development of NVIDIA OpenVX-based VisionWorks toolkit, and then worked at Samsung from 2014 to 2016, where he managed a computer vision R&D team in Samsung Mobile Processor Innovation Lab.

Affiliations and Expertise

Design Engineering Director, Cadence

Victor Erukhimov

Victor Erukhimov is a CEO of itSeez3D, the company that democratized 3D scanning. He also cofounded Itseez, the company that focused on developing computer vision solutions running on embedded platforms, specifically automotive safety systems. He held the positions of CTO, CEO, and President at Itseez, before the company was acquired by Intel Corporation in 2016. Victor was the chair of the OpenVX working group in 2012--2016, creating the standard for cross-platform computer vision API.

Affiliations and Expertise

CEO, itSeez3D

Radha Giduthuru

Radhakrishna Giduthuri is currently a principal engineer at Intel, focusing on software architecture for Intel AI Accelerators. Prior to working at Intel, he built computer vision, deep learning, and video compression software acceleration libraries for AMD GPUs & CPUs. He has an extensive background with software architecture, development, and performance tuning for various computer architectures ranging from general purpose DSPs, customizable DSPs, media processors, heterogeneous processors, GPUs, and several CPUs. He is the editor of the recent Khronos OpenVX specification documents.

Affiliations and Expertise

Radhakrishna Giduthuri, Principal Engineer

Stephen Ramm

Stephen Ramm is currently a principal software engineer with Etas, a subsidiary of Bosch, where he is involved with Adaptive Autosar, working on reliable frameworks and development environments for advanced functionality in the automotive, rail, and other safety-critical industries. Until late 2017, he was Director of AI and Vision software at Imagination Technologies, where one of his responsibilities was the team producing an implementation of OpenVX accelerated by Imagination's GPU architecture.

Affiliations and Expertise

York University

Ratings and Reviews

Write a review

There are currently no reviews for "OpenVX Programming Guide"