Share this article:
Ask an Expert: OpenVX Programming Guide
We interview authors Victor Erukhimov, Frank Brill, Stephen Ramm and Radhakrishna Giduthuri about their new book OpenVX Programming Guide, and uncover the unique quality a book can have from being written by a team of authors.
In the Foreword to the book, Neil Trevett, President of the Khronos Group, described OpenVX as a ‘uniquely powerful framework that can mix and combine both traditional image operators and hardware accelerated inferencing.’ Can you elaborate on what OpenVX offers?
There are a lot of important problems that can be solved by computer vision algorithms running in real-time or near real-time, including automotive safety (pedestrian detection, forward car collision warning, lane departure warning), AR/VR (Augmented reality and virtual reality) tracking, face identification/recognition and many more. In many cases these algorithms run on low power compute platforms: mobile phones, embedded computers in cars, AR/VR goggles. These platforms provide several accelerators that help to run algorithms efficiently. But developers need to invest a lot of effort in making the algorithms run on all these devices. OpenVX solves this problem by providing an API that allows a developer to write code once and have it produce the same results across all the platforms. The OpenVX API is implemented by the hardware vendors to get the most out of their products. In addition to providing a framework and a useful set of computer vision operators, OpenVX provides the means to construct or import neural network functionality. The framework enables seamless integration of neural processing with common non-neural vision and image processing operators.
What is the approach of your book that will help the reader get the most out of OpenVX?
The book starts with the introduction to the OpenVX high level concepts, and then discusses each functional block by solving a model problem, reviewing in detail the sample code that is available on GitHub.
Reading your book, how can the inexperienced user of OpenVX get up to speed as quickly as possible?
We recommend starting with the Introduction and Chapter 2 (“Build your first OpenVX program”), and then jump to the section that is relevant to the problem an OpenVX user is trying to solve. It will save a lot of time to start from the code samples rather than write OpenVX code from scratch.
The book is also suitable for the experienced OpenVX developer. How could they benefit from reading the book?
More experienced OpenVX users will be interested in the discussions on how to implement complex computer vision algorithms, such as image stitching, background subtraction and running neural networks. They will also benefit from reading in-depth technical discussions about writing efficient portable code, safety critical applications, and interoperability with other frameworks. Also, we tried to make the book a useful reference by providing appendices with lists of functions and object attributes, an OpenVX user may find it useful to quickly loop up information.
You were a team of four authors. What did you collectively bring to the book?
OpenVX is not a small standard, the 1.3 specification is 350+ pages long. All of us participated in the development of the standard for a long time, and we became experts in different areas of OpenVX. All of us brought our unique knowledge, so that the book covers the standard from several different angles.
How do you see OpenVX evolving in the next three to five years?
Computer vision is a vibrant field these days, so it is hard to predict what is going to happen. We cannot speak for the OpenVX committee, but we definitely hope to see more deep learning-related functionality in the future versions of OpenVX.
Ready to read the book?
OpenVX Programming Guide 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.
Computing functionality is ubiquitous. Today this logic is built into almost any machine you can think of, from home electronics and appliances to motor vehicles, and it governs the infrastructures we depend on daily — telecommunication, public utilities, transportation. Maintaining it all and driving it forward are professionals and researchers in computer science, across disciplines including:
- Computer Architecture and Computer Organization and Design
- Data Management, Big Data, Data Warehousing, Data Mining, and Business Intelligence (BI)
- Human Computer Interaction (HCI), User Experience (UX), User Interface (UI), Interaction Design and Usability
- Artificial intelligence (AI)