User Tools

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:

  • \(Y12\) is the input luma value,
  • \(B\) is the signed brightness offset,
  • and `clamp12(x)` clamps the result to the range \([0..4095]\).

The chroma components are passed through unchanged:

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

FPGA implementation considerations

  • Brightness adjustment shall be implemented using signed integer arithmetic.
  • The addition must be performed at sufficient bit width to avoid overflow before clamping.
  • Clamping is applied after the addition.
  • No multiplications, divisions, or LUTs are required for this stage.

Notes

  • This block operates entirely in YCbCr space.
  • Brightness adjustment affects only luma, preserving chroma relationships.
  • The behavior is conceptually equivalent to the HSL-based UVC Brightness model.
  • This stage assumes full-range (computer-range) YCbCr coding.
  • Extreme brightness values may cause luma clipping, which is expected behavior.

This website uses cookies. By using the website, you agree with storing cookies on your computer. Also, you acknowledge that you have read and understand our Privacy Policy. If you do not agree, please leave the website.

More information