详解YUV420数据格式

上传人:回**** 文档编号:125445656 上传时间:2022-07-26 格式:DOCX 页数:7 大小:69.50KB
返回 下载 相关 举报
详解YUV420数据格式_第1页
第1页 / 共7页
详解YUV420数据格式_第2页
第2页 / 共7页
详解YUV420数据格式_第3页
第3页 / 共7页
点击查看更多>>
资源描述
图文详解YUV420数据格式 YUV格式有两大类:planar和packed。对于planar的YUV格式,先持续存储所有像素点的Y,紧接着存储所有像素点的U,随后是所有像素点的V。对于packed的YUV格式,每个像素点的Y,U,V是持续交*存储的。YUV,分为三个分量,“Y”表达明亮度(Luminance或Luma),也就是灰度值;而“U”和“V” 表达的则是色度(Chrominance或Chroma),作用是描述影像色彩及饱和度,用于指定像素的颜色。 与我们熟知的RGB类似,YUV也是一种颜色编码措施,重要用于电视系统以及模拟视频领域,它将亮度信息(Y)与色彩信息(UV)分离,没有UV信息同样可以显示完整的图像,只但是是黑白的,这样的设计较好地解决了彩色电视机与黑白电视的兼容问题。并且,YUV不像RGB那样规定三个独立的视频信号同步传播,因此用YUV方式传送占用很少的频宽。YUV码流的存储格式其实与其采样的方式密切有关,主流的采样方式有三种,YUV4:4:4,YUV4:2:2,YUV4:2:0,有关其具体原理,可以通过网上其他文章理解,这里我想强调的是如何根据其采样格式来从码流中还原每个像素点的YUV值,由于只有对的地还原了每个像素点的YUV值,才干通过YUV与RGB的转换公式提取出每个像素点的RGB值,然后显示出来。 用三个图来直观地表达采集的方式吧,以黑点表达采样该像素点的Y分量,以空心圆圈表达采用该像素点的UV分量。先记住下面这段话,后来提取每个像素的YUV分量会用到。1. YUV4:4:4采样,每一种Y相应一组UV分量。2. YUV4:2:2采样,每两个Y共用一组UV分量。3. YUV4:2:0采样,每四个Y共用一组UV分量。2. 存储方式 下面我用图的形式给出常用的YUV码流的存储方式,并在存储方式背面附有取样每个像素点的YUV数据的措施,其中,Cb、Cr的含义等同于U、V。(1) YUVY 格式 (属于YUV422)YUYV为YUV422采样的存储格式中的一种,相邻的两个Y共用其相邻的两个Cb、Cr,分析,对于像素点Y00、Y01 而言,其Cb、Cr的值均为 Cb00、Cr00,其她的像素点的YUV取值依次类推。 (2) UYVY 格式 (属于YUV422)UYVY格式也是YUV422采样的存储格式中的一种,只但是与YUYV不同的是UV的排列顺序不同样而已,还原其每个像素点的YUV值的措施与上面同样。(3) YUV422P(属于YUV422)YUV422P也属于YUV422的一种,它是一种Plane模式,即平面模式,并不是将YUV数据交错存储,而是先寄存所有的Y分量,然后存储所有的U(Cb)分量,最后存储所有的V(Cr)分量,如上图所示。其每一种像素点的YUV值提取措施也是遵循YUV422格式的最基本提取措施,即两个Y共用一种UV。例如,对于像素点Y00、Y01 而言,其Cb、Cr的值均为 Cb00、Cr00。(4)YV12,YU12格式(属于YUV420)YU12和YV12属于YUV420格式,也是一种Plane模式,将Y、U、V分量分别打包,依次存储。其每一种像素点的YUV数据提取遵循YUV420格式的提取方式,即4个Y分量共用一组UV。注意,上图中,Y00、Y01、Y10、Y11共用Cr00、Cb00,其她依次类推。(5)NV12、NV21(属于YUV420)NV12和NV21属于YUV420格式,是一种two-plane模式,即Y和UV分为两个Plane,但是UV(CbCr)为交错存储,而不是分为三个plane。其提取方式与上一种类似,即Y00、Y01、Y10、Y11共用Cr00、Cb00YUV420 planar数据, 以720488大小图象YUV420 planar为例,其存储格式是: 共大小为(72048031)字节,分为三个部分:Y,U和V Y分量:(720480)个字节 U(Cb)分量:(7204802)个字节V(Cr)分量:(7204802)个字节 三个部分内部均是行优先存储,三个部分之间是Y,U,V 顺序存储。即YUV数据的0720480字节是Y分量值, 7204807204805/4字节是U分量 7204805/4 7204803/2字节是V分量。4 :2: 2 和4:2:0 转换:最简朴的方式:YUV4:2:2 - YUV4:2:0Y不变,将U和V信号值在行(垂直方向)在进行一次隔行抽样。 YUV4:2:0 - YUV4:2:2Y不变,将U和V信号值的每一行分别拷贝一份形成持续两行数据。在YUV420中,一种像素点相应一种Y,一种4X4的小方块相应一种U和V。对于所有YUV420图像,它们的Y值排列是完全相似的,由于只有Y的图像就是灰度图像。YUV420sp与YUV420p的数据格式它们的UV排列在原理上是完全不同的。420p它是先把U寄存完后,再寄存V,也就是说UV它们是持续的。而420sp它是UV、UV这样交替寄存的。(见下图) 有了上面的理论,我就可以精确的计算出一种YUV420在内存中寄存的大小。 width * hight =Y(总和) U = Y / 4 V = Y / 4因此YUV420 数据在内存中的长度是 width * hight * 3 / 2,假设一种辨别率为8X4的YUV图像,它们的格式如下图:YUV420sp格式如下图 YUV420p数据格式如下图 旋转90度的算法:public static void rotateYUV240SP(byte src,byte des,int width,int height) int wh = width * height;/旋转Yint k = 0;for(int i=0;iwidth;i+) for(int j=0;jheight;j+) desk = srcwidth*j + i; k+;for(int i=0;iwidth;i+=2) for(int j=0;jYUV(I420)。这样,数据量将减少一半,为什么呢?呵呵,这个就太基本了,我就不多写了。同样,如果是RGB24YUV(YV12),也是减少一半。但是,虽然都是一半,如果是YV12的话效果就有很大损失。然后,通过X264编码后,数据量将大大减少。将编码后的数据打包,通过RTP实时传送。达到目的地后,将数据取出,进行解码。完毕解码后,数据仍然是YUV格式的,因此,还需要一次转换,这样windows的驱动才可以解决,就是YUV2RGB24。 YUY2 是 4:2:2Y0 U0 Y1 V0 yuv420p 和 YUV420的区别 在存储格式上有区别yuv420p:yyyyyyyy uuuuuuuu vvvvv yuv420: yuv yuv yuv YUV420P,Y,U,V三个分量都是平面格式,分为I420和YV12。I420格式和YV12格式的不同处在U平面和V平面的位置不同。在I420格式中,U平面紧跟在Y平面之后,然后才是V平面(即:YUV);但YV12则是相反(即:YVU)。YUV420SP, Y分量平面格式,UV打包格式, 即NV12。 NV12与NV21类似,U 和 V 交错排列,不同在于UV顺序。I420: YYYYYYYY UU VV =YUV420PYV12: YYYYYYYY VV UU =YUV420PNV12: YYYYYYYY UVUV =YUV420SPNV21: YYYYYYYY VUVU =YUV420SP
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 解决方案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!