#《H.264和MPEG-4视频压缩》# 一. 色彩空间
多数的数字视频应用需要播放彩色的视频信号,所以需要捕获和重现颜色信息。一幅黑白图像的每一个采样点只需要一个像素表示明暗或亮度,而在彩色图像中至少需要3个像素来表示每个像素的色彩。表示亮度和色彩的不同方法,由不同的色彩空间确定。
RGB色度空间
在RGB彩色空间,彩色图像中用3个数来表示红、蓝、绿三种颜色的比例(光的三原色)。任何其他色彩都可以由这三种颜色的不同比例的混合构成。在RGB色彩空间,可以方便地对彩色图像进行捕获和显示。在捕捉图像的时候,首先要把场景中红蓝绿三种色彩分量提取出来,每一种分量单独使用一组传感器。色彩在阴极射线管显示器(CRT)和液晶显示器(LCD)中显示的时候,分别按照红蓝绿3种分量的强度显示每一个像素。当人们从一定距离观看时,独立的色彩分量相互混色就产生“真实的彩色”。
YCbCr色度空间
人类视觉系统(HVS,human vision system)对色度的敏感程度低于亮度。而在RGB色彩空间里,3种颜色分量的重要性相同,所以必须以相同的度量来存储它们,但事实上我们可以通过提高亮度的精度,降低色度的精度来更有效的表示颜色图像。
通常,YCbCr色彩空间和它的变形(YUV色彩空间)是用于有效表示彩色图像的对色彩空间度量的方法。Y指亮度(Luma),是不同权重的R,G,B的平均:
Y=krR+kgG+kbB (1)
k是权重。
色彩信息可以表示为色差(Chroma),每一个色差表示了RGB与Y的差:
Cb=B-Y
Cr=R-Y (2)
Cg=G-Y
这样彩色图像的完整信息——亮度和色差就由Y和Cb,Cr,Cg分别给出了。
至此,这样的颜色空间并没有表现出明显的优点,因为处理后有四个分量,而RGB中只有三个色彩分量。但是,因为Cb+Cr+Cg是一个常数,所有我们只需要存储或传输其中的两个,第三个可以计算出来。在YCbCr空间,只有亮度和蓝色、红色的色差传输。YCbCr相对RGB而言有一个重大的优点,就是我们可以用比Y更低的分辨率来存储CbCr,因为人类视觉系统对色度敏感程度低于亮度。这样可以减少大量数据的同时对视觉质量没有明显的影响。对于普通的观察者,RGB图像与降低CbCr分辨率的YCbCr图像没有什么区别,所以这也是图像压缩中简单而有效的方式之一。
Y=krR+(1-kb-kr)G+kbB
Cb=(0.5/(1-kb)) (B-Y) (3)
Cr=(0.5/(1-kr)) (R-Y)
R=Y+((1-kr)/0.5) Cr
G=Y-(2Kb(1-Kb)/(1-kb-kr)) Cb-(2Kr(1-Kr)/(1-kb-kr)) Cr (4)
B=Y+((1-kb)/0.5) Cb
得到RGB的图像之后,将现有的RGB图像转换成YCbCr图像是为了减少存储或传输数量,在显示图像之前,通常还要再转换成RGB。公式(3)和(4)给出了变换和逆变换的公式。注意系数kg并不存在(因为kb+kg+kr=1),G可以由Y减去Cb,Cr得到,这也说明了Cg分量是不需要保存或传输的。
ITU-R推荐的BT.601中定义kb=0.114,kr=0.299。代入以上的公式就得到下面的转换公式:
Y=0.299R+0.587G+0.114B
Cb=0.564(B-Y) (5)
Cr=0.713(R-Y)
R=Y+1.402Cr
G=Y-0.344Cb-0.714Cr (6)
B=Y+1.772Cb
YCbCr的采样格式

1. 4:4:4采样是指每一分量(Y,Cb,Cr)都有相同的分辨率,因为都在所有的像素位置上进行了采样。数字表示的是每一部分在水平方向上的相对采样频率。4:4:4就是指每四个亮度点对应4个Cb和4个Cr。4:4:4采样保留了所有的色差分量。
2. 4:2:2采样格式中(有时又叫YUV2),色差在垂直方向的分辨率与亮度相同,而水平方向只有一半,每四个亮度点对应2个Cb和2个Cr。
3. 4:2:0,即水平方向和垂直方向上Cb,Cr的分辨率都只有亮度的一半。
4:2:0采样有时也被称为“12比特每像素”。例如对于每四个像素点来看,如果使用4:4:4采样则共有12个采样点,Y、Cb、Cr各有四个,一共需要12*8=96比特,平均每个像素96/4=24比特。而使用4:2:0采样,只有6个采样点,Y四个,Cb、Cr各一个,一共需要6*8=48比特,每个像素48/4=12比特。
end。
“生命的终结不是死亡,而是被所爱的人遗忘。”
#《H.264和MPEG-4视频压缩》# 一. 色彩空间的更多相关文章
- 03:H.264编码原理以及视频压缩I、P、B帧
一:前言 H264是新一代的编码标准,以高压缩高质量和支持多种网络的流媒体传输著称,在编码方面,我理解的他的理论依据是:参照一段时间内图像的统计结果表明,在相邻几幅图像画面中, 一般有差别的像素只有1 ...
- H.264视频压缩标准
H.264 这部分一直在讲,但是却没有系统的来说.接下来要详细. 参看:H.264视频压缩标准 一.简介 H.264是最新的视频压缩标准,它也称为MPEG-4 Part 10或AVC(高级视频编码). ...
- H.264 与 MPEG-4 压缩格式的变革
h.264 和 mpeg-4 的关系: h.264 /avc ( advanced video coding )标准,是 mpeg-4 的第 10 部分. mpeg-4的初衷是将dvd质量的图像码流从 ...
- H.264码流结构解析
from:http://wenku.baidu.com/link?url=hYQHJcAWUIS-8C7nSBbf-8lGagYGXKb5msVwQKWyXFAcPLU5gR4BKOVLrFOw4bX ...
- #《H.264和MPEG-4视频压缩》# 二. 图像质量
为了规范.评价.比较不同的视频通信系统,我们需要建立评价图像质量的准则.视觉效果的测量非常困难,而且并不精确,因为影响结果的因素众多.图像质量的认定是一个主观化的东西,许多影响它的因素都难以给出完整而 ...
- H.264 / MPEG-4 Part 10 White Paper-翻译
1. Introduction Broadcast(广播) television and home entertainment(娱乐) have been revolutionised(彻底改变) b ...
- H.264简介
H.264/MPEG-4 AVC (H.264) 是1995年自MPEG-2视频压缩标准发布以后最新的, 最有前途的视频压缩标准. H.264是由ITU-U和ISO/IEC联合开发组共同开发的最新国际 ...
- H.264视频的RTP荷载格式
Status of This Memo This document specifies an Internet standards track protocol for the Internet ...
- 直播一:H.264编码基础知识详解
一.编码基础概念 1.为什么要进行视频编码? 视频是由一帧帧图像组成,就如常见的gif图片,如果打开一张gif图片,可以发现里面是由很多张图片组成.一般视频为了不让观众感觉到卡顿,一秒钟至少需要16帧 ...
- H.264开源解码器评测
转自:http://wmnmtm.blog.163.com/blog/static/38245714201142883032575/ 要播放HDTV,就首先要正确地解开封装,然后进行视频音频解码.所以 ...
随机推荐
- Mac系统 python2.7中安装MySQLdb
由于要在python2.7上使用到MySQLdb连接数据库,所以要安装MySQLdb,也就是MySQL-Python.安装之前已经有人告诉我,这个东西比较难装,果然我也遇到好多问题,在百度找了半天,发 ...
- Java 设计模式之工厂模式
工厂模式(Factory Pattern)是 Java 中最常用的设计模式之一.这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式. 在工厂模式中,我们在创建对象时不会对客户端暴露创建逻 ...
- 【学习笔记】Linux基础(一):磁盘分区与Linux的安装(以CentOS为例)
一.磁盘分区与Linux的安装(以CentOS为例) 0.说在安装之前 在Linux中,"一切设备皆文件",设备在/dev这个目录下 /dev/sd[a-p] 表示SCSI/SAT ...
- mysql建立高效索引分析
一.如何建立理想的索引? 查询频繁度 区分度 索引长度 覆盖字段 1.1区分度 假设100万用户,性别基本上男/女各为50W, 区分度就低. 1.2长度小 索引长度直接影响索引文件的大小,影响增删改的 ...
- Flutter 入门 --- 内部分享
八月部门给分配的分享任务,由于项目太赶,推迟一个月. 选 Flutter 这个主题,是因为现在它慢慢流行起来了,而我却不了解,故而借此契机,上手试试. 简介 Flutter 是 Google 推出的跨 ...
- virtualbox更新完无法启动的问题(不能为虚拟电脑 Ubuntu 打开一个新任务)
具体错误: 不能为虚拟电脑 Ubuntu 打开一个新任务. VT-x is disabled in the BIOS. (VERR_VMX_MSR_VMXON_DISABLED). 返回 代码: E_ ...
- eclipse导入项目时的一些准备
导入前的工作: 1.因为别人项目的运行环境可能和我们不一样,所以首先要在要导入的项目里面找到.setting文件,修改下面的xml文件,这个文件里面是关于服务器的一些配置的信息,你可以改成与你电脑一样 ...
- asp.net core 3.x 身份验证-3cookie身份验证原理
概述 上两篇(asp.net core 3.x 身份验证-1涉及到的概念.asp.net core 3.x 身份验证-2启动阶段的配置)介绍了身份验证相关概念以及启动阶段的配置,本篇以cookie身份 ...
- 未来JDK中将不再包含JDBC-ODBC桥
今天才发现一个重要问题,java中居然没有这个桥了.让初学者真的泪流了! 甲骨文公司主要技术人员.JDBC规范领导者Lance Andersen今天在博客中称,从Java SE 8(java 1.8版 ...
- 转载 angularJS filter 过滤器
angularjs中的filter(过滤器) 标签: angularjsfilter 源文地址:http://www.ncloud.hk/技术分享/angularjs中的filter-过滤器/ f ...