Table of Contents

YUV 4:4:4 UVC Brightness

At this stage of the imaging pipeline the pixel data is represented in full-range YCbCr 4:4:4 color space with 12-bit precision per component.

The purpose of this block is to apply UVC Brightness adjustment to the image by modifying the luma component while preserving chroma.

Conceptual model

The UVC Brightness control is described in terms of an HSL-based model in UVC Brightness

Conceptually, UVC Brightness corresponds to a uniform additive offset applied to perceived lightness.

In a YCbCr pipeline, this behavior maps directly to an additive offset applied to the luma (Y) component, while chroma components remain unchanged.

This document specifies that mapping explicitly for FPGA implementation.

Input format

The input consists of YCbCr pixels with the following properties:

\[ Y12 \in [0..4095]\\ C_b12 \in [0..4095]\text{, neutral at }2048\\ C_r12 \in [0..4095]\text{, neutral at }2048 \]

All values are unsigned 12-bit integers using full-range (computer-range) coding.

Output format

The output format is identical to the input format:

\[ Y12^{\text{bright}} \in [0..4095]\\ C_b12^{\text{bright}} = C_b12\\ C_r12^{\text{bright}} = C_r12 \]

Only the luma component is modified by the brightness stage.

Brightness offset definition

The UVC Brightness control provides a signed brightness offset value \(B\), defined and scaled as specified in UVC Brightness

UVC Brightness implementation

Brightness is applied as a signed additive offset to the luma component:

\[ Y12^{\text{bright}} = clamp12(Y12 + B) \]

Where:

The chroma components are passed through unchanged:

\[ C_b12^{\text{bright}} = C_b12\\ C_r12^{\text{bright}} = C_r12 \]

FPGA implementation considerations

Notes