关于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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • redis cluster原理详解_redis cluster原理

    redis cluster原理详解_redis cluster原理本文转载自:https://zhuanlan.zhihu.com/p/69800024RedisCluster是Redis官方提供的集群解决方案。由于业务的飞速增长,单机模式总会遇到内存、性能等各种瓶颈,这个时候我们总会喊,上集群啊。就跟我家热得快炸了,你总喊开空调呀一样。的确,上集群可以解决大多数问题,但是在使用集群的过程中,不可避免会遇到这样那样的问题,这个时候怎么办呢,各种百度各种群里去问吗?NO,作为开发人员,在享受第三方提供的方便前,有必要去了解其基本的工作机制,这样才能在遇到问题时快速定位,

    2022年10月14日
    3
  • Thread的join方法[通俗易懂]

    Thread的join方法[通俗易懂]Thread中的join方法主要的作用是让jion的线程加入当前线程,等加入的线程执行完之后才会执行当前线程。接下来看个例子:publicclassTestJoin{publicstaticvoidmain(String[]args)throwsInterruptedException{Threadt1=newThread(()->{try{Thr

    2022年6月3日
    27
  • 目标检测与图像分割的区别_语义分割和实例分割最新论文

    目标检测与图像分割的区别_语义分割和实例分割最新论文计算机视觉的任务很多,有图像分类、目标检测、语义分割、实例分割和全景分割等,那它们的区别是什么呢?1、ImageClassification(图像分类)图像分类(下图左)就是对图像判断出所属的分类,比如在学习分类中数据集有人(person)、羊(sheep)、狗(dog)和猫(cat)四种,图像分类要求给定一个图片输出图片里含有哪些分类,比如下图的例子是含有person、sheep和do…

    2022年8月23日
    6
  • 阿里云配置MYSQL远程连接

    想要远程连接阿里云服务器安装的mysql(不是RDS,RDS申请外网地址即可)需要两个步骤,第一步是修改允许连接mysql的权限,具体操作如下:首先登录:mysql-uroot-hlocalhost-ppassword打开mysql数据库:usemysql;将host设置为%表示任何ip都能连接mysql,当然您也可以将host指定为某个ip:updateuse

    2022年4月6日
    44
  • Linux下export命令和source命令与环境变量设置「建议收藏」

    Linux下export命令和source命令与环境变量设置「建议收藏」Linux下export命令和source命令与环境变量设置环境变量广泛用于程序运行环境的设置。从Linuxshell的角度来看,环境变量无非就是shell脚本的变量而已。从这个角度理解环境变量,就能理解设置环境变量的那些命令究竟在做什么。说明:笔者的系统为debian,shell为bash,以下例子均在笔者的Linux环境下测试,不保证其他环境能够通过。export命令和source命令…

    2025年9月24日
    6
  • 常见几种java排序算法

    常见几种java排序算法1.插入排序publicclassInsertSort{publicstaticvoidsort(int[]arr){if(arr.length>=2){for(inti=1;i<arr.length;i++){//挖出一个要用来插入的值,同时位置上留下…

    2022年6月16日
    37

发表回复

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

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