[转]色度抽样(4:2:0)到底是什么意思?
在视频编码的材料中,经常提到色度采样或者色度抽样的概念,而且一般的教材里仅仅说明某些视频编码标准如MPEG4或者H.264编码标准支持某种或者某几种色度取样的编码,有时还贴出几张莫名其妙的图。那色度采样到底是什么意思呢?特别是4:2:0的图总是让人感到费解,下面就详细的介绍。
其实很简单,视频一般采用YCbCr的颜色空间。其原理是人类视觉系统对亮度比彩色更敏感,因此可以把亮度信息从彩色信息分离出来,并使之具有更高的清晰度,而稍微降低彩色信息的清晰度,这样就可以在人眼未感觉图像有什么差异的前提下压缩带宽,实现一定的视频压缩。例如在压缩影像中,以4:2:2 Y'CbCr作例,它只需使用比R'G'B'(4:4:4)三分之二的带宽即可传输。
主要的采样格式有YCbCr 4:2:0、YCbCr 4:2:2、YCbCr 4:1:1和 YCbCr 4:4:4。问题是,这些符号到底是什么意思呢?视频系统的抽样系统中通常用一个三分比值表示:J:a:b(例如4:2:2),形容一个以J个像素宽及两个像素高的概念上区域,有时候会以四分比值表示(例如4:2:2:4)。依序列出为:
· J:水平抽样参照(概念上区域的宽度)。通常为4。
· a:在J个像素第一行中的色度抽样数目 (Cr, Cb)。
· b:在J个像素第二行中的额外色度抽样数目 (Cr, Cb)。
· Alpha:水平因子(与首数值有关连)。若没有此部分者可忽略,或存在时与J相同。
在比较图像质量时,这三个值之间的比值才是重要的,所以4:4:4可以简化为1:1:1;但是习惯上亮度样本的数量值总为4,其他两个值依此类推。有时抽样率为四分比值,如4:2:2:4。这时第四个值是调制通道的抽样频率比值。事实上,因为在调制应用中非常需要高质量图像,所以这个值在任何情况下都为4,所以采用J:a:b的表示方式更为常见。
其中容易引起误解的是以为J:a:b表示Y:Cr:Cb,那就错了,因为这里Cr和Cb是一个整体,在下图中用一个黑色实心点表示。
四种典型的采样如上图所示。首先明白,三种点各表示什么,空心圆圈是Y采样,但是CrCb是一个整体,大圈套小圈表示具有Y、Cr和Cb的点。
在理解的时候,要先以“行”为单位,以水平方向的四个点为一个单位来看。因为我们总是习惯性以2x2的单位来计算,在毕厚杰的书里就以2x2进行的。貌似这样也行。
在上图中,我们首先看4:1:1的采样,它的意思是在采样的第一行中,每连续四个点,采样一个CrCb(第一个1的含义),在紧邻的第二行中,同样采样一个CrCb(第二个1的含义)。
接着看4:2:2,它的意思是在采样的第一行中,每连续四个点,采样两个CrCb,在紧邻的第二行中采样两个CrCb。
同理4:4:4就很简单了
4:2:0的含义
但是4:2:0的图比较特殊,它表示第一行中,每连续四个点, 采样两个CrCb,在紧邻的第二行中不采样CrCb,但是,要注意,在上图中,里面只有四行,而不是两行,也就说纯黑的点组成的不是两个行,这里只是为了便于表示而单独标记出来,但是,为什么不将第二行黑点与第一行的空心圆合并呢?这一点一直让我不解。但是,看下面的图就明白了。
注意观察这里的4:2:0。从这张图里可以很明显的看到,之所以将CrCb单独列出来,原因是对色差信号Cr和Cb是每行交替传送的。很明显,这样图比较复杂,一般的书籍将其简化成了第一张图的样子,这反而有时,让我们难以理解。
3.结合通信传输理论进一步理解取样的含义
转自:https://blog.csdn.net/xueyushenzhou/article/details/40817949
转载于:https://www.cnblogs.com/linganxiong/p/8971246.html
[转]色度抽样(4:2:0)到底是什么意思?相关推荐
- php中的eq的含义,jquery,_jQuery中的eq(0)到底是什么意思??详情请看下面代码!,jquery - phpStudy...
jQuery中的eq(0)到底是什么意思??详情请看下面代码! 手风琴效果 *{padding:0; margin:0;} .box{margin:50px auto; width:300px; he ...
- android 广播 7.0变化,安卓7.0到底带来了那些变化?
原标题:安卓7.0到底带来了那些变化? 19号谷歌在它的I/O开发者大会上正式发布了全新的安卓7.0,那么新版本的安卓到底带来了哪些变化和改进呢?一起来看下吧! 一.性能提升 从安卓5.0开始,谷歌把 ...
- 所以Web 3.0到底是什么?
目录 前言 一.web3.0是什么? 二.web3.0的发展历史 1.web1.0 2.web2.0 3.web3.0 三.总结 前言 互联网经历30年从web1.0到we2.0再到web3.0,近日 ...
- Thread.sleep(0)到底是个什么骚操作?
点击上方"Java基基",选择"设为星标" 做积极的人,而不是积极废人! 每天 14:00 更新文章,每天掉亿点点头发... 源码精品专栏 原创 | Java ...
- 三星s9更新android9.0,安卓9.0到底能不能升级?三星S9+升级之后性能差别好大
原标题:安卓9.0到底能不能升级?三星S9+升级之后性能差别好大 安卓9.0到底能不能升级呢?安卓手机升级到目前最新的安卓9.0系统对于手机来说到底是更加流畅还是会便卡顿呢?外媒将两部分别是安卓9.0 ...
- js中‘0’到底是 true 还是 false
js中'0'到底是 true 还是 false if ('0') alert("'0' is true"); if ('0' == false) alert("' ...
- 抽样(蒙特卡洛法)到底是在干啥?
目录 一.简单抽样 二.逆转换方法 三."接受-拒绝"抽样 四.马尔科夫链蒙特卡洛法(MCMC) 五. "接受-拒绝"抽样再认识 1. 接受-拒绝抽样法理论介 ...
- ROS和ROS2.0到底该用哪个呢?
很多朋友经常问ROS1.0(下文简称ROS)和ROS2.0我到底该学习/使用哪个呢? 欢迎拍砖讨论,但若是因此对您的项目或产品造成了损失,本人不负任何责任! 我先给出个人的观点,再说明其中原因. 对于 ...
- 号称下一代互联网的 Web3.0 到底是个啥?
上面这个公号「涩郎」,是我的一个备用号,为了防止万一哪天大号失联,平时一周我也会发三篇左右的我的思考,读书笔记,认知感悟等文章,带领大家一起探索精神与财务自由之路. 大家好,我是校长. 去年什么最火? ...
- storage/emulated/0.到底在哪儿
问题: 通过logcat读出的sdcard根目录的路径名是/storage/emulated/0/. 但是我不知道这个路径到底是在哪儿? 解答: android的API的得到的就是/storage/e ...
最新文章
- python rsa 公钥解密_python利用rsa库做公钥解密的方法教程
- java寻找最大的字母_【LeetCode(Java) - 744】寻找比目标字母大的最小字母
- 分析并写出下列程序的运行结果_知到APP2020分析化学(福州大学)章节答案
- C++存储和处理字符串
- SpringBoot学习之路:06.Spring Boot替换默认的Jackson
- 大厂面试算法系列-如何实现链表的逆序(二)-递归法
- ubuntu虚拟机进程被杀死_Linux进程被杀掉(OOM killer),查看系统日志
- hadoopstreaming
- 古风一棵桃花树简笔画_运用仿真树装饰效果如此浪漫
- Cardano链上首个流动性解决方案商Occam宣布与Changelly合作孵化新项目
- MySQL Workbench 的安全设置
- MongoDB密码设置(基于windows)
- owasp testing guide 2014 中文
- generator.xml mysql_generatorConfig-mysql.xml中连接数据库的正确书写方式。
- 新梦想干货——软件测试中的43个功能测试点(下)
- 数据库简单查询——查询的条件
- 设计模式:个人理解关于代理和委托模式的一点区别
- ATN项目(智能矩阵Atmatrix)是否能做到人工智能界的桥梁,从而改变世界?
- 《这样思考,人生就不一样》/《思考的整理学》 博客思听 2010年1月
- 如何快速制作证件照并压缩到100K?