Bookmark and Share

Industry Standards Simplify Computer Vision Software Development

This blog post was originally published at Vision Systems Design's website. It is reprinted here with the permission of PennWell.

When developing computer vision software, de facto standards such as the OpenCV open source computer vision library (which I mentioned in a recent column) are extremely valuable in helping you get your development done quickly and cost-effectively. Formal industry standards can be even more valuable. Instead of being vetted and improved in a sporadic crowd-sourced manner, for example, they've got a structured process behind them. The standards-based approach also affords the prospects for many additional benefits, such as new-version backwards-compatibility, robust documentation, and stringent conformance testing.

Two recently published presentations from the Embedded Vision Summit delve in detail into industry standards for vision software development. First up is "The Vision API Maze: Options and Trade-offs" by Neil Trevett, long-time President of the well-known Khronos Group standards organization. As Trevett notes, it’s been a busy year in the world of hardware acceleration APIs. Many industry-standard APIs have been upgraded. They include OpenCL, a set of programming languages and APIs for heterogeneous parallel programming that can be used for any application that is parallelizable, such as many vision algorithms. Also recently upgraded is OpenVX, a high-level API for cross-platform acceleration of computer vision applications, specifically targeted at low-power, real-time applications running on mobile and embedded platforms. And the industry has also begun to adopt the new generation of low-level, explicit GPU APIs, such as Vulkan, that tightly integrate graphics and compute.

Some of these APIs, like OpenVX and OpenCV, are vision-specific, while others, like OpenCL and Vulkan, are general-purpose. Some, like CUDA and Renderscript, are supplier-specific, while others are open standards that any supplier can adopt. In his presentation, Trevett presents the current landscape of APIs for vision software development, explaining where each one fits in the development flow. He also highlights where these APIs overlap and where they complement each other, previews some of their latest developments, and gives guidance into which ones should you consider for your particular project. Here's a preview:

For even more information on OpenVX, spanning not just concepts but also detailed (and frank) implementation case studies, I recommend that you also check out "Programming Embedded Vision Processors Using OpenVX," a presented by Pierre Paulin, R&D Director for Embedded Vision at Synopsys. OpenVX, Paulin notes, defines a higher level of abstraction for portable vision algorithm development than has typically been possible in the past, with the goal of expanding platform and tool innovation within astandardized implementation. The end result is ideally a standard way for vision application developers to express vision algorithms while respecting the significant power and performance constraints of embedded systems.

Paulin explores the challenges of realizing OpenVX's laudable goals when confronted with real-world examples and architectures. A video surveillance application example illustrates typical issues that can arise when applying the OpenVX programming model, as well as difficulties that must be overcome when mapping algorithms onto a real system. Here's a preview:

I'll be back next week with more discussion on a timely computer vision topic. Until then, as always, I welcome your comments.

Regards,
Brian Dipert
Editor-in-Chief, Embedded Vision Alliance
dipert@embedded-vision.com