OpenVX Programming Guide - 1st Edition - ISBN: 9780128164259

OpenVX Programming Guide

1st Edition

Authors: Frank Brill Victor Erukhimov Stephen Ramm Radha Giduthuru
Paperback ISBN: 9780128164259
Imprint: Academic Press
Published Date: 1st February 2020
Page Count: 375
Sales tax will be calculated at check-out Price includes VAT/GST

Institutional Subscription

Secure Checkout

Personal information is secured with SSL technology.

Free Shipping

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 the overall structure. It will cover computer vision functions as well as the graph API, providing examples of usage for the majority of the functions. It is intended both for the first time user of OpenVX as well 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


No. of pages:
© Academic Press 2020
Academic Press
Paperback ISBN:

About the Author

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’s OpenVX-based VisionWorks toolkit, and then worked at Samsung from 2014 to 2016 where he managed a computer vision R&D team in Samsung’s Mobile Processor Innovation Lab. Frank represented TI, NVIDIA, and Samsung in the Khronos OpenVX working group, and joined Cadence in 2016 to work full-time on OpenVX. He is currently chair of the OpenVX working group.

Affiliations and Expertise

Chair, OpenVX

Victor Erukhimov

Victor is a CEO of itSeez3D, the company that democratised 3D scanning. He also co-founded 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. He is the author of many papers in the areas of computer vision and machine learning, as well as several US and international patents. Victor participated in the development and maintenance of the OpenCV library.

Affiliations and Expertise

CEO, itSeez3D

Stephen Ramm

Radha Giduthuru

Radhakrishna Giduthuri is a principal engineer at Intel focussing on software architecture for AI products. Prior to Intel, he built computer vision, deep learning, and video compression software acceleration libraries for AMD GPUs & CPUs. He has 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 Khronos OpenVX working group and a member of Khronos NNEF (Neural Network Exchange Format) and OpenCL safety-critical working groups. For several years, he was a member of SMPTE video compression standardizing committee. He is an active member of IEEE Signal Processing Society and winner of outstanding leadership and professional services award for IEEE Central Area in 2016. Radhakrishna holds an M.Tech. from IIT Kharagpur, India.

Affiliations and Expertise

Radhakrishna Giduthuri, Principal Engineer

Ratings and Reviews