Difference between revisions of "CUDA ISP for NVIDIA Jetson/Examples/ API usage"

From RidgeRun Developer Connection
Jump to: navigation, search
Line 19: Line 19:
 
  auto white_balancer = backend->CreateAlgorithm(rr::kWhiteBalancer);
 
  auto white_balancer = backend->CreateAlgorithm(rr::kWhiteBalancer);
 
  auto color_space_converter = backend->CreateAlgorithm(rr::kColorSpaceConverter);
 
  auto color_space_converter = backend->CreateAlgorithm(rr::kColorSpaceConverter);
 +
 +
The shift object converts bayerXX formats (bayer10, bayer12, bayer14, or bayer16) into a bayer8 format. Each pixel in a bayerXX format takes up 16 bits of information, but with the appropiate rightwards bit shift, the 8 most significant bits can be placed in the 8 least significant bit positions of the pixel memory. The shift object then completes the bayerXX to bayer8 conversion by only returning the 8 least significant bits of each pixel.
 +
 +
The debayer object converts bayer8 to either RGB or RGBA.
 +
 
== AWB ==
 
== AWB ==
  

Revision as of 12:00, 10 March 2023


  Index  






General

CUDA ISP provides several algorithms to process raw image data from a camera sensor in a variety of ways.

Here we illustrate a simple example that involves all the basic algorithms. This example takes a raw bayer10 image, converts it to a bayer8 image, then converts it to a rgb image, then applies automatic white balancing on the image, then converts it to I420 format. A simple process of this type might be used to encode camera information into a video file or a network stream.

We first create a backend object. The backend object provides factories to create algorithms and buffers. We specify CUDA as the desired backend type.

auto backend = rr::IBackend::Build(rr::kCUDA);

The creation of any given algorithm requires a single function call:

auto shift = backend->CreateAlgorithm(rr::kShift);
auto debayer = backend->CreateAlgorithm(rr::kDebayer);
auto white_balancer = backend->CreateAlgorithm(rr::kWhiteBalancer);
auto color_space_converter = backend->CreateAlgorithm(rr::kColorSpaceConverter);

The shift object converts bayerXX formats (bayer10, bayer12, bayer14, or bayer16) into a bayer8 format. Each pixel in a bayerXX format takes up 16 bits of information, but with the appropiate rightwards bit shift, the 8 most significant bits can be placed in the 8 least significant bit positions of the pixel memory. The shift object then completes the bayerXX to bayer8 conversion by only returning the 8 least significant bits of each pixel.

The debayer object converts bayer8 to either RGB or RGBA.

AWB

Debayer

Shift


  Index