Supported color formats¶
RGB¶
The RGB color model uses 3 colors: Red, Green, and Blue to construct all the colors. Each parameter in this format represents the intensity of the colors, expressed on a scale dependent on its bit depth.
Name |
VL42 Identifier |
---|---|
RGB332 |
V4L2_PIX_FMT_RGB332 |
ARGB444 |
V4L2_PIX_FMT_ARGB444 |
RGBA444 |
V4L2_PIX_FMT_RGBA444 |
ABGR444 |
V4L2_PIX_FMT_ABGR444 |
BGRA444 |
V4L2_PIX_FMT_BGRA444 |
ARGB555 |
V4L2_PIX_FMT_ARGB555 |
RGBA555 |
V4L2_PIX_FMT_RGBA555 |
ABGR555 |
V4L2_PIX_FMT_ABGR555 |
BGRA555 |
V4L2_PIX_FMT_BGRA555 |
RGB565 |
V4L2_PIX_FMT_RGB565 |
BGR24 |
V4L2_PIX_FMT_BGR24 |
RGB24 |
V4L2_PIX_FMT_RGB24 |
ABGR32 |
V4L2_PIX_FMT_ABGR32 |
BGRA32 |
V4L2_PIX_FMT_BGRA32 |
RGBA32 |
V4L2_PIX_FMT_RGBA32 |
ARGB32 |
V4L2_PIX_FMT_ARGB32 |
YUV¶
The YUV color model consists of 3 elements:
Y is the brightness or luminescence information
U is the red color (chroma) difference value
V is the blue color (chroma) difference value
Both color difference values can be calculated by subtracting the Y value from the RGB color space’s blue component (for U) or red component (for V). Raviewer uses the following formulas to calculate each of the YUV values:
Y = R * .299000 + G * .587000 + B * .114000
U = R * -.168736 + G * -.331264 + B * .500000 + 128
V = R * .500000 + G * -.418688 + B * -.081312 + 128
Name |
VL42 Identifier |
Pixel plane |
---|---|---|
UYVY |
V4L2_PIX_FMT_UYVY |
PACKED |
YUYV |
V4L2_PIX_FMT_YUYV |
PACKED |
VYUY |
V4L2_PIX_FMT_VYUY |
PACKED |
YVYU |
V4L2_PIX_FMT_YVYU |
PACKED |
NV12 |
V4L2_PIX_FMT_NV12 |
SEMI-PLANAR |
NV21 |
V4L2_PIX_FMT_NV21 |
SEMI-PLANAR |
I420 |
V4L2_PIX_FMT_YUV420 |
PLANAR |
YV12 |
V4L2_PIX_FMT_YVU420 |
PLANAR |
I422 |
V4L2_PIX_FMT_YUV422P |
PLANAR |
Bayer RGB¶
Bayer format is a raw video format produced by image sensors that include a Bayer filter. A Bayer filter is a color filter array in which RGB color filters are arranged on a grid of square photosensors. A Bayer filter uses two green filter elements for each red and blue filter element. The filter array can be arranged in 4 distinct patterns. Their names are derived from the order of the filters in a single 2x2 pixel square:
Bayer format is a popular raw image format used in many modern color image sensors.
Name |
VL42 Identifier |
---|---|
RGGB |
V4L2_PIX_FMT_SRGGB8 |
RG10 |
V4L2_PIX_FMT_SRGGB10 |
RG12 |
V4L2_PIX_FMT_SRGGB12 |
RG16 |
V4L2_PIX_FMT_SRGGB16 |
Grayscale¶
In the grayscale color format, each pixel only conveys intensity information. This information can be expressed on a scale dependent on its bit depth, where the minimum value represents white, and the maximum value represents black.
Name |
VL42 Identifier |
---|---|
GRAY |
V4L2_PIX_FMT_GRAY |
GRAY10 |
V4L2_PIX_FMT_Y10 |
GRAY12 |
V4L2_PIX_FMT_Y12 |
Adding new color formats¶
Currently, two classes can be used to describe color formats: ColorFormat
and SubsampledColorFormat
(found in app/image/color_format.py
).
To create a new color format:
In
color_format.py
, add a new instance of one of the color format classes with the appropriate fields filled in under the AVAILABLE_FORMATS list.Add parsing and displaying functions to the
AbstractParser
incommon.py
.You can also use other parsers from the folder or implement a new one.The utility provides a proper parser by checking color format parameters (mainly
PixelFormat
) so make sure that your new color format has a valid translation of parameters to one of the parsers (you can find this functionality inapp/parser/factory.py
).
Note
Keep in mind that if you choose to implement a new parser, remember that parse()
should return a one-dimensional ndarray
with values read from the binary file, while display()
should return an RGB-formatted 3-dimensional ndarray
consisting of original color format values converted to RGB24.