YUV

YUV:

YUV是通常用作彩色图像流水线的一部分的颜色编码系统。它使用人类感知而不是“直接”RGB表示法以人类图像的形式对彩色图像或图像进行编码。 Y'UV标准将符合Y'UV标准。

术语Y'UV,YUV,YCbCr,YPbPr等的范围有时是不明确和重叠的。历史上,术语YUV和Y'UV用于电视系统中的颜色信息的特定模拟编码,而YCbCr用于适合于视频和静止图像压缩以及作为MPEG和JPEG传输的颜色信息的数字编码。今天,术语YUV通常用于计算机行业来描述使用YCbCr编码的文件格式。

Y'UV模型根据亮度(Y')和两个色度(UV)分量定义颜色空间。 Y'UV彩色模型用于PAL复合彩色视频(不包括PAL-N)标准。以前的黑白系统仅使用亮度(Y')信息。彩色信息(U和V),通过副载波单独添加,以便黑白接收机仍能够以接收机本机黑白格式接收和显示彩色图像。

Y'代表亮度分量(亮度),U和V代表色度(色彩)分量;亮度用Y表示,亮度用Y'表示 - 主符号(')表示伽马压缩,[1]其中“亮度”表示物理线性空间亮度,而“亮度”是(非线性)感知亮度。

模拟视频组件中使用的YPbPr色彩模型及其数字视频中使用的数字版本YCbCr或多或少地来源于它,有时称为Y'UV。 (CB / PB和CR / PR在蓝色 - 黄色和红 - 青色轴上偏离灰色,而U和V分别是蓝色 - 亮度和红色 - 亮度等级)。模拟NTSC电视中使用的Y'IQ色彩空间广播系统与其相关,尽管以更复杂的方式。 YDbDr色彩空间用于模拟SECAM和PAL-N电视广播系统,因此它们是相关的。

至于语源学,Y,Y',U和V不是缩写。字母Y用于亮度可以追溯到XYZ原色的选择。这自然适用于使用亮度相同的字母(Y'),这接近感知均匀的亮度相关性。同样,选择U和V来区分U和V轴与其他空间中的轴以及x和y色度空间。请参阅下面的公式或比较数学的历史发展。[2] [3] [4]

 

历史

当工程师想要黑白基础设施中的彩色电视时,发明了什么?[5]他们正在使用与黑白(B&W)电视兼容的信号传输方法。亮度分量已经作为黑白信号存在;他们添加了紫外线信号作为解决方案。

因为U和V是色差信号,所以在R和B信号上选择色度的UV表示。换句话说,U和V信号告诉电视改变某个像素的颜色而不改变它的亮度。或者U和V信号告诉显示器以另一种为代价制造一种颜色。 U和V值越高(或负值越低),像素获得的饱和度越高(彩色)。 U和V值越接近零,红色,绿色和蓝色灯光越好。这是使用色差信号的好处,它不是告诉一个颜色有多少,而是多于绿色或蓝色。在这种情况下,当U和V信号为零或不存在时,它将只显示灰度图像。如果使用了R和B,即使在B&W场景中,它们也将具有非零值,需要全部三个数据携带信号。彩电早期的电视机,由于旧的黑白电视信号没有信号,这意味着彩电将只显示它作为B&W电视开箱即用。另外,黑白接收机可以接收Y信号并忽略U和V彩色信号,使Y'UV向后兼容所有现有的黑白设备,输入和输出。如果彩色电视标准没有使用色差信号,它会使B&W广播中出现色彩,或者需要额外的电路将B&W信号转换为彩色。有必要为色度信道分配较窄的带宽,因为没有额外的带宽可用。如果某些亮度信息通过色度信道到达,则B&W分辨率会受到影响。[6]
转换为RGB
SDTV与BT.601

YUV信号通常由RGB(红色,绿色和蓝色)源创建。将R,G和B的加权值相加以产生Y',Y'是总体亮度或亮度的量度。 U和V被计算为Y与B和R值之间的缩放差异。

BT.601定义了以下常量:

 

YUV根据RGB计算如下:

 

得到的Y',U和V的范围分别为[0,1],[-Umax,Umax]和[-Vmax,Vmax]。

反转上述转换将Y'UV转换为RGB:

 

等效地,将常量的值代入并将它们表示为矩阵给出了BT.601的这些公式:

 

HDTV与BT.709
HDTV Rec。709(非常接近SDTV Rec。601)与UHDTV Rec。2020相比

用于HDTV的ATSC决定改变基本值WR和WB相比于SDTV系统先前选择的值。对于由建议提供HDTV合成值。709这一决定进一步影响对基体为Y'UV↔RGB因此,其成员值略有不同。其结果是,与SDTV和HDTV有反弹的基因两个不同的表示任何的RGB三元Y'UV可能:一个SDTV Y'UV和HDTV Y'UV之一。这意味着详细做当SDTV和HDTV之间直接转化,亮度(Y“)的信息是大致相同的,但色度的表示(U&V)信道的信息需要转换。仍然覆盖CIE 1931色彩空间,Rec.709色彩空间几乎与Rec.601相同,覆盖率为35.9%。[7]相比之下,2020年的UHDTV覆盖面积非常大,并且会进一步看到它自己的YUV / Y'UV矩阵集。

BT.709定义了这些重量值:

 

BT.709的转换矩阵和公式如下:

 

笔记
 用于计算Y'(矩阵的顶行)的权重与Y'IQ颜色空间中使用的权重相同。
对于U和V,产量为0.黑色,RGB =(0,0,0)产生YUV =(0,0,0)。 白色,RGB =(1,1,1),产生YUV =(1,0,0)。
这些公式传统上用于模拟电视和设备; 数字设备搜索HDTV和数码摄像机使用Y'CbCr。

    

 

[-1,1]范围内的UV平面

 

数值近似值

在开发近SIMD浮点处理器之前,大多数RGB→Y'UV的数字实现使用整数运算,特别是定点逼近。近似意味着所使用数字的精确度受到限制,因此精确地损失了时间量提高了计算速度。

在下面的例子中,运算符“a”b {\ displaystyle a \ gg b} a \ gg b“右移b个二进制位置。为了澄清,变量使用两个后缀字符:“u”用于无符号最终表示,“t”用于缩小的中间值。以下示例仅适用于BT.601。 BT.709或任何其他可比标准。

Y'值通常被移位并且被缩放到范围[16,235],而不是使用[0,255]的全部范围(被称为全摆幅或“PC水平“)。这种做法在SMPTE-125M中被标准化,以适应由于滤波引起的信号过冲(“振铃”)。值235容纳最大的255-235 = 20,或20 /(235-16)= 9.1%黑色到白色过冲的,所有这是的约8.9%比理论最大过冲(吉布斯现象)略大最大的一步。脚趾空间较小,仅允许16/219 = 7.3%的超调,这比理论最大超调量8.9%小。这就是为什么16被添加到Y'以及为什么基本变换中的Y'系数总和为220而不是255. [8] U和V的值,其可以是正的或负,都与128相加,以使它们总是正的,给人一种范围16至240工作室U和V(这些范围中的视频编辑和制作重要的,因为使用了错误的黑人和白人,或低对比度的图像。)

BT.601

为了获得SDTV / BT.601的Y'UV的传统“演播室摆动”8比特表示,可以使用以下操作:

1.从8位RGB到16位值的基本转换(Y':无符号,U / V:带符号,矩阵值四舍五入到所需的Y'范围[16..235]和U / V 达到[16..240]的范围):

 

2.用四舍五入(“+128”)(Y':无符号,U / V:带符号)缩小(“>> 8”)为8位:

 

3.为这些值添加一个偏移量以消除任何负值(所有结果均为8位无符号):

 

BT.601全面展开

为了获得SDTV / BT.601的Y'UV的“全速”8比特表示,可以使用以下操作:

1.从8位RGB到16位值的基本转换(Y':无符号,U / V:有符号,矩阵值四舍五入到每个[0..255]的Y'UV范围 而不会发生溢出):

 

2.使用舍入(“+128”)(Y':无符号,U / V:带符号)缩小(“>> 8”)为8位值:

 

3.为这些值添加一个偏移量以消除任何负值(所有结果均为8位无符号):

 

一般的亮度/色度系统

亮度/色度系统搜索Y'UV的主要优势,以及它相对的Y'IQ和YDbDr,是因为它们与黑白模拟电视(主要归功于Georges Valensi的工作)兼容。 Y'通道保存黑白相机记录的所有数据,因此它产生适合在旧的单色显示器上接收的信号。在这种情况下,U和V被简单地丢弃。如果显示颜色,则可以解码原始RGB信息。

YUV的另一个优点是可以放弃一些信息以减少带宽。人眼对颜色的空间敏感度相当小:亮度通道的准确度比其他两个更明显。了解这种人为的缺点,NTSC和PAL标准大大降低了色度通道的带宽。 (带宽处于时间域,但随着图像被扫描出来,这转换为空间域。)

因此,所得到的信号可能被“压缩”。在NTSC(Y'IQ)和PAL制式中,色度信号的带宽明显小于亮度。 NTSC的早期版本正在迅速变得越来越流行。只保留与亮度信息相比较的水平分辨率(术语4:2:2色度子采样),并且通常垂直分辨率减半(给出4:2:0)。 4:1:1(当垂直分辨率为全分辨率时,水平分辨率分为四等分)与亮度分辨率相比,色彩分辨率高四分之一。今天,只有高端设备处理使用4:4:4的色度子采样,亮度和颜色信息的分辨率相同。

I和Qusks是根据人类视觉而选择的,其中一种是最小的,另一种是偶然的(90度)。然而,真正的I和Q解调更复杂,需要两条模拟延迟线,而NTSC接收机很少使用它。

然而,这是本发明的类比,其中使用了模拟设备(包括传送数字信号的RCA连接器)是YUV,YIQ,甚至是CVBS)。此外,NTSC和PAL是以使带宽高的色度和亮度信号相互混合的方式呈现的,以保持与黑白电视设备的向后兼容性,这导致点爬行和交叉色彩伪影。当NTSC标准在20世纪50年代创建时,情况并非如此。然而,今天的现代电视能够显示比这些有损信号中包含的信息更多的信息。为了跟上新显示技术的能力,从20世纪70年代后期开始尝试在传输图像时保留更多的Y'UV信号,例如SCART(1977)和S-Video(1987)连接器。

代替Y'UV,Y'CbCr被用作(数字)通用视频压缩算法(如MPEG-2)的标准格式。数字电视和DVD以MPEG-2格式保存压缩视频流,MPEG-2格式使用完整的Y'CbCr色彩空间,保留已建立的色度二次采样过程。专业CCIR 601数字视频格式还采用Y'CbCr,色度采样率为4:2:2,主要用于兼容以前的模拟视频标准。这个流可以很容易地混合到任何需要的输出格式中。

YUV不是绝对的色彩空间。 RGB着色剂用于显示信号。因此,如果使用标准的RGB着色剂(即固定的一组主色度,或者特定的红色,绿色和蓝色的组),则表示为Y'UV的值是可预测的。

此外,RGB(无论是BT.601还是Rec.709)的颜色和亮度(称为色域)范围小于YUV允许的颜色和亮度范围。由于上述公式可能会产生“无效的”RGB值 - 即低于0%或远远超过该范围的100%的值(例如,从Y'UV(或Y'CbCr)转换为RGB),这可能非常重要。在电视和高清内容的标准16-235亮度范围(和16-240色度范围)之外,或在PC上标准清晰度以外的0-255之外)。这些通常被“剪辑”(即限制)到受影响频道的有效范围。这改变了颜色的色调,这是非常不希望的,所以通常认为对不合适的颜色进行去饱和更好。同样,当RGB在相同的位深度时,几个RGB颜色变成相同的YUV颜色,导致信息丢失。

Y'CbCr的关系

YUV通常用作YCbCr的术语。但是,它们是不同比例因子的完全不同的格式。[10]

尽管如此,标准案例中它们之间的关系很简单。尤其是,Y通道在两者中都相同,Cb和U都与(B-Y)成比例,并且Cr和V都与(R-Y)成比例。
抽样类型

为了获得数字信号,YUV图像可以以几种不同的方式进行采样;请参阅色度子采样。
Y'UV和RGB之间转换

RGB文件通常以每像素8,12,16或24位编码。在这些例子中,我们假定每像素24位,写为RGB888。标准的字节格式是:

r0,g0,b0,r1,g1,b1,...

YUV文件可以按每个像素12,16或24位编码。常用格式为Y'UV444(或YUV444),YUV411,Y'UV422(或YUV422)和Y'UV420p(或YUV420)。 Y之后的撇号被省略,YUV420p之后的“p”也被省略。就实际文件格式而言,YUV420是最常见的,因为数据更容易压缩,文件扩展名通常是“.YUV”。

数据速率和采样之间的关系(A:B:C)由Y与U和V通道之间的比率定义[11] [12]

要从RGB转换到YUV或后面,最简单的方法就是使用RGB888和YUV444。对于YUV411,YUV422和YUV420,首先需要将字节转换为YUV444。

 

Y'UV444转换为RGB888

函数[R,G,B] = Y'UV444toRGB888(Y',U,V)将YUV格式转换为简单的RGB格式。

Y'UV444格式的RGB转换公式也适用于YUV420(或YUV422)的标准NTSC电视传输格式。 对于YUV420,由于每个U或V采样用于表示形成正方形的4个Y采样,因此可以使用适当的采样方法。 有关更多详细信息,请参阅本文底部的420格式演示。

这些公式基于NTSC标准:

 

在较老的非SIMD架构中,浮点运算比使用定点算法慢得多,所以另一种公式是:[13]

 

使用系数C,D和E从Y'UV到RGB的转换并注意到钳位()版本):

 

注意:上述公式实际上是暗示的YCbCr。 尽管这里使用了YUV这个术语,但应该指出,YUV和YCbCr在严格的方面并不完全一样。

ITU-R版本的公式不同:

 

ITU-R YCbCr标准(每通道8位)到RGB888的整数运行:

 

Y'UV422转换为RGB888

     输入:读取Y'UV的4个字节(u,y1,v,y2)
     输出:写入6个字节的RGB(R,G,B,R,G,B)

 

使用这些信息可以将其解析为常规Y'UV444格式以获得2个RGB像素信息:

 

因此Y'UV422可以用YUY2 FourCC格式代码表示。 这意味着将在图像中处理的每个巨像素(4个字节)中定义2个像素。

 

Y'UV411到RGB888转换

     输入:读取Y'UV的6个字节
     输出:写入12个字节的RGB

 

所以结果是6个字节的4个RGB像素值(4 * 3字节)。这意味着将传输数据的大小减少到一半,质量下降。
Y'UV420p(和Y'V12或YV12)转换为RGB888

Y'UV420p是一种平面格式,这意味着Y',U和V值被分组在一起而不是散布在一起。其原因是通过将U和V值分组在一起,图像变得更加可压缩。当以Y'UV420p格式给出一组图像时,所有的Y'值先出现,然后是所有的U值,最后是所有的V值。

Y'V12格式与Y'UV420p基本相同,但它具有U和V数据切换:Y值后跟V值,U值保持不变。来自适当位置的U和V值,Y'UV420p和Y'V12都可以使用相同的算法进行处理。

与大多数Y'UV格式一样,由于有像素,所以有很多Y'值。在X等于高度乘以宽度的情况下,阵列中的前X个索引是对应于每个单独像素的Y'值。但是,U和V值只有四分之一。 U和V值相互对应。在Y'值之后,下一个X / 4索引是每个2×2块的U值,并且之后的下一个X / 4索引是应用于每个2×2块的V值。

与以前的格式相比,将Y'UV420p转换为RGB是一个更复杂的过程。可以使用以下方法查找Y',U和V值:

 

 

Y'UV420分别以顺序模块编码。 为每个像素存储Y'值,然后针对每个2×2方块像素存储U值,并且最后针对每个2×2块存储V值。 对应的Y',U和V值在上图中使用相同的颜色显示。 从设备逐行读取字节流,Y块位于位置0,位于x×y位置的U块(在本例中为6×4 = 24),V块位于位置x ×y +(x×y)/ 4(这里,6×4 +(6×4)/ 4 = 30)。
Y'UV420sp(NV21)到RGB转换(Android)

此格式(NV21)是Android相机预览中的默认图片格式。 YUV 4:2:0平面图像,其中8位Y采样,然后是带有8位2x2二次采样色度采样的交错V / U平面[14]。

Android上用于转换YUVImage像素的C ++代码:[15]


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值