StreamPix CUDA™ module for high speed image acquisition white paper

Improvements in camera resolution plus a growing number of camera deployments lead to ever-increasing demands on both computing and storage capabilities.

CUDA™ (Compute Unified Device Architecture) is a parallel computing platform and programming model created by Nvidia® for their GPUs (graphics processing units) that dramatically increases computing performance. As a specialized parallel processor, the GPU with CUDA is more effective than general-purpose CPUs for real-time algorithms processing large blocks of data.

The StreamPix CUDA module with JPEG compression provides high speed acquisition for single or multiple cameras. With JPEG compression applied in real time during the recording, significant savings are achieved also in storage requirements.

Note: Where the CPU or GPU are not fast enough to perform the compression real time, compression during post-recording export is also possible.

CPU versus GPU with CUDA processing

With either CPU or GPU processing, 16-bit per pixel images are first converted to 8 bit. Also, Bayer interpolation and white balance must be enabled at the grab level, with the drawback of additionally loading the CPU or GPU, slowing throughput to about 1/3 that of a monochrome image.

For example, using an Intel Ivy bridge 3rd gen core i7-3770 about 900 million pixels monochrome or 300 million pixels color per second can be JPEG compressed.

With CPU real time JPEG compression, the following image formats are supported: Monochrome, Color RGB555, RGB565 or RGB24 bit, YUV444, YUV422, and YUV411.

When using CUDA with an Nvidia GPU to perform real time JPEG compression, the following image formats are supported: Monochrome, raw Bayer, RGB24 bit, YUV444, and YUV422.

The number of Streaming Multi-Processors (SMPs) and their individual performance is important for compression speed. Here are some examples of JPEG compression throughput using an Nvidia GPU with CUDA:

GPU Model Monochrome Raw Bayer
GTS450 500 million pixels/s 180 million pixels/s
GTX580 1.5 billion pixels/s 500 million pixels/s
GTX660ti 744 million pixels/s 325 million pixels/s
GTX680 1.5 billion pixels/s 500 million pixels/s
GTX760 700 million pixels/s 300 million pixels/s

* The number of pixels per second is defined as: Image size X * Image size Y * frame rate per second.

NorPix supports all Nvidia GPU-based compression with CUDA 1.3 or higher capability. See: https://developer.nvidia.com/cuda-gpus

Choosing a compression ratio

Compression algorithms are categorized as either "Lossless" or "Lossy". With Lossless compression, all of the original data are preserved, but with lower compression rates, typically about 2:1. Lossy compression results in greater compression ratios, resulting in much smaller file sizes, but with a loss of data, and a potential loss of image quality. JPEG compression is adjusted as a quality percentage, with the actual compression level dependent on image texture.

The challenge with Lossy compression is to find the optimal balance between maximum compression and acceptable image quality. StreamPix uses 75% as the default compression for JPEGs, which results in a "visually lossless" image. This setting can be adjusted to accommodate imaging requirements.

The following typical compression factors are provided for information only.

Quality % Typical compression level
95% 5:1
75% 20:1 (visually lossless)
10% 30/40:1

Example

In one example, StreamPix multiple camera DVR software, optimized with the Nvidia CUDA graphics processor, records from 10 GigE Vision cameras simultaneously at 50 frames per second and at a resolution of 1280 x 1024 per image. All 10 GigE streams are aggregated to a single 10 GigE fiberlink switch. With real time compression performed directly to JPEG, using a 75% lossy compression quality, visual image quality is preserved and recording time increased varying by a factor of 10 to 15 compared to uncompressed recording. Recording times of over 175 hours per camera on a 4 Terrabyte disk drive are achieved.

The StreamPix Trigger and Pre/Post modules allow users to specify specific times and/or events to record, producing further saving in storage requirements.

NorPix provides support for over 200 different types of machine vision cameras.

Download White Paper