YUV各种格式的像素占用内存大小计算

Posted Geek.Fan

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了YUV各种格式的像素占用内存大小计算相关的知识,希望对你有一定的参考价值。

        讲YUV格式的像素占用内存大小计算之前,先简单说下一些字节、字、bit、byte的关系:

  • 字 word
  • 字节 byte
  • 位 bit

字长是指字的长度

1字节=8位(1 byte = 8bit)

1字=2字节(1 word = 2 byte)

1个字节的字长是8

1个字的字长为16

  • bps

        1bps 是 bits per second 的简称。一般数据机及网络通讯的传输速率都是以「bps」为单位。如56Kbps、100.0Mbps 等等。

        bps 即是Byte per second 的简称。而电脑一般都以Bps 显示速度,如1Mbps 大约等同 128 KBps。

        bit 电脑记忆体中最小的单位,在二进位电脑系统中,每一bit 可以代表0 或 1 的数位讯号。

        byte 一个Byte由8 bits 所组成,可代表一个字元(AZ)、数字(09)、或符号(,.?!%&±*/),是记忆体储存资料的基本单位,至於每个中文字则须要两Bytes。当记忆体容量过大时,位元组这个单位就不够用,因此就有千位元组的单位KB出现,以下乃个记忆体计算单位之间的相关性:

  • 1 Byte = 8 Bits
  • 1 KB = 1024 Bytes
  • 1 MB = 1024 KB
  • 1 GB = 1024 MB

        usb2.0标准接口传输速率。许多人都将“480mbps”误解为480兆/秒。其实,这是错误的,事实上“480mbps”应为“480兆比特/秒”或“480兆位/秒”,它等于“60兆字节/秒”,大家看到差距了吧。

这要从bit和byte说起:bit和byte同译为"比特",都是数据量度单位,bit=“比特”或“位”。

byte=字节即1byte=8bits,两者换算是1:8的关系。

        mbps=mega bits per second(兆位/秒)是速率单位,所以正确的说法应该是说usb2.0的传输速度是480兆位/秒,即480mbps。

mb=mega bytes(兆比、兆字节)是量单位,1mb/s(兆字节/秒)=8mbps(兆位/秒)。

        我们所说的硬盘容量是40gb、80gb、100gb,这里的b指是的byte也就是“字节”。

  • 1 KB = 1024 bytes =2^10 bytes
  • 1 MB = 1024 kb = 2^20 bytes
  • 1 GB = 1024 mb = 2^30 bytes

        比如以前所谓的56kb的modem换算过来56kbps除以8也就是7kbyte,所以真正从网上下载文件存在硬盘上的速度也就是每秒7kbyte。

        也就是说与传输速度有关的b一般指的是bit。

        与容量有关的b一般指的是byte。

        最后再说一点: usb2.0 480mbps=60mb/s的传输速率还只是理论值,它还要受到系统环境的制约(cpu、硬盘和内存等),其实际读、取写入硬盘的速度约在11~16mb/s。但这也比usb1.1的12mbps(1.5m/s)快了近10倍。

        假如有一幅1920×1080的图片,用yuv422来表示,那么,采样方式就是每个像素采样Y信号,U,V信号隔一个采样,这样算下来,就有1920×1080个Y,1920×540个U,1920×540个V,一幅1080×1080大小的YUV图片占的总字节数为1920×1080×2个字节,每像素2个字节,也就是16位。

YUV422 8Bit是指每一个像素8bit

YUV422 16Bit是指每一个像素16bit

具体协议标准可查看 ITU-RBT.656视频标准接口PAL制式

在内存种中这样排列:Y0U0Y1V0 Y2U1Y3V1…

  • 第一个像素的YUV值为:Y0 U0 V0
  • 第二个像素的YUV值为: Y1 U0 V0
  • 第三个像素的YUV值为: Y2 U1 V1

        其他以此推类,也就是说每两个像素是共用了UV的;在一行上来看,每个像素的YUV值中Y值被采样,UV值采样0后,跳到3,然后5,所以每行上Y有1920个,U,V各540个。

意味着一个Y肯定对应一个像素点

图片的大小定 义为:w * h,宽高分别为w和h

1、YUV420格式

先Y,后V,中间是U。其中的Y是w * h,U和V是w/2 * (h/2)

如果w = 4,h = 2,则:

yyyy

yyyy

uu

vv

内存则是:yyyyyyyyuuvv

需要占用的内存:w * h * 3 / 2

采样规律是:每个像素点都采样Y,奇数行采样1/2个U,不采样V,偶数行采样1/2个V,不采样U

2、YUV422格式

本格式使用较为广泛,每两个点为一组,共占用4个字节

YUYVYUYV…

        对于每一组YUYV,前面一个Y和本组中的UV组成第一个点,第二个Y和本组中的UV组成第二个点。

所以,在内存中,宽高分别为w * 2、h。

如果w = 4,h = 2,则:

YUYVYUYV

YUYVYUYV

需要占用的内存:w * h * 2

3、UYUY422格式

本格式和YUYV422一样,只是YUV的位置不一样罢了

每组中YUV的排列顺序为:UYUV

需要占用的内存:w * h * 2

YUV的采样格式及每种格式中单像素所占内存大小

YUV主要的采样格式有YCbCr 4:2:0、YCbCr 4:2:2、YCbCr 4:1:1和 YCbCr 4:4:4。

采样格式 单像素所占内存大小 存放的码流

YCbCr 4:4:4 3 byte Y0 U0 V0 Y1 U1 V1 Y2 U2 V2 Y3 U3 V3(4像素为例)

YCbCr 4:2:2 2 byte Y0 U0 Y1 V1 Y2 U2 Y3 V3(4像素为例)

YCbCr 4:2:0 1.5byte Y0 U0 Y1 Y2 U2 Y3 Y5 V5 Y6 Y7 V7 Y8(8像素为例)

YCbCr 4:1:1 1.5byte Y0 U0 Y1 Y2 V2 Y3(4像素为例)

一幅1920x1080像素的YUV422的图像,大小是1920X1080X2=4147200(十进制),也就是3.95M大小。

以上是关于YUV各种格式的像素占用内存大小计算的主要内容,如果未能解决你的问题,请参考以下文章

图片占用内存计算

YUV格式&像素

YUV数据的几种采样格式以及保存方式

iOS uiimage内存占用大小计算

数字图像处理知识点

lcd中像素深度bpp和像素格式(比如RGB,YUV)的关系