yuv2rgb

http://www.microsoft.com/china/MSDN/library/enterprisedevelopment/softwaredev/VideoRende8BitYUV.mspx
如何记忆YUV422,YUV444等格式的意义?
三个数字分别表示两个比率:水平,竖直的比例下降。
例如444表示水平竖直全一样,不降低采样。
422表示水平降低2:1,竖直不降低(因为2-2=0)
420表示水平降低2:1,竖直也降低2:1(因为2-0=2)


最常用的yuv422=>rgb888的公式:

因此,假设:
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 位的精确度。


rgb的打包例如rgb565=>rgb占用16bit,rgb的planner格式,3个指针,
yuv一般都是888格式.

在LCD中64k色的一般都是RGB565,RGB565=>rgb888实际上就是把(RGB565 / 32 ) *255

posted on 2004-12-16 15:47  embed  阅读(3020)  评论(0编辑  收藏  举报

导航