YUV格式

作者: 一半浮沉 | 来源:发表于2019-09-27 11:13 被阅读0次

1,YUV420P

若视频帧的宽和高分别为w和h
1,一帧YUV420P像素数据一共占用w*h*3/2 Byte的数据;
2,其中前w*h Byte存储Y;
3,接着的w*h*1/4 Byte存储U;
4,最后w*h*1/4 Byte存储V。

eg:
先有一张分辨率为256x256图片,其中:
1,纯Y数据,分辨率为256x256;
2,纯U数据,分辨率为128x128;
3,纯V数据,分辨率为128x128;

如果想把YUV格式像素数据变成灰度图像,只需要将U、V分量设置成128即可。
这是因为U、V是图像中的经过偏置处理的色度分量。色度分量在偏置处理前的取值范围是-128至127,这时候的无色对应的是“0”值。经过偏置后色度分量取值变成了0至255,因而此时的无色对应的就是128了。

2,YUV444P

若视频帧的宽和高分别为w和h
1,一帧YUV444P像素数据一共占用w*h*3 Byte的数据;
2,前w*h Byte存储Y;
3,接着的w*h Byte存储U;
4,最后w*h Byte存储V;

eg:
先有一张分辨率为256x256图片,其中
1,Y,U,V各数据,分辨率为256x256

3,BMP格式:BMP采用的是小端(Little Endian)存储方式。这种存储方式中“RGB24”格式的像素的分量存储的先后顺序为B、G、R。由于RGB24格式存储的顺序是R、G、B,所以需要将“R”和“B”顺序作一个调换再进行存储。

BMP组成 |
---|---
BITMAPFILEHEADER |
BITMAPINFOHEADER |
RGB像素数据 |

typedef  struct  tagBITMAPFILEHEADER
{ 
unsigned short int  bfType;       //位图文件的类型,必须为BM 
unsigned long       bfSize;       //文件大小,以字节为单位
unsigned short int  bfReserverd1; //位图文件保留字,必须为0 
unsigned short int  bfReserverd2; //位图文件保留字,必须为0 
unsigned long       bfbfOffBits;  //位图文件头到数据的偏移量,以字节为单位
}BITMAPFILEHEADER; 
typedef  struct  tagBITMAPINFOHEADER 
{ 
long biSize;                        //该结构大小,字节为单位
long  biWidth;                     //图形宽度以象素为单位
long  biHeight;                     //图形高度以象素为单位
short int  biPlanes;               //目标设备的级别,必须为1 
short int  biBitcount;             //颜色深度,每个象素所需要的位数
short int  biCompression;        //位图的压缩类型
long  biSizeImage;              //位图的大小,以字节为单位
long  biXPelsPermeter;       //位图水平分辨率,每米像素数
long  biYPelsPermeter;       //位图垂直分辨率,每米像素数
long  biClrUsed;            //位图实际使用的颜色表中的颜色数
long  biClrImportant;       //位图显示过程中重要的颜色数
}BITMAPINFOHEADER;

4,RGB转YUV

Y= 0.299*R+0.587*G+0.114*B
U=-0.147*R-0.289*G+0.463*B
V= 0.615*R-0.515*G-0.100*B

**注意公式的由来,参考前两节

在转换的过程中有以下几点需要注意:

1) RGB24存储方式是Packed,YUV420P存储方式是Packed。
2) U,V在水平和垂直方向的取样数是Y的一半。

参考链接

相关文章

  • YUV数据格式

    目录 YUV的原理 YUV的取值范围 YUV的存储格式 YUV的采样格式 存储方式 10bit YUV数据的存储 ...

  • IOS 视频格式之YUV

    YUV简介 yuv格式是一种图片储存格式,跟RGB格式类似。yuv中,y表示亮度(Luminance或Luma),...

  • 音视频相关问题

    视频相关的问与答: 一、YUV的内存存储格式YUV格式有很多种,比如YUV420,YUV422,YUV444等。比...

  • YUV数据格式

    目录 参考 YUV的原理 YUV的取值范围 YUV的存储格式 YUV的采样格式 存储方式 1. 参考 [1] 图文...

  • 视频存储格式YUV420 NV12 NV21 i420 YV12

    1)YUV简介 YUV格式有两大类:planar和packed。 对于planar的YUV格式,先连续存储所有像素...

  • YUV格式初探

    目录 一、 YUV起源 二、 YUV的类型 三、 YUV的采样和存储格式 四、 YUV的相关Enum 五、 YUV...

  • Android音视频—YUV格式深入浅出

    文章参考: 图文详解YUV420数据格式 YUV主要采样格式理解 YUV格式详解 百度百科和维基百科 概述 本文基...

  • i420转Yuyv

    YUV的存储格式有两大类:packed和planar,还有SemiPlanar。 对于packed的YUV格式,每...

  • OpenGL ---- (6)YUV格式讲解

    OpenGL ---- (6)YUV格式讲解

  • 详解 YUV 格式(I420/YUV420/NV12/NV12/

    详解 YUV 格式(I420/YUV420/NV12/NV12/YUV422) YUV (Y'CbCr)是一种像素...

网友评论

      本文标题:YUV格式

      本文链接:https://www.haomeiwen.com/subject/gqwouctx.html