关于YUV420

关于YUV和RGB色彩模型一样,YUV也是被发明来描述色彩的模型。类似的还有CMYK等。RGB是使用红绿蓝三原色来描述色彩的模型。YUV使用亮度和色度来描述色彩的模型。CMYK是使用青色Cyan、品红色Magenta、黄色Yellow来描述色彩的模型。Y:表示的是亮度。UV是色差。YUV又称YCbCr,Cb代表蓝色差量(U),Cr代表红色分量(V),Y不仅有绿分量,还叠加了亮度信息。

大家好,又见面了,我是你们的朋友全栈君。

关于YUV

和RGB色彩模型一样,YUV也是被发明来描述色彩的模型。类似的还有CMYK等。

RGB 是使用红绿蓝三原色来描述色彩的模型。
YUV 使用亮度和色度来描述色彩的模型。
CMYK 是使用青色Cyan、品红色Magenta、黄色Yellow 来描述色彩的模型。

Y:表示的是亮度。UV是色差。YUV又称YCbCr,Cb代表蓝色差量(U),Cr代表红色分量(V),Y不仅有绿分量,还叠加了亮度信息。

YUV的出现解决了黑白电视机和彩色电视机显示的问题。

关于YUV420

YUV主流的采样方式包括:YUV444,YUV422,YUV420.
YUV 4:4:4采样,每一个Y对应一组UV分量。
YUV 4:2:2采样,每两个Y共用一组UV分量。
YUV 4:2:0采样,每四个Y共用一组UV分量。

对于YUV420编码来说,一副RGB图片有多少个像素点就有多少个Y,然后U分量是四分之一个像素点,V分量也是四分之一个像素点。

YUV420表示的是 2:1 的水平下采样,2:1 的垂直下采样

也就是YUV420对RGB格式图片采样如下:
1. 每个像素点采样一个Y
2. 奇数行采样U并且是隔一个像素点采样一次。
3. 偶数行采样V并且是隔一个像素点采样一次。

所以对于800×600的RGB图像,
RGB格式占用:800x600x3字节
YUV格式占用:800x600x1 + 800x600x1/4 + 800x600x1/4 = (800×600)x1.5 字节
也就是说YUV格式减少了一半的存储空间。

YUV420对RGB采样时如下:
每个像素点都采样Y,奇数行采样1/2个U(width、height都减半),不采样V,偶数行采样1/2个V(width、height都减半),不采样U。

YUV420的存储

YUV格式有两大类:planar和packed。对于planar的YUV格式,先连续存储所有像素点的Y,紧接着存储所有像素点的U,随后是所有像素点的V。对于packed的YUV格式,每个像素点的Y,U,V是连续交替存储的。对于前者称为YUV420p,后者称为YUV420sp。

以YUV420p为例,对于4个像素点的图像在内存中存储如下:
Y1,Y2,Y3,Y4,U1,V1

相关资料:

数字图像处理 颜色空间RGB、HSI、CMYK、YUV的相互转换
YUV格式分析详解
YUV内存里的存放顺序
详解YUV420数据格式
YUV原理、采样及格式

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/127103.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号