[翻译]YUV和luminance的劣根性
本文翻译自Charles Poynton的文章”YUV and luminance considered harmful”。该文章的PDF版本可以在此处获得下载,原文的版权归Charles Poynton所有,中译文的翻译版权归本人所有。如需转载,请保留本声明。一切未保留本声明的转载而可能引起的纠纷,本人恕不负责。
===================
这是一篇规范在视频领域精确用词的请求。虽然YUV记号和术语“照度(luminance)”在数字视频领域被广泛应用,但事实上数字视频几乎从未用过Y’UV色彩差分分量空间,也从未直接表征过色彩科学中的照度(luminance)。将这两个词作为常用术语在视频领域使用几乎完全是错误的。在下面这则短文我将解释错误的原因。我急盼视频工程师和电脑图形专家使用正确的术语,而用Y’CbCr和luma称呼则基本都是正确的。
水泥与混凝土
我将在下面用类比的方式展现给大家使用正确术语的重要性。下回你在等公车时,问问和你一起排队的人,“人行道使用什么材料建成的?”也许那些人会给你这样的一个回答–“水泥”。
正确的答案是“混凝土”。水泥是生石灰和黏土的混合物,呈灰色的细粉状。水泥是混凝土的一种成分,其它成分还包括细沙、碎石和水。
在日常生活中,你不需要精确的了解以上这些术语应该用在何处:比如你指着某座桥说它是用“水泥”建造的,人们即会知道你的言下之意。外行们不会因“水泥”而困惑,而有趣的是,专家们也不会。如果某个桥梁监理朝向他的工头喊道:“给我500磅水泥”,工头从语境中就能立即明白监理要的实际上是不是混凝土。但是,如果你向某个建材提供商下500磅水泥的订单,你将显然不会收到500磅混凝土!外行不会因为不严谨的命名而犯难,而专家们也很少遇到麻烦。恰好是那些处于中间层的人们受到了不严谨命名的影响。更严重的是,他们甚至可能自己还没察觉到这其中的错误和歧义,一直使用着呢。
真正的CIE照度
色彩科学的原理告诉我们真正的CIE照度–用Y来表示–是由线性RGB分量的权重和得到的。如果CIE照度要在视频系统中传输,这个系统应该符合“恒定照度定律”。但在视频领域,我们采用是背离这一定律的工程近似方法。这种近似方法在1953年被标准化成NTSC的一部分,并且一直延续应用在当代的视频系统中。该近似方法的luma分量,表示成Y’,是通过非线性(经gamma校正)R’G'B’分量的权重和得到的。其中的非线性传递方程,可以粗略的等效成一个平方和运算。为了获得luma分量,我们使用了色彩科学中的理论系数,但我们使用了一个不同于色彩科学中描述的系统框图:正如我的书(译注:此处指Poynton于03出版的“Digital Video and HDTV Algorithms and Interfaces”一书)中提到的,在视频领域,gamma校正是在权重和运算之前而非之后进行的。运算的次序,实际上与色彩科学中的定义颠倒了。
照度的误解
视频工程师们于上世纪50年代开始觉察到视频量度Y’和CIE定义的照度有着很大的不同,并且认为需要将其和照度区分。他们将Y’这个量描述成“照度的量度表征”。他们虽然使用记号Y,但把它扩充成带上撇号的Y’,用来说明它的非线性。显然“量度表征”这个修饰语过于臃肿,随着时间的流逝,它被人给抹去了。并且同样随着时间的推移,Y’的上撇号也难逃魔掌。可惜的是,没有新词在这段时间被发明出来用以替代“照度”来区分色彩科学中的量度与视频领域量度的不同。当代的大多数视频工程师并不熟悉色彩科学,并且其中的大部分也不理解这个上述两个量度间的区分。今日的工程师常常鲁莽的使用“照度(luminance)”和记号Y,用来指代非线性(gamma校正后)R’G'B’分量的权重和。
这个草率的命名法还影响到许多被广泛使用的权威视频参考文档中,比如Pritchard在1972年发表在SMPTE上的论文。
计算机图形学的先驱Alvy Ray Smith在他探求如何将视频原理改写到计算机图形学时遭遇了“照度(luminance)”一词。Smith显然将这个词的用法与他色彩科学的知识联系到了一起,并且理所当然地,虽然是错误地,得出了视频中“照度(luminance)”与色彩科学中的照度相同的结论。因此,视频YIQ颜色空间被引入了计算机图形学领域,并产生了“它的Y分量和CIE照度一致”的断言。
这个错误的诠释还扩张到了一些权威计算机图形学教科书中。“计算机图形学:原理与应用”一书589页,13.3.3小节,“YIQ颜色模型”中,有这么一句话:
YIQ中的Y分量并不是黄色(Yellow)而是照度(luminance),它和CIE Y原色(primary)有着一样的定义。
(作者注:本段引用来自于原文,黄色指代之后介绍的CMY空间中的Y。CIE Y原色应该更精确地被描述成CIE Y分量。)
如同你已经看到的一样,视频中所谓的Y分量,其实应该更准确地标注为Y’分量,因为它不等同于CIE照度。视频中的Y’分量甚至不能直接从CIE Y分量中推导出,除非已知其它两个色度分量。因此上面引用的文字,是完全错误的。
约30万不同版本和修订版的CG:PP(简写)一书已经发行,这个错误的观念早已蔓延开来。
这个错误也渗入了数字图像处理领域,一本被广泛使用的教材这么写到:
NTSC规范化了一套用于传输三色YIQ值的色彩坐标系统,三色中的Y分量表征了色彩中的照度。
显而易见,视频量度并非三色值系统。根据CIE的定义,三色值系统应该与亮度(intensity)呈比例关系。
这种部分视频工程师中不严谨的命名方式,误导了一代数字图像处理和计算机软硬件工程师。
祭出luma
为了改用luma作为视频领域非线性分量量度的名词,我奔走呼号。luma一词在这之前并无任何意义,归因于它与luminance那一点点形态上的不同,它能让从其它领域来此的读者在草率做出其与luminance关系前多做些深入的调查。
得益于Fred Kolb的帮助,我的请愿成功了:在1993年,SMPTE通过了工程参考手册EG28。EG28定义了luma一词,并且区分了关于luminance的两个互相冲突的解释。虽然一份SMPTE EG和SMPTE标准仍有很大区别,但至少长年的努力得到了官方的认可。现在,已经没有任何借口在视频工程师撰写的论文中使用那个草率”luminance”了。
色彩差值的比例因子
为了表示色彩,luma常伴随着两个色彩差值–或者说chroma–分量。一般而言,这两个差值分量基于的是蓝色分量(B’)与luma的差值以及红色分量(R’)与luma的差值,此处蓝色分量、红色分量和luma分量都经过了gamma校正,即用B’-Y’以及R’-Y’获得。以这两个值为基数,在不同的应用场合使用不同的比例因子以得到最终的chroma分量。Y’PbPr的比例因子为模拟分量视频信号优化,Y’CbCr的比例因子则为诸如422母带视频,JPEG和MPEG等数字分量视频信号的应用做了优化。柯达的PhotoYCC(Y’C1C2)使用了为胶片记录颜色优化的比例因子。Y’UV和Y’IQ则为NTSC和PAL这类复合视频信号做了比例因子的优化。
BT.601标准中规定了分量数字视频信号中Y’CbCr的比例因子。Y’CbCr的chroma分量在实际应用中常常经过子采样产生422,420,411三种方案。
正确的Y’UV色域伸缩应该在形成分量NTSC或PAL视频信号的中间步骤执行。而并不适合于当分量仍然保持分离时的Y’UV伸缩工作。但是,考虑到Y’UV命名法本身就很不严谨地被使用,并且时常,特别是在计算领域,被指代任何B’-Y’和R’-Y’的伸缩算法。
DDR(数字磁盘记录仪)一般而言都具有通过局域网传输文件的能力。Abekas引入了使用.yuv作为这类文件扩展名的惯例。但是至少在Abekas的设备中,比例因子实际针对的处理对象是Y’CbCr。使用.yuv的扩展名反而恶化了YUV命名方式带来的误解。
子采样一般只在数字分量视频中出现,也就是说它处理的对象是Y’CbCr色彩空间。子采样并不适用于Y’UV色彩空间。如果你看到某个系统被描述成Y’UV 4:2:2,你将会陷入两难困惑。也许写下这种描述的人并不熟悉分量视频的原理,但是比例因子的选择是正确的。然,你必须清晰的认识到也有可能设计这个系统的工程师使用了错误的比例因子!如果使用了错误的公式,色彩表达的准确性将会受到影响;但这个却很难被检测出。
正确的Y’CbCr伸缩在Motion-JPEG和MPEG标准中时常见到。但是,计算机领域静态图片格式JPEG/JFIF的Y’CbCr伸缩常常使用的是全域(full range)luma和chroma幅度,没有上下动态余量(译注16-235)。其中chroma的幅度是luma幅度的245/255。这种Y’CbCr的伸缩实际上与模拟信号中Y’PbPr的方式几乎一致,但是却很遗憾地被描述成Y’CbCr了。现在甚至连Y’CbCr也有歧义了!我希望正确的Y’CbCr伸缩算法能在下一代JFIF中加入进来,使得在计算机中压缩后的静态图片和视频能无缝且不被转换过程所影响其质量的结合起来。
除在复合信号母带视频的编解码过程中尚能见到仅有的一些踪迹外,Y’IQ色域编码是就要被淘汰了的一种方式。
结论:一个请求
在视频领域使用照度(luminance)来标识Y’分量就和在描述桥梁建筑的主要材料时使用水泥而不是混凝土相同,外行并不关心,专家们自由自在,但出于中间层的人们吃了最大的苦。在视频领域,吃苦的就是那些在计算机内重新实现视频技术算法的程序源和工程师。他们最容易因为这些粗心的选词而遭殃。终端用户也因此受影响,因为用户间图像的交换是缺乏这种专家的保障的。
因此,我力劝视频工程师和计算机图形学专家避免使用YUV和luminance,而应该使用正确的术语,Y’CbCr和luma。



















最近评论