关于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原理、采样及格式

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

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

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • pycharm 2021年4月激活码_通用破解码

    pycharm 2021年4月激活码_通用破解码,https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月17日
    90
  • Generic Host Process for Win32 Services 错误

    Generic Host Process for Win32 Services 错误机器运行时防火墙一直提示“GenericHostProcessforWin32Services”访问网络,选阻止后系统就一直弹出一个GenericHostProcessforWin32Services遇到问题需要关闭的对话框!在资源管理器中把系统文件的隐藏属性打开后,发现每个盘的根目录下和C:/WINDOWS目录下都有一个gg.exe文件,每个盘的根目录下有一个autoru

    2022年10月12日
    0
  • Ubuntu18.04安装gcc——史上最全安装教程

    Ubuntu18.04安装gcc——史上最全安装教程心路历程:花了整个周末的时间,最终没有安装好gcc,使用的Linux版本是Ubuntu18.04。但是,历尽千辛万苦,第二天晚上终于搞好!!第一步首先在命令行里面输入pingwww.baidu.com。这一步测试Ubuntu是否有网络,若出现如图2所示的信息,可以跳过第二步进行第三步。第二步设置网络,首先在虚拟器-设置-网络适配器里面选择NAT模式。然后再进行第一步操作,有些同学还是没有网络,先别急,还需继续设置,Win+R输入services.msc调出服务,分别右键VMwareDHCP

    2022年7月24日
    57
  • js数组的splice方法_js数组删除某一项

    js数组的splice方法_js数组删除某一项JS数组删除splice和delete

    2022年9月28日
    0
  • 中国软件开发外包公司排名-国内最大的软件开发商有哪些呢

    中国软件开发外包公司排名-国内最大的软件开发商有哪些呢中国软件开发外包公司排名-国内最大的软件开发商有哪些呢

    2022年6月5日
    29
  • 坚果课堂回顾:团队项目管理&SOP打造顶尖执行力

    坚果课堂回顾:团队项目管理&SOP打造顶尖执行力【摘要】:已经非常努力高效的利用时间了,可为什么事情还是做不完?todolist产生的速度,超过能处理完成事情的速度? 作为知识密集型行业的代表人群,律师行业始终在探索如何高效利用时间,在有限的时间内创造出更多价值。在律师行业效率变革的驱动下,秉承效率至上的云盘服务提供商坚果云,一直致力于助力律师行业找到高效工作方式。在6月12日…

    2022年5月22日
    38

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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