原文地址:http://www.equasys.de/colorconversion.html
Color Conversion
This page contains the different equations for converting one of the luminance / chrominance based color formats (YUV, YCbCr and YPbPr) into the RGB color format and vice versa.
YUV - RGB Color Format Conversion
YCbCr - RGB Color Format Conversion
YPbPr - RGB Color Format Conversion
See also the page Color Formats to get basic information about the different color formats.
YUV - RGB Color Format Conversion
The YUV color format is used only for analog PAL or analog NTSC video - not for any digital video format. The following equation describes the conversion of an RGB color into the YUV color format:
This is the inverse matrix to get the RGB components out of the YUV color:
YCbCr - RGB Color Format Conversion
For digital component video the color format YCbCr is used. For standard definition TV applications (SDTV) the following equation describes the color conversion from RGB to YCbCr (according to ITU-R BT.601):
To recover an RGB color from a YCbCr color, the following inverse matrix is used:
The possible range of values for chrominance and luminance reserves some footroom and headroom, which is necessary to provide some space for overshooting, e.g. in combination with analog video equipment. For computer based applications using RGB and YCbCr color formats, in many cases the complete possible range of 8 bit is used, without providing a footroom or headroom. Typically, this full-range color format is used for JPEG images.
The conversion of RGB colors into full-range YCbCr colors is described by the following equation:
The other way round, to convert a full-range YCbCr color into RGB is described by the following equation:
For high definition TV (HDTV), different coefficients are used. The possible range of values is identical to the SDTV, to provide the necessary footroom and headroom. The following equation describes the color conversion from RGB to YCbCr for HDTV (according to ITU-R BT.709):
This is the corresponding inverse matrix to get the RGB color components out of a YCbCr color:
YPbPr - RGB Color Format Conversion
The following equations describe the conversion from RGB to YPbPr color format for component analog video and vice versa. Again, different coefficients are used for SDTV and HDTV.
In case of SDTV, for converting RGB to YPbPr, the following matrix is used:
This is the inverse matrix to recover an RGB value from a given YPbPr value:
In case of HDTV, for converting RGB to YPbPr, the following matrix is used:
Finally, this is the inverse matrix:
记录该信息,以备不时之需;顺便说一句:
在ios平台使用avcompositon 合成视频,利用 avassertoutput 导出视频的时候,不论如何设置video output settings ,最终输出的 CVImageBuffer 都是 bt.702 格式,和AVPlayerItemOutput 不太一样,后者输出为bt.601,GPUImage 本没有提供 702FullRange(0 - 255) 转换矩阵,上述网站也未提供相应的转换矩阵,最终我们使用非FullRange 矩阵做了视频转换,导致我们合成的视频,颜色有些失真,和原始的图像有些差别,直接复用 601FullRange 转换,可以弱化这种失真