MCPLive > 杂志文章 > 重现你所丢失的细节 用好你自己的HTPC

重现你所丢失的细节 用好你自己的HTPC

2009-01-07anjel 星星《微型计算机》2009-01

如果电视机出现了灰阶丢失的情况,并不一定是电视机本身的问题,也很有可能是电视机不兼容计算机的色彩空间和灰阶模式造成的。如果你不了解色彩空间,那么,本文会给你答案。

当我们用HTPC连接平板电视机时,你有没有发现图像的暗部和亮部细节损失严重?而且在调节之后,图像的细节都无法还原,难道我们当初千挑万选的电视机灰阶显示能力这么差?其实,这可能并不是你的电视机出现了问题,而是你的HTPC和电视机之间因为色彩空间不兼容的原因造成的。

了解色彩空间

目前,数字视频信号有RGB信号和YCbCr(YUV、亮彩、色差)信号两种,通常也叫做色彩空间,它们对色彩的表示方法有所区别。

我们可以在3维立方体中通过绘制三原色(即红色、绿色和蓝色,简写为RGB)的构成比率图以表示各种颜色,其中黑色位于原点,而白色则位于原点的斜对角。得到的立方体就是著名的RGB色彩空间,它主要用于计算机设备对色彩的描述(PC Level)。


RGB色彩空间

而另一种色彩空间YCbCr是采用一个亮度信号(Y)和两个色差信号(B-Y、R-Y)相组合,称为色差信号,主要由电视机等消费类产品(Studio Level)采用。因为当时在黑白画面过渡到彩色画面的历程中,为了兼容黑白画面(B-Y和R-Y信号为零),电视台除了传送原来的亮度信号Y以外,再用次载波(3.58MHz)来传输色彩信号B-Y、R-Y,而不是RGB三原色信号。

而YCbCr和RGB空间是可以相互转换的,可用如下的方程将YCbCr空间中的色彩转换为RGB色彩空间中的色彩:

R’=1.164*(Y-16)+1.596*(Cr-128)
G’=1.164*(Y-16)-0.813*(Cr-128)-0.392*(Cb-128)
B’=1.164*(Y-16)+1.596*(Cr-128)

灰阶模式也有两种

Full Range

视频信号由模拟转换为数字信号的过程中涉及到了采样技术,RGB信号在处理图像时,每个像素的色彩由3个分别对应三原色的8位二进制数字来确定,28=256个灰阶。比如(255,255,255)代表白色,(255,0,0 )代表红色,那么灰阶总共是0~255一共256个,通常被称作Full Range。

Limited Range

这种信号格式的每个像素记录需要24位,所需的存储空间和数据量毫无疑问比较大。而YCrCb信号如果采用13.5MHz采样频率得到的8位或10位PCM信号则称为4∶4∶4,也有256个灰阶。但是这样的话数据量太大了。研究表明,人眼察觉到的光亮度信息(Y)的60%至70%来自绿色光。

红色和蓝色信道实际上只是亮度信息的复制,因此这些重复信息完全可以去除掉。为了减少数据储存空间和数据传输带宽,可以用较低的采样频率6.75MHz来采样B-Y和R-Y信号,称做4∶2∶2,也就是消费电子的Studio Level。

在Studio Level设备中,8位YCbCr系统都规定亮度的取值范围介于16至235之间,而B-Y和R-Y信号的取值范围介于16至240之间。YCbCr 4∶2∶2色差信号的灰阶是16~235,通常被称作Limited Range,而RGB信号也有两种采样频率和灰阶,在PC Level系统中是0~255,而在Studio Level消费电子中则是16~235。

灰阶出现问题

那么,视频信号有两种不同的色彩空间和灰阶模式,如果交叉互连时,灰阶就有可能出现问题。如果不同色彩空间的设备之间进行了连接,那么灰阶信号就可能因为不匹配而丢失,造成画面的细节缺失。而不同灰阶模式的设备相连也可能出现灰阶丢失的问题。我们平时所使用的显卡或者PC显示器,它们都是PC Level的设备,采用Full Range灰阶。而DVD播放器、投影机、平板电视等则是Sutio Level设备,采用Limited Range灰阶。不同设备之间的互相连接,对灰阶的处理情况可能会有不同。

PC对色彩空间的处理

如果你使用的是电脑显示器连接PC,那么毫无疑问,你的显示器是PC Level设备,可以显示完整的0~255灰阶。但是这个情况只是在使用桌面输出的时候,诸如DisplayX、Displaymate等测试软件时能够看到完整的灰阶,如果播放Studio Level的DVD影碟、高清视频文件时,灰阶又可能是另一回事。那么,Studio Level的视频素材在PC和PC显示器上播放的时候也要经过处理吗?

答案是肯定的。Studio Level标准里,黑色为16,白色则为235,低于16的称为Blacker Than Black(BTB),高于235的称为Peak White。编码时数字16对应视频电压0mV,是画面黑的地方,这是日本NTSC制式采用的基准黑电平,235对应亮度电压714mV,这是亮的地方。向下留有15级Footroom(下动态余量),向上留有19级Headroom(上动态余量)。

如果DVD盘片记录的信号是16,那么在电视机中则被还原成黑色,低于16的信号则不被显示,高于235的Peak White信号则做削波处理,还原为白色。Studio Level的信号如果在PC中不处理,16~235信号就会出现发白的颜色。

PC在播放影片的时候,一共经过了以下四个流程:来源影片→解码器→显卡→显示器

其实我们只需要一个步骤把灰阶从16~235转换到0~255就可以了。但是,为了解决Studio Level的灰阶问题,这四个部分都有可能出现在灰阶部分进行处理的混乱情况。所以,后影片出来的播放效果就有可能惨不忍睹。在为影片转码压制DVDrip的时候,很多压制软件就有“Extend to PC video" 的选项,将16~235灰阶扩展到0~255。


The KMPlayer在“色阶控制”选项中可以控制灰阶输出

显卡在渲染视频画面时,也分Overlay和VMR9等模式。用Overlay(覆盖)模式渲染时,会把视频信号里的0~15和236~255丢弃,把16~235扩展为0~255,并输出到显示器上。与之配合的PC Level显示器把显卡输出的0对应于黑,输出的255对应于亮。在Overlay模式下,多余的BTB和Peak White信号都被忽略掉了。这样做可能会丢失部分场景的高光细节,而原本的219级灰阶扩展为256级灰阶后,也会出现某些灰阶图像过渡不够自然的情况。


CoreAVC中和灰阶相关的选项

而在VMR9渲染模式下时,显卡对视频信号不做任何变换,直接输出给显示器。如果显示器还是按PC Level调整的,0是黑,255是白,那么参考黑位在显示器上就是(16,16,16),结果看起来就是不那么黑,有点发白。 解决办法就是把显示器按照Studio Level调整,把亮度调低点。

现在,很多播放软件和视频插件也支持输出灰阶调整功能。以The KMPlayer播放软件为例,打开参数选项中的“模糊/色阶”,然后在“色阶控制”选项中选择开启,在输出幅度位置选择16~235替代默认的0~255。CoreAVC、gabest、ffdshow等解码器都有相关的灰阶扩展选项。

而在显示器方面,一般我们使用的是0~255灰阶的PC Level设备,但是我们也可能使用Studio设备的平板电视机。所以,在上述的几个步骤中,无数的混乱造成影片播放时灰阶的严重丢失。要调整好它们之间的关系,不下一番苦功夫是不行的。

HTPC和电视机的连接

AV领域的视频设备是从16~235之间取值的,不过实际上很多中高端的DVD播放器、电视机和投影机都可以选择PC Leve(l Full Range)或者Studio Level(Limited Range)模式来适应不同的状况。


SONY PS3中的RGB Full Range灰阶选项,可以选择“有限”或者“全取”

如果HTPC输出的信号是0~255的Full Range灰阶信号,而Studio Level的电视机则是以16作为基准黑,235作为基准白的。这个时候,原本0~15和236~255之间的细节都显示不出来了。不过,这部分细节并没有被丢掉,只是被电视机藏到了一个不易被人注意的角落。因为Studio Level仍然还有BTB和Peak White信号,我们只要对电视机的gamma重新进行调节,就可以把大部分细节还原出来。


在高端投影机中,一般都有针对色彩空间和灰度的选项

如果是直接用HDMI接口连接视频播放设备和电视机呢?也有可能因为输出的灰阶格式和机电视机的兼容格式不同造成灰阶的丢失。比如,蓝光播放器输出的是RGB Full Range格式,而电视机则只支持Limitel Range,就需要对输出端进行调整。在PS3、蓝光播放器等HDMI设备中,都可以对HDMI接口的灰阶深度进行调整,比如在PS3上,有一个RGB Full Range(HDMI)的选项,选择“有限”则是以16~253的范围输出RGB信号,选择“全取”则是以0~255的范围输出RGS信号。

用于灰阶测试的ramp.ts视频画面,如果灰阶丢失以后,白点和黑点以外的色块就不可见了。

而现在,NVIDIA显卡和ATI显卡也可以通过驱动面板对HDMI的灰阶进行调整,选择RGB Full Range、RGB Limited Range或YCrCb 4:4:4的数字颜色格式。

实际测试和调节

我们使用HTPC和松下42PV70C等离子电视机相连,实际考察HTPC和电视之间的兼容情况。HTPC这边使用了原生HDMI接口的Radeon HD 3450显卡、DVI接口转接HDMI的RadeonHD 3650显卡和DVI接口转接HDMI的GeForce 8800 GT显卡,通过HDMI接口连接到电视机上。

平时,松下42PV70C电视机的HDMI接口已经通过连接PS3游戏机设置好了亮度和对比度值,设置为对比度为85,亮度为50时,画面的细节有较好的表现。

在ATI新的8.11驱动中,如果你用HDMI连接,会有一个像素格式的选择,可以选择计算机标准Full RGB、Studio视频Limited RGB以及YCbCr 4:4:4/4:2:2。

而HTPC通过DVI转接的HDMI接口在连上电视及以后,我们打开了一张灰阶测试图片,黑色灰阶16以下的全部不可见,而白色灰阶235以上的也不可见。这正好说明了电视机以16灰阶作为黑色,丢弃了大部分的暗部细节。接下来,我们播放了一段ts格式测试视频片段,黑色和白色各有一个色块在播放中丢失了。而我们换用原生HDMI接口的Radeon HD 3450显卡后,也发现灰阶丢失同样非常严重。不过,无论是DVI转接还是原生的HDMI接口的显示图像都可以通过调节电视机的亮度和对比度提升细节表现能力,在降低对比度到40,提升亮度到90以后,大部分灰阶都可以看到了。但是,此时的画面相对比较暗淡,且仍然有6以下的黑色灰阶不可见,黑色部分的噪点也增加了。可以说,细节出来了,但是画面的观感还不如调节前。

接下来,我们又通过VGA接口连接PC到42PV70C电视机上进行测试。此时,在先前的对比度80,亮度50的设置下,所有的灰阶都正常,1~254灰阶都可以正常辨识。由此看来松下42PV70C电视的HDMI接口只能兼容Limited Range的灰阶,在连接HTPC时其表现还不如VGA接口。通过VGA接口的显示效果都要比HDMI更好。

NVIDIA显卡在动态范围调节选项里有灰阶的调节,并对该选项进行了说明。而且在使用HDMI接口之后,还可以支持RGB和YCrCb色彩空间的选择。

除了调节显示器以外,我们还可以通过软件调节的方法增加画面细节。但是,通过软件的调节大多数只能调节视频的Gamma值,对桌面的显示输出没有改变。除了前面我们讲到的调节The KMPlayer、CoreAVC等解码器之外,还可以调节显卡驱动。在ATI显卡的Avivo驱动面板中可以调节视频亮度和对比度,来增加视频的细节。通过调整以后,测试的ramp.ts视频画面中缺失的色块又回来了。只是我们在前面说过,该调节仅仅是调整的视频画质,桌面显示和图片的质量仍不理想。在ATI新的8.11驱动里,如果使用HDMI接口连接,还增加了一个像素格式的选项,可以选择计算机标准Full RGB、Sudio视频Limited RGB以及YCbCr 4:4:4、YCbCr 4:2:2。如果选择YCbCr 4:2:2,细节表现能力也会提升。

在高清音频领域,有一个名词正在流行,那就是“点灯”。意思是可以实现高清音频源码输出的播放设备加次世代功放的组合,在经过正确的设置后,实现了高清音频的正确解码,功放上对应高清音频解码灯成功亮起。而在HDMI视频领域,我们也可以用“点灯”来形容灰阶的正确输出和显示,但是这个设置和判断是非常困难的,不知道你成功“点灯”了吗?

分享到:

用户评论

共有评论(3)

  • 2009.03.25 20:35
    3楼

    硬件: 迪兰恒进HD4670显卡 美格WB22D显示器 LG 42LB7RF液晶电视 软件: Vista SP1 MSDN 简体中文版 催化剂8.12 KMPlayer 2.9.3.1429 由于ramp.ts是MPEG2编码,所以默认使用DScaler5+IVTC(也更换过其他MPEG2解码器) 由于近才找到了ramp.ts这个文件,所以才把书翻出来学习了下,但经过自己的实践,并未很好的重现丢失的灰阶,具体有如下几个方面: 1:文章说到使用催化剂中YCbCr 4:4:4/4:2:2像素色彩格式.但我发现这个并未在我的设备上发挥作用.播放ramp.ts发现仍然有两格的颜色是不能区分的! 2:文章还说到可以是用KMP的色阶控制.确实我使用了该方法后能完全区分ramp.ts里的每一个白色条或黑色条.但同时有另外一个问题,严重的问题,那就是黑位严重不正常,简单点说就是KMP的色阶控制确实能够带来ramp.ts的每一个细节,但同时使整个画面蒙上一层"灰色".我不能用准确专业的词语来形容,大概就是画面发白的感觉! 3:我还发现如果使用KMP的色阶控制是必须有一定特定条件的,比如说不能开启极速或高速模式,而不开启极速模式的直接影响就是不能开启某些视频编码的硬解功能! 请问:以上我描述的问题可以解决吗?如何做?谢谢!

    (0) (0) 回复
  • 2009.01.08 15:36
    2楼

    1发现问题,2探索,3解决问题,4归纳出经验方法. 写好1和4就好了.

    (0) (0) 回复
  • 2009.01.08 12:15
    1楼

    你失去了把问题描述清楚的能力

    (0) (0) 回复

用户名:

密码: