在图像处理过程中,经常会遇到YUV与RGB之间的转换,这个转换有不同标准,有多种转换公式, 有时,由于没有成对的匹配上,导致了效果异常。现在总结各种标准的转换公式。 BT601标准里有三种,BT709有两种。
BT601 full range rgb=[0, 255], y=[16, 235], uv=[16, 240] R = 1.164 * (Y - 16) + 1.596 * (V - 128) G = 1.164 * (Y - 16) - 0.392 * (U - 128) - 0.812 * (V - 128) B = 1.164 * (Y - 16) + 2.016 * (U - 128)
Y = 0.257 * R + 0.504 * G + 0.098 * B + 16 U = -0.148 * R - 0.291 * G + 0.439 * B + 128 V = 0.439 * R - 0.368 * G - 0.072 * B + 128
BT601 limit range rgb=[0, 219], y=[16, 235], uv=[16, 240] R = Y - 16 + 1.372 * (V - 128) G = Y - 16 - 0.337 * (U - 128) - 0.699 * (V - 128) B = Y - 16 + 1.734 * (U - 128)
Y = 0.299 * R + 0.587 * G + 0.114 * B + 16 U = -0.173 * R - 0.339 * G + 0.511 * B + 128 V = 0.511 * B - 0.428 * G - 0.083 * B + 128