I have for example 4*4 image. I want to extract the Y,U and V components separately. How to do it if the image is YUV 422 ,YUV 420 and YUV444. I am interested in knowing the str
it's a pretty old question, however I've just finish some work about decoding YUV and I would like to share some infos. There are 3 main aspects of the YUV schema:
If the source YUV buffer is a packed or planar buffer. Packed means that the YUV bits are grouped togheter, planar means the Y, U and V buffers are separated in 3 differents memory area.
YUV channel size; the single Y,U,V channel could be of 8-bit, 10-bit, 12-bit, etc
the sampling ratio; A:B:C. 4:2:2 means that you horizontally have 1 Y value for each pixels and one only U and V value shared between two neightboard pixels.
I've just worked on YUV 4:2:2 v210 decoding, following this link there is the GLSL source code to decode and the resources I referred to. Any advice is welcome, it's my first decoder.
This site gives you a pretty good overview over the different YUV formats. There's also a pixel-structure given.
For clarification: These numbers are for determination of color component subsampling. For instance YUV 444 = 4:4:4 subsampling, meaning that every of the three components (Y, U and V) has the same sample rate. Whereas 4:2:2 states that U and V are only sampled with half the rate of Y. Or, in other words, 2 Bytes for Y and for U and V 1 Byte respectively, if the depth is 1 Byte. This implies that Y can have a higher dynamic range.
It is worth noting that JPEG standard defines horizontal and vertical sampling factors for each color component. The human visual system has a 20:1 ratio of the luma sensors (rods) to chroma sensors (cones). For this reason, typically luminosity component is not subsampled, but the JPEG standard does allow such content to be encoded.