RGB YUV

前几天碰到一个问题,需要做一张全黑的raw data给encode压码测试,因为raw data的格式是YUV的,于是相当然的就把所有值全置为0,因为Y值(亮度)置为0了,所以以为圧码出来的frame就应该是黑色的,可压完才发现是粉色的,这下晕了,因为全黑对于RGB就意味着全0, 于是赶紧找找RGB跟YUV格式转换的算法。

 

这 是YUV转RGB的

R= 1.0Y + 0 +1.402(V-128)  
G= 1.0Y - 0.34413 (U-128)-0.71414(V-128)  
B= 1.0Y + 1.772 (U-128)+0

看完这一下就清楚了,YUV为全0时,RGB并不为全0,要想压全黑的,必须是:

Y = 0;

U = V = 128;

 

于是重新做了一份raw data, 压完一看,果然全黑了。

 

附RGB转YUV如下:

Y = 0.257R′ + 0.504G′ + 0.098B′ + 16
Cb = -0.148R′ - 0.291G′ + 0.439B′ + 128
Cr = 0.439R′ - 0.368G′ - 0.071B′ + 128

你可能感兴趣的:(Tools,算法,测试)