Bookmark and Share

ARM Guide to OpenCL Optimizing Pyramid: Introduction

Register or sign in to access the Embedded Vision Academy's free technical training content.

The training materials provided by the Embedded Vision Academy are offered free of charge to everyone. All we ask in return is that you register, and tell us a little about yourself so that we can understand a bit about our audience. As detailed in our Privacy Policy, we will not share your registration information, nor contact you, except with your consent.

Registration is free and takes less than one minute. Click here to register, and get full access to the Embedded Vision Academy's unique technical training content.

If you've already registered, click here to sign in.

See a sample of this page's content below:

This chapter introduces OpenCL, pyramid, and the suitability of pyramid for GPU compute.

GPU compute and pyramid

This guide describes an example optimization process for running pyramid operations using an ARM®Mali™ Midgard GPU. This process can improve performance significantly.

ARM®Mali™ Midgard GPUs support the OpenCL 1.1 Full Profile specification for General Purpose computing on GPU (GPGPU) processing, also known as GPU compute.

This guide provides information on the principals of GPU compute, and advice for software developers who want to improve the use of the available hardware in platforms that perform pyramid. It is not a comprehensive guide to optimization and GPU compute. However, you can apply many of these principles to other tasks. The performance gains are given as examples, your results might vary.

What is pyramid?

Pyramid is an algorithm that produces a set of subsampled images, that are smaller than the original. Each subsampled image is a level of a pyramid, and is numbered from the bottom to the top. Subsampling each image produces the image for the next level. Subsampling an image halves the size, vertically and horizontally.

The original image is at the base, also called level zero.

The following figure shows an example image pyramid. The largest image is level zero. The images next to it are level one and level two.

Figure 1-1 Example image pyramid

This guide uses a common pyramid creation process that uses a Gaussian blur convolution. The result is a Gaussian pyramid.

Where are image pyramids used?

Uses of image pyramids include:

  • Computer vision.
  • Feature extraction.
  • Image compression or coding.
  • Reducing the computation cost, and improving the robustness of low texture areas in stereo vision applications.
  • Blending.
  • Trilinear interpolation.

Because image pyramids are used frequently in many real-time applications, reducing the execution time is a very important source of performance improvements.

Computer vision applications

Image pyramids are useful in computer vision applications when an application is required to search for an object without previous information about its size in the input image.

Size variation can occur because the object being searched for can exist at various sizes, or the object can be at different distances from the viewer. Because of this size variation, a single procedure that is applied only to the original image produces incorrect detections. The creation of multiple images at different resolutions enables the...