添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
对于计算机 RGB 输入和8位 BT. 601 YUV 输出,我们相信上一节中给出的公式可以合理地近似如下:

Y = ( (  66 * R + 129 * G +  25 * B + 128) >> 8) +  16
U = ( ( -38 * R -  74 * G + 112 * B + 128) >> 8) + 128
V = ( ( 112 * R -  94 * G -  18 * B + 128) >> 8) + 128

这些公式使用不超过8位 (无符号) 精度的系数生成8位结果。 中间结果将要求最高16位的精度。

YUV to RGB888

将8位 YUV 转换为 RGB888 从原始的 RGB 到 YUV 公式,可以为 BT. 601 派生以下关系。

Y = round( 0.256788 * R + 0.504129 * G + 0.097906 * B) +  16
U = round(-0.148223 * R - 0.290993 * G + 0.439216 * B) + 128
V = round( 0.439216 * R - 0.367788 * G - 0.071427 * B) + 128

因此,给定:

C = Y - 16
D = U - 128
E = V - 128

用于转换 YUV 到 RGB 的公式可以按如下方式派生:

R = clip( round( 1.164383 * C                   + 1.596027 * E  ) )
G = clip( round( 1.164383 * C - (0.391762 * D) - (0.812968 * E) ) )
B = clip( round( 1.164383 * C +  2.017232 * D                   ) )

其中 clip() 表示从0到255的范围进行剪辑。 [ ] 我们相信这些公式可以合理地近似如下:

R = clip(( 298 * C           + 409 * E + 128) >> 8)
G = clip(( 298 * C - 100 * D - 208 * E + 128) >> 8)
B = clip(( 298 * C + 516 * D           + 128) >> 8)

这些公式使用的一些系数需要8个以上的精度才能生成每个8位结果,中间结果要求的精度超过16位。

若要将4:2:0 或 4:2:2 YUV 转换为 RGB,建议将 YUV 数据转换为 4:4:4 YUV,然后再从 4:4:4 YUV 转换为 RGB。 下面的部分提供了一些方法,用于将4:2:0 和4:2:2 格式转换为4:4:4

https://docs.microsoft.com/zh-cn/windows/win32/medfound/recommended-8-bit-yuv-formats-for-video-rendering?redirectedfrom=MSDN#converting-8-bit-yuv-to-rgb888