渲染器输出效果 – VX测试联动贴
话说vx不辞辛苦,深夜写文研究不同渲染器的显示质量,实在令人钦佩,换我3点肯定大脑已经停转到看动画片都不能集中精力了…
具体来说,vx通过渐变图片比较了通过不同渲染器输出显示的效果,理论基础是由于输出过程中要做yv12的插值和YUVtoRGB的转换,这两项皆是衡量渲染器质量的关键因素之一。
联动贴在此,在看本文前没看过vx测试和分析的请先移步他那。
vx得到的结果是madVR > Haali > VMR ≈ EVR
我存在的疑惑是,何为最优秀的渲染输出质量。由于源渐变图片应该是有分立、有限数量个的纵向色条组成,有色条既有阶跃,那么我认为如果一个渲染器的输出结果,能有效地保留这些阶跃信息,那么他就是最优秀的。
那么,很显然,这样的判断存在两个方向的可能性,其一是阶跃信息被过分柔化,对于彩色图片来说,一个极端的例子就是color bleeding;其二是阶跃信息被过分保留,甚至由于插值的不精确,让某些非阶跃处也产生了false contour。
当然由于vx原图色条数不明,因此不好断定那些输出的色条是真的原色条,哪些是由于渲染器插值算法产生的假色条。
首先我试了肉眼观测的结果,根据我上面的分析,抛开一切质量判定,单就阶跃信息的保留程度来说,我的判断如下:
-<———— – 原图 + ————->+
| | |
madVR Haali EVR/VMR
之后,我又想到了用数学的方法去计算原图和不同渲染器输出间的差距,由于作为知道测试流程和准备的我们得出的判断在研究的场合都是站不住脚的,而我们又无法去让多人做主观评价;因此数学质量模型即是一个比较具有公正性的方法了:
我尝试了两种数学模型,其一是最简单的Mean Difference Error,也就是MSE的1阶形式,简而言之就是比较原图和不同渲染器生成的图的mean和variance,由于vx的图上下部分特性迥异,出去全局比较外,我还做了分离上下部分的比较,结果如下:
标注说明
c – color(下部图片), g – grayscale(上部图片)
avg – average of difference, var – variance of difference
e – EVR, m – madVR, h – haali, v – VMR9
全局值[R G B]
Mean Difference
EVR = [0.2551 0.1347 0.3210]
VMR9 = [0.2551 0.1347 0.3210]
Haali = [0.1054 0.7376 0.1238]
MadVR = [0.3278 0.2054 0.4443]
Variance of Difference
EVR = [0.4420 0.2811 0.5055]
VMR9 = [0.4420 0.2811 0.5055]
Haali = [0.3428 0.5260 0.3661]
MadVR = [0.6393 0.3759 0.7889]
Color部分[R G B]
Mean Difference
EVR = [0.2260 0.1077 0.3531]
VMR9 = [0.2260 0.1077 0.3531]
Haali = [0.0923 0.6421 0.1505]
MadVR = [0.3073 0.1879 0.5366]
Variance of Difference
EVR = [0.4210 0.2874 0.5363]
VMR9 = [0.4210 0.2874 0.5363]
Haali = [0.3254 0.6033 0.3880]
MadVR = [0.6257 0.3983 0.8789]
Grayscale部分[R G B]
Mean Difference
EVR = [0.2842 0.1617 0.2888]
VMR9 = [0.2842 0.1617 0.2888]
Haali = [0.1185 0.8330 0.0972]
MadVR = [0.3483 0.2228 0.3520]
Variance of Difference
EVR = [0.4212 0.2733 0.4725]
VMR9 = [0.4212 0.2733 0.4725]
Haali = [0.3598 0.4305 0.3428]
MadVR = [0.6522 0.3529 0.6819]
Difference Map如下
从MDE的测试结果来看,似乎与vx观察的结论完全相反,无论是彩色部分还是灰阶部分,MadVR的效果都位列最后;值得注意的是EVR和VMR9完全一样的结果,也就是说从统计意义上说,两者是相等的。
另一个奇怪的地方是Haali的G(绿色)分量误差在grayscale时反常的大。
还有一个问题是由于vx得到不同渲染器的输出时,使用了avs中的色彩空间转换滤镜和色彩空间指定滤镜,也就是说喂给不同渲染器的输入源实际上与原photoshop中生成的图已有偏差,而这个偏差无法测量,因此第一种方法结论的可靠性是很差的。
于是我想到了SSIM这种方法,使用SSIM算法得到的原图与各渲染器输出直接的SSIM Index如下:
EVR = 0.9978
VMR9 = 0.9978
Haali = 0.9927
MadVR = 0.9940
在此大跌眼镜,MadVR和Haali继续被EVR/VMR9甩出好几条街…最后我们再来看下SSIM Map,他表示的是在SSIM这种算法下,原图和测试图之间的差距,他是一个intensity map:
maybe we need stick on Haali? LOL
值得说明的是,我在这也只是把测试结果拿出来给大家看看,我自己本身的质量判断并没有体现在上面任何的叙述中。同样这种测试是否valid也是值得进一步斟酌的。
总之,这仍然是一个open question,欢迎大家讨论。








最近评论