分享

博客聚合 - MSDK格式转化篇(九)从RGB24到NV12 : sokerspace.com

 techres 2011-04-21



作者: Yanqing Wang (Intel) | 英特尔? 软件网络博客 - 中文
日期: 2010/8/9 14:23
点击: 18

RGB和YUV之间转化是视频格式之间的常见转化,对于英特尔IGFX而言,它要求视频格式为NV12格式,这也就多了一层如何从YUV(4:4:4)转化为NV12格式的步骤。在MSDK格式转化篇(八)从IYU2到NV12中,我们讲述了如何将YUV(4:4:4)格式转化为NV12的,那么本篇将以此为基础,讲述如何将RGB格式转化为NV12的。


将RGB转化为YUV的公式,如公式1所示:

Y = 0.299R + 0.587G + 0.114B

U = -0.147R - 0.289G + 0.436B

V = 0.615R - 0.515G - 0.100B


对于YUV的格式转化为RGB的公式,就是上述矩阵的转置,如公式2所示:

R = Y + 1.140V

G = Y - 0.395U - 0.581V

B = Y + 2.032U


图1展示了NV12的格式,它将Y独立出来,但交织UV的值。



                                                                               图1 NV12格式


从公式1)可知,从RGB转化为YUV,是一一对应的,即YUV是4:4:4格式,那么如何将其转化为NV12呢?


算法如下:

NV12->Y[ n ] = 0.299R[ n ] + 0.587G[ n ] + 0.114B[ n ]

NV12->U[ n ] = ((-0.147R[ n ] - 0.289G[ n ] + 0.436B[ n ]) + (-0.147R[ n + 1 ] - 0.289G[ n + 1 ] + 0.436B[ n + 1 ])) / 2

NV12->V[ n ] = ((0.615R[ n ] - 0.515G[ n ] - 0.100B[ n ]) + (0.615R[ n + 1 ] - 0.515G[ n + 1 ] - 0.100B[ n + 1 ])) / 2


【小结】

- RGB24转化为NV12的基本思路是先将RGB转化为YUV,在讲YUV转化为NV12,即RGBYUVNV12。

- NV12是IGFX的常用格式,将RGB转化为NV12具有普遍意义。


URL: http://www./modules/planet/view.article.php/1020
Trackback: http://www./modules/planet/trackback.php/1020

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多