YUV422 YUV420 Planar \ Semi-Planar \ Interleaved

news/2024/7/10 20:41:02 标签: ffmpeg, 移动开发

YCbCr与YUV

YCbCr是DVD、摄像机、数字电视等消费类视频产品中,常用的色彩编码方案。YCbCr 有时会称为 YCC.。Y'CbCr 在模拟分量视频(analog component video)中也常被称为 YPbPr。YCbCr不是一种绝对色彩空间,是YUV压缩和偏移的版本。

1、YUV与YCbCr的区别 

正如几何上用坐标空间来描述坐标集合, 色彩空间用数学方式来描述颜色集合。常见的3 个基本色彩模型是RGB , CMYK和YUV。

  YCbCr 则是在世界数字组织视频标准研制过程中作为ITU - R BT1601 建议的一部分, 其实是YUV经过缩放和偏移的翻版。其中Y与YUV 中的Y含义一致, Cb , Cr 同样都指色彩, 只是在表示方法上不同而已。在YUV 家族中, YCbCr 是在 计算机系统中应用最多的成员, 其应用领域很广泛, JPEG、 MPEG均采用此格式。一般人们所讲的YUV大多是指YCbCr。YCbCr 有许多取样格式, 如4∶4∶4 , 4∶2∶2 , 4∶1∶1 和4∶2∶0。
   

YUV是被欧洲电视系统所采用的一种颜色编码方法(属于PAL),是PAL和SECAM模拟彩色电视制式采用的颜色空间。在现代彩色电视系统中,通常采用三管彩色摄影机或彩色CCD摄影机进行取像,然后把取得的彩色图像信号经分色、分别放大校正后得到RGB,再经过矩阵变换电路得到亮度信号Y和两个色差信号R-Y(即U)、B-Y(即V),最后发送端将亮度和色差三个信号分别进行编码,用同一信道发送出去。这种色彩的表示方法就是所谓的YUV色彩空间表示。采用YUV色彩空间的重要性是它的亮度信号Y和色度信号U、V是分离的。

 YCbCr其中Y是指亮度分量,Cb指蓝色色度分量,而Cr指红色色度分量。人的肉眼对视频的Y分量更敏感,因此在通过对色度分量进行子采样来减 少色度分量后,肉眼将察觉不到的图像质量的变化。主要的子采样格式有 YCbCr 4:2:0、YCbCr 4:2:2 和 YCbCr 4:4:4。

   4:2:0表示每4个像素有4个亮度分量,2个色度分量 (YYYYCbCr),仅采样奇数扫描线,是便携式视频设备(MPEG-4)以及电视会议(H.263)最常用格式;4:2:2表示每4个像素有4个亮度 分量,4个色度分量(YYYYCbCrCbCr),是DVD、数字电视、HDTV 以及其它消费类视频设备的最常用格式;4:4:4表示全像素 点阵(YYYYCbCrCbCrCbCrCbCr),用于高质量视频应用、演播室以及专业视频产品。

关于yuv 格式

YUV 格式通常有两大类:打包(packed)格式和平面(planar)格式。前者将 YUV 分量存放在同一个数组中,
通常是几个相邻的像素组成一个宏像素(macro-pixel);而后者使用三个数组分开存放 YUV 三个分量,就像
是一个三维平面一样。

 

几种常见的yuv格式

1.YUV422 Planar

这里,Y\U\V数据是分开存放的,每两个水平Y采样点,有一个Cb和一个Cr采样点,如下图

ffmpeg 中的定义  PIX_FMT_YUV422P,   ///< planar YUV 4:2:2, 16bpp, (1 Cr & Cb sample per 2x1 Y samples)  

android  OMX  中的定义  OMX_COLOR_FormatYUV422Planar     //*  YUV422Planar           : Three arrays Y,U,V.

 

2. YUV420 Planar

这个格式跟YUV422 Planar 类似,但对于Cb和Cr的采样在水平和垂直方向都减少为2:1,如下图

 

ffmpeg 中定义  PIX_FMT_YUV420P    //< planar YUV 4:2:0, 12bpp, (1 Cr & Cb sample per 2x2 Y samples)

android OMX 中定义  OMX_COLOR_FormatYUV420Planar     //  *  YUV420Planar           : Three arrays Y,U,V   

 

3.YUV422 Semi-Planar                                         

Semi 是’半‘的意思 我的理解这个半平面模式,这个格式的数据量跟YUV422 Planar的一样,但是U、V是交叉存放的,如下图。

 

ffmpeg 中 未找到定义

android  OMX  中 OMX_COLOR_FormatYUV422SemiPlanar    YUV422SemiPlanar       : Two arrays, one is all Y, the other is U and V

 

4.YUV420 Semi-Planar

 这个格式的数据量跟YUV420 Planar的一样,但是U、V是交叉存放的,如下图。

 ffmpeg 中定义  

PIX_FMT_NV12,      ///< planar YUV 4:2:0, 12bpp, 1 plane for Y and 1 plane for the UV components, which are interleaved (first byte U and the following byte V)

android   OMX  中定义 OMX_COLOR_FormatYUV420SemiPlanar    //YUV420SemiPlanar       : Two arrays, one is all Y, the other is U and V 

 

5.YUV422 Interleaved        Interleaved -- 交错   

这个格式的数据量跟YUV422 Planar的一样,但是Y、U、V是交叉存放的,如下图。 这个是打包(packed)模式的

ffmpeg  中  PIX_FMT_UYVY422   ///< packed YUV 4:2:2, 16bpp, Cb Y0 Cr Y1

android  OMX 中  OMX_COLOR_FormatCbYCrY    //CbYCrY                 : Organized as 16bit UYVY (i.e. CbYCrY)


http://www.niftyadmin.cn/n/1380116.html

相关文章

Oracle排名函数(Rank)实例详解

--已知&#xff1a;两种排名方式(分区和不分区):使用和不使用partition --两种计算方式(连续,不连续),对应函数&#xff1a;dense_rank,rank 查询原始数据&#xff1a;学号,姓名,科目名,成绩 select * from t_score S_ID S_NAME SUB_NAME SCORE 1 张三 语文 80.00…

聊聊Druid(二) -- 获取连接

为什么80%的码农都做不了架构师&#xff1f;>>> 连接池的最核心的一个功能就是连接管理。我们先来看看在druid中获取连接是怎样的一个实现过程。先来一张图对整个连接获取的过程进行描绘 连接获取与创建 &#xff08;右键打开新标签查看大图&#xff09; 客户端通过…

实现QQ登录第三方APP(Android)

2019独角兽企业重金招聘Python工程师标准>>> 首先你需要到腾讯开放平台注册开发者账号&#xff0c;并创建一个APP&#xff0c;填写包名&#xff0c;获取APP ID&#xff1a; http://open.qq.com/ 完成上面的工作后&#xff0c;可以继续了。 下载Android SDK&#…

java连接数据库的两种方法总结

方法一&#xff1a;使用jdbc-odbc桥连接sql server,作为中间媒介连接数据库 1.配置数据源&#xff1a;打开控制面版->管理工具->数据源&#xff08;ODBC&#xff09;->选用户DSN,按下添加按钮->sql server->写下数据源的名字&#xff08;假设是test&#xff09;…

揭秘德鸣大数据产业园之一站式管家服务

看过马云主演的电影《功守道》的朋友都知道&#xff0c;这部影片讲述的是关于太极的故事。但如果你只看到这点&#xff0c;说明看到的就是单纯表面内容&#xff0c;电影更深一层想要表达的却是如何用功夫去保护人、事和物。说到这里&#xff0c;数据中心运维最需要保护的就是“…

在已有数据表增加字段

1、在已有数据表中增加和删除一个字段 --增加字段 alter table TEST_SALE add test1 NUMBER; --删除字段 alter table TEST_SALE drop (test1);在 command window命令窗口执行

p2p tcp nat 原理图+源码(原创)

现今网上p2p的 udp nat穿透 文章 多如牛毛&#xff0c; p2p tcp nat的文章寥寥无几 &#xff0c;up主研究了几天 终于有所收获&#xff0c;特来向大家分享&#xff0c;请大家多多支持&#xff01; 1、首先你要有台外网服务器 或者 电信的运营商 支持转发的路由器&#xff08;具…

python三级菜单的实现

#!/usr/bin/env python# -*- coding: utf-8 -*-# Time : 2017-05-20 2:43# Author : wlgo2108# Site : # File : Menu01.py# Software: PyCharm# Email : wlgo2108126.comimport reimport sysmenu { "M:主菜单":{ "L:登录管理":{ …