视频图像中的YCbCr格式是怎么来的?

2024-04-11 19:04

本文主要是介绍视频图像中的YCbCr格式是怎么来的?,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

颜色模型总述
想要知道视频图像中的YCbCr格式是怎么来的,首先简单里了解下述几种的颜色模型包括:
CIE RGB 颜色模型:基于人眼视觉感知三原色理论,CIE 通过大量实验数据建立 RGB 颜色模型,标准化了 RGB 表示。
CIE XYZ 颜色模型:为解决 RGB 模型中,与负光混合所带来的种种问题,CIE 从数学上定义了三种标准基色 XYZ,形成了 CIE XYZ 颜色模型。
NTSC YIQ 颜色模型:在模拟电视时代,RGB 工业显示器要求一幅彩色图像由分开的 R、G、B 信号组成,而电视显示器则需要混合信号输入,为了实现对这两种标准的兼容,NTSC 基于 XYZ 模型制定了 YIQ 颜色模型,实现了彩色电视和黑白电视的信号兼容。
PAL YUV 颜色模型:为了解决 NTSC YIQ 的组合模拟视频信号中分配给色度信息的带宽较低而影响了图像颜色质量的问题,PAL 引入了 YUV 颜色模型,支持用不同的采样格式来调整传输的色度信息量。
ITU-R YCbCr 颜色模型:进入数字电视时代,ITU-R 为数字视频转换制定了 YCbCr 颜色模型,成为我们现在最常使用的颜色模型。
颜色建模的背景
颜色模型:在某种特定上下文中对颜色的特性和行为进行解释的方法。没有哪种颜色模型能解释所有颜色问题,因此需要使用不同模型来帮助说明看到的不同的颜色特征。
实际应用,针对某一类型应用场景,人们希望尽量做到颜色模型统一和兼容,所以经历了一系列颜色建模和标准制定的过程。下图是颜色标准制定的关键节点图:
在这里插入图片描述
CIE 是国际照明协会的简称,是最早采用数学方式来定义颜色模型的。CIE 是从 1920 年代后期 W. David Wright(Wright 1928)和 John Guild(Guild 1931)做一系列实验中建立了初始的RGB颜色模型,且标准了RGB的表示,即为CIE RGB。
接下来,从 CIE RGB 开始依次介绍 CIE XYZ、NTSC YIQ、PAL YUV 等颜色模型,最后到 ITU-R YCbCr 结束,就来到了目前在视频开发中最常接触的 YCbCr 模型。希望在这趟历程里能帮你梳理清楚『颜色』这个概念的发展脉络。
CIE RGB 颜色模型
当光由两个或多个具有不同主频率的光源混合而成时,我们可以改变各个光源的强度来生成一系列其他颜色的光,这是构造颜色模型加色模式。
==其中用来生成其他颜色光源的色彩称为基色。==通过基色可以产生的所有颜色的集合称为该颜色模型的颜色范围(色域)。如果两种基色混合则生成白色光,就称它们为互补色,比如红色和青色、绿色和品红、蓝色和黄色都是互补色。
在基本颜色中,没有哪一组集合能组合生成所有可见的颜色。但三种基色对多数应用来说是够用的,且不包含在指定基色集的颜色范围中的颜色仍可使用扩充方法进行描述。RGB 即为一种加色模式,多种基色的量加在一起生成另一种颜色。
使用RGB表示时,要注意的是,在 光谱500 nm 附近的颜色需要从蓝光和绿光的混合光中再『减去』对应的红光得到(红光曲线在 500 nm 附近是负值)。由于这个『负光』的效果在 RGB 彩色显示器无法实现,所以 RGB 彩色显示器不能显示 500 nm 左右的颜色。
CIE XYZ 颜色模型
因为 RGB 模型中与『负光』混合所带来的种种问题,CIE 从数学上定义了三种标准基色 XYZ(是理论上的颜色,而非实际的颜色),形成了『CIE XYZ 颜色模型』。
此外,还定义了一组输出全部为正值的 『XYZ 颜色匹配函数』,指定描述任何一种光谱颜色所需要的各基色分量,XYZ 颜色匹配函数是基于 RGB 三基色颜色匹配函数的线性组合。
CIE XYZ 颜色模型是定义各种颜色的国际标准,并且使用 CIE 基色还能避免颜色负值匹配问题,以及选择一组实际基色有关的其他问题。
在 XYZ 颜色空间中任何颜色都可以表示为三个基色的单位向量 的加性组合,即:

在这里插入图片描述

其中 C(λ) 表示彩色光的亮度(luminance),对应颜色的亮度(brightness)特征。X、Y、Z 则为三基色比例系数。XYZ 颜色模型表示颜色时满足以下 3 个条件:
XYZ 颜色模型表示颜色时满足以下 3 个条件:
X、Y、Z 三色比例系数大于 0;
Y 的数值正好表示光的亮度值;
当 X = Y = Z 时,表示标准的白光。

NTSC YIQ 颜色模型
RGB 工业显示器要求一幅彩色图像由分开的 R、G、B 信号组成,而电视显示器则需要混合信号输入,为了实现对这两种标准兼容,NTSC(美国国家电视系统委员会)制定了 『YIQ 颜色模型』,主要优点是可实现对彩色电视和黑白电视兼容,即可用黑白电视收看彩色电视信号。
YIQ 颜色模型是以 CIE XYZ 颜色模型为基础定义,其参数 Y 与 XYZ 模型中参数 Y 相同,为图像的亮度信息。在没有色度情况下,Y 就对应黑白图像,或者说黑白电视只接收 Y 信号,参数 I 包含有橙-青颜色信息,提供鲜艳色彩的明暗度,参数 Q 包含绿-品红颜色信息。
NTSC 组合颜色信号的设计允许黑白电视机从一幅占 6 MHz 带宽的图像信息中提取所需的灰度信息,因此,YIQ 信息必须在 6 MHz 带宽限制下编码。亮度值和色度值用不同模拟信号进行编码,这样只是在原来的带宽内增加了颜色信息,黑白电视机仍然可以按原来的方式取得原样的亮度信号。
亮度信息(Y 值)以调幅的方式用带宽约为 4.2 MHz 的载波传输;色度信息(I、Q 值)被结合在一起用带宽约为 1.8 MHz 的载波传输。参数名称 I、Q 指的就是用来在载波上编码颜色信息的调制方法。
PAL YUV 颜色模型
上面提到,因为NTSC YIQ 组合模拟视频信号中分配给色度信息带宽较低,所以 NTSC YIQ 图像颜色质量会受一些影响。当开始追求更高图像品质时,需改善这个问题,诞生了多种 YIQ 编码变体来提高视频传输的颜色质量。『YUV 颜色模型』就是一种变体,它为 PAL 广播制式提供视频传输的组合颜色信息,它可用不同采样格式来调整传输的色度信息量。
YUV 颜色模型中用亮度、色度来表示颜色。它的亮度信息和色度信息是分离的,其中 Y 表示亮度通道,U 和 V 则表示色度通道。如果只有 Y 信息,没有 U、V 信息,表示的图像就是灰度图像。YUV 常用在各种影像处理场景中。YUV 在对照片或视频编码时,考虑到人眼对亮度信息的敏感度高于色度信息,允许降低色度的带宽。
ITU-R YCbCr 颜色模型
YCbCr 颜色模型是目前广泛使用的一种 YUV 变体,它是为数字视频转换而设计的颜色模型。YCbCr 由 ITU-R(国际电信联盟无线电通信部门,前身是国际无线电咨询委员会 CCIR)在 ITU-R BT.601 首次制定,并在后续的 ITU-R BT.709、ITU-R BT.2020 等标准中都有涉及。
ITU-R BT.601/709/2020 系列标准,规定了彩色视频转换成数字图像时使用的采样率,RGB 和 YCbCr 两个彩色模型之间的转换关系等,它们分别面向标清电视(SDTV)、高清电视(HDTV)、超清电视(UDTV)应用场景。各个标准下的颜色范围如下:
在这里插入图片描述
结论
下面对图像数字描述过程中的颜色建模的发展历程总结如下:
基于人眼视觉感知三原色理论,CIE 通过大量实验数据建立了 RGB 颜色模型,标准化了 RGB 表示 → 为解决 RGB 模型中与负光混合所带来的种种问题,CIE 从数学上定义了三种标准基色 XYZ,形成了 CIE XYZ 颜色模型 → 在模拟电视时代,RGB 工业显示器 要求一幅彩色图像由分开的 R、G、B 信号组成,而电视显示器则需要混合信号输入,为了实现对这两种标准的兼容,NTSC 基于 XYZ 模型制定了 YIQ 颜色模型,实现了彩色电视和黑白电视信号兼容 → 为解决 NTSC YIQ 的组合模拟视频信号中分配给色度信息的带宽较低,而影响了图像颜色质量的问题,PAL 引入了 YUV 颜色模型,支持用不同的采样格式来调整传输的色度信息量 → 进入数字电视时代,ITU-R 为数字视频转换制定了 YCbCr 颜色模型,成为我们现在最常使用的颜色模型。

这篇关于视频图像中的YCbCr格式是怎么来的?的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/894919

相关文章

Python批量调整Word文档中的字体、段落间距及格式

《Python批量调整Word文档中的字体、段落间距及格式》这篇文章主要为大家详细介绍了如何使用Python的docx库来批量处理Word文档,包括设置首行缩进、字体、字号、行间距、段落对齐方式等,需... 目录关键代码一级标题设置  正文设置完整代码运行结果最近关于批处理格式的问题我查了很多资料,但是都没

基于Python开发PDF转Doc格式小程序

《基于Python开发PDF转Doc格式小程序》这篇文章主要为大家详细介绍了如何基于Python开发PDF转Doc格式小程序,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 用python实现PDF转Doc格式小程序以下是一个使用Python实现PDF转DOC格式的GUI程序,采用T

使用Python开发一个图像标注与OCR识别工具

《使用Python开发一个图像标注与OCR识别工具》:本文主要介绍一个使用Python开发的工具,允许用户在图像上进行矩形标注,使用OCR对标注区域进行文本识别,并将结果保存为Excel文件,感兴... 目录项目简介1. 图像加载与显示2. 矩形标注3. OCR识别4. 标注的保存与加载5. 裁剪与重置图像

Python如何实现读取csv文件时忽略文件的编码格式

《Python如何实现读取csv文件时忽略文件的编码格式》我们再日常读取csv文件的时候经常会发现csv文件的格式有多种,所以这篇文章为大家介绍了Python如何实现读取csv文件时忽略文件的编码格式... 目录1、背景介绍2、库的安装3、核心代码4、完整代码1、背景介绍我们再日常读取csv文件的时候经常

MySql死锁怎么排查的方法实现

《MySql死锁怎么排查的方法实现》本文主要介绍了MySql死锁怎么排查的方法实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录前言一、死锁排查方法1. 查看死锁日志方法 1:启用死锁日志输出方法 2:检查 mysql 错误

Java如何获取视频文件的视频时长

《Java如何获取视频文件的视频时长》文章介绍了如何使用Java获取视频文件的视频时长,包括导入maven依赖和代码案例,同时,也讨论了在运行过程中遇到的SLF4J加载问题,并给出了解决方案... 目录Java获取视频文件的视频时长1、导入maven依赖2、代码案例3、SLF4J: Failed to lo

使用C++将处理后的信号保存为PNG和TIFF格式

《使用C++将处理后的信号保存为PNG和TIFF格式》在信号处理领域,我们常常需要将处理结果以图像的形式保存下来,方便后续分析和展示,C++提供了多种库来处理图像数据,本文将介绍如何使用stb_ima... 目录1. PNG格式保存使用stb_imagephp_write库1.1 安装和包含库1.2 代码解

Python实现多路视频多窗口播放功能

《Python实现多路视频多窗口播放功能》这篇文章主要为大家详细介绍了Python实现多路视频多窗口播放功能的相关知识,文中的示例代码讲解详细,有需要的小伙伴可以跟随小编一起学习一下... 目录一、python实现多路视频播放功能二、代码实现三、打包代码实现总结一、python实现多路视频播放功能服务端开

Python实现视频转换为音频的方法详解

《Python实现视频转换为音频的方法详解》这篇文章主要为大家详细Python如何将视频转换为音频并将音频文件保存到特定文件夹下,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1. python需求的任务2. Python代码的实现3. 代码修改的位置4. 运行结果5. 注意事项

Rsnapshot怎么用? 基于Rsync的强大Linux备份工具使用指南

《Rsnapshot怎么用?基于Rsync的强大Linux备份工具使用指南》Rsnapshot不仅可以备份本地文件,还能通过SSH备份远程文件,接下来详细介绍如何安装、配置和使用Rsnaps... Rsnapshot 是一款开源的文件系统快照工具。它结合了 Rsync 和 SSH 的能力,可以帮助你在 li