Difference between revisions of "CUDA ISP for NVIDIA Jetson/Examples/ API usage"
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
CUDA ISP for NVIDIA Jetson | |
---|---|
CUDA ISP for NVIDIA Jetson Basics | |
|
|
Getting Started | |
|
|
User Manual | |
|
|
GStreamer | |
|
|
Examples | |
|
|
Performance | |
|
|
Contact Us | |
|
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