POPPUR爱换

标题: VMR9 Renderless模式进入实用阶段之二——精确、快速、简单地调整黑白平衡与伽马值 [打印本页]

作者: Edison    时间: 2006-8-27 15:08
标题: VMR9 Renderless模式进入实用阶段之二——精确、快速、简单地调整黑白平衡与伽马值
VMR将在Windows Vista时代成为最主要的视频渲染方式,在启用了Aero模式的情况下,Overlay将不再被允许,只有关闭Aero才能切换出overlay(方法是ctrl+alt+F9)。

但是,对于目前的Windows XP来说VMR模式一个被人“诟病”的地方在于其黑电平为0和白电平为255,在完全默认的方式输出到未经过特别针对VMR调校的显示器并且是片源的黑白电平区间为16~235的视频节目时,会出现所谓的 "洗水" 或者 "泛白" 现象。

Overlay采用的是一个窄频的黑白电平设定,即黑电平为16、白电平为235,简单而言如果视频中的像素灰度等于或者小于16的话,都会被压缩成灰度值“0”输出到显示器上,使得这个像素看起来是黑色的(当然有些视频本身是要求0~255区间的,此时OVM的弊端就会被暴露)。

一般缺乏经验的用户对此采取了回避态度,躲回到overlay渲染的安乐窝里,其实这也无可口非,毕竟,如果只是对一张图片调整电平对一个photoshop初学者来说虽然是易事,但是要调整视频的电平却是需要一些变通的措施,特别是GPU硬件加速的情况下,基于CPU方式的电平调整是无法奏效。

我在这里为大家提供一个简单可行的调整方式,只需要两步即可实现(我自己使用的驱动是英文版,不过相信各位也能很快就找到中文版对应的位置):

1、打开显示卡驱动面板的color correction界面,即颜色纠正。

2、在color profile中选择advanced mode。
     a、点选曲线的左下角那个小控制点,略为移动一下,然后到 In 的数值框里填入0.06,out 的数值框填入 0.00 ,再按“应用”按钮一下。这个步骤是把灰度为 16 的像素切成灰度为 0,即黑"色"。
[attach]596926[/attach]

    b、点选曲线的右上角那个小控制点,略为移动一下,然后到 In 的数值框里填入0.92,out 的数值框填入 1.00,再按“应用”按钮一下。这个步骤是把灰度为 235 的像素切成灰度为 255,即白"色"。
[attach]596927[/attach]

3、喜欢的话,你可以保成这个color profile为自己喜欢的名字,例如 "VMR Video narrow", 以后用 VMR看电影的时候就用这个 profile, 看完了后选会 standard 或者别的你喜欢的桌面色彩方案。

注意:上述的 gamma 设定值都是我自己计算而得,并非瞎蒙的,已经非常非常接近参考原图,黑白电平和 Overlay 表现一致, 而颜色准确度更加是超越了 Overlay (尽管理论上它们应该是一样的)。如果驱动能提供小数点后5位的设定值输入允许,我想效果会更好 :) 。
作者: snakebogard    时间: 2006-8-27 15:26
请问ati的卡如何调校

[ 本帖最后由 snakebogard 于 2006-8-27 15:35 编辑 ]
作者: Edison    时间: 2006-8-27 20:02
原帖由 snakebogard 于 2006-8-27 15:26 发表
请问ati的卡如何调校


这个需要大家发掘了,例如写个shader或者是让ATI的驱动开发人员增加这个特性。
作者: Edison    时间: 2006-8-27 21:39
原帖由 TANJT 于 2006-8-27 20:37 发表
发现对MPC vmr9无效,对桌面有效 #汗


我想你选择的不是VMR9 Renderless,而是VMR7。

请在选择了VMR9 or VMR9 Renderless后关闭MPC,再重启MPC。
作者: cnmars    时间: 2006-8-28 09:26
重大发现,ATI把对比度调到11就可以了。
作者: Edison    时间: 2006-8-28 09:30
单纯改变对比度是不足够的。
作者: orbitlee    时间: 2006-8-28 09:58
提示: 作者被禁止或删除 内容自动屏蔽
作者: cnmars    时间: 2006-8-28 10:05
教教我怎么用,谢谢。
作者: Edison    时间: 2006-8-28 10:56
原帖由 cnmars 于 2006-8-28 10:05 发表
教教我怎么用,谢谢。


选择3D纹理和在高级视频里的VMR shader里填入、选择对应的shader profile、改名保存即可。

MPC的话就是play->shader->edit。
作者: Prometheas    时间: 2006-8-28 12:20
原帖由 orbitlee 于 2006-8-28 09:58 发表




一个法国人写的shader, 适用于MPC

Remap_16_235 : Remap les valeur de 16->235 vers 0->255 ( Low Quality )
Code:

sampler s0 : register(s0);
float4 p0 : register(c0);
float4 p ...


:wacko::sweatingbullets:有用的代码仅仅是

float4 main(float2 tex : TEXCOORD0) : COLOR
{
   return( ( tex2D( s0, tex ) - Const_1 ) * Const_2 );
}

:sweatingbullets:其它的仅仅是定义宏而已
作者: wowtiger    时间: 2006-8-28 15:58
原帖由 orbitlee 于 2006-8-28 09:58 发表
一个法国人写的shader, 适用于MPC

Remap_16_235 : Remap les valeur de 16->235 vers 0->255 ( Low Quality )
Code:

sampler s0 : register(s0);
float4 p0 : register(c0);
float4 p ...

這是似乎有的錯誤點在
依照BT.609的規定
0->255 Remap 16->235 是在YUV下進行的
RGB下進行可能會造成某些顏色錯誤
不過看到Low Quality可能就是這個意思

在Media Player Classic就有內建YUV Remap的shader
就是procamp
作者: orbitlee    时间: 2006-8-28 16:43
提示: 作者被禁止或删除 内容自动屏蔽
作者: Edison    时间: 2006-8-28 17:49
procamp似乎没有什么效果,像素值并没有变化。
作者: wowtiger    时间: 2006-8-28 18:04
原帖由 Edison 于 2006-8-28 17:49 发表
procamp似乎没有什么效果,像素值并没有变化。

// tv -> pc scale
// #define Brightness (-ymin)
// #define Contrast (1.0/(ymax-ymin))
預設是關閉的
所以要去shader edit
把//刪掉才行
作者: Edison    时间: 2006-8-28 18:31
现在可以了,不过高亮部分的blue channel似乎有时候高了一个比特、有时候R/G低了一个比特。
作者: wowtiger    时间: 2006-8-28 22:12
原帖由 Edison 于 2006-8-28 18:31 发表
现在可以了,不过高亮部分的blue channel似乎有时候高了一个比特、有时候R/G低了一个比特。

不然就用我的看看
因為Y範圍在16~235 CrCb範圍在16~240
所以有些誤差

sampler s0 : register(s0);

//BT.601
#define Kb 0.114
#define Kr 0.299

//BT.709
#define Kb7 0.0722
#define Kr7 0.2126


float4 main(float2 tex : TEXCOORD0) : COLOR
{
        float Y = dot(tex2D(s0, tex), float4(Kr ,1-Kr-Kb ,Kb ,0));
        float Pb = (dot(tex2D(s0, tex), float4(0,0,1,0))-Y)*0.5/(1-Kb);
        float Pr = (dot(tex2D(s0, tex), float4(1,0,0,0))-Y)*0.5/(1-Kr);

        // Y range is 16 ~ 235, PbPr range is -112 ~ 112
        float X = 1/15.9375;
        Y = Y-X;
        Y = Y * 255/219;
        if(Y <= 0) Y = 0;
        if(Y >= 1) Y = 1;
        Pb = Pb * 128/112;
        Pr = Pr * 128/112;

        float R = Y+2*Pr*(1-Kr);;
        float G = Y        - (2*Kb*(1-Kb)/(1-Kb-Kr)) * Pb
                                - (2*Kr*(1-Kr)/(1-Kb-Kr)) * Pr;
        float B = Y+2*Pb*(1-Kb);

        return  float4(R,G,B,0);  
}
作者: Edison    时间: 2006-8-28 22:57
Ramps部分的一些地方还是有1~3 bit的误差,灰度方面,就是208'会变成207',其他的灰阶看来都正常了。

前面忘记说了,我用的是这里的testchart,测试的是hqvbenchmar里带的,也是同样的来源。

比较出来的误差说不定是encode的时候就有的误差。
作者: orbitlee    时间: 2006-8-29 11:37
提示: 作者被禁止或删除 内容自动屏蔽
作者: Edison    时间: 2006-8-29 20:20
抓下来了,看来是有些色彩的是被压掉了,保存下来的图片和wowtiger提供的shader生成的结果一致。
作者: D65    时间: 2006-8-31 15:35
注册表里可以写一个VMRCRSSSTATUS。

可惜9系列驱动,NV提供的这个方法失效了。但驱动说明书里还有保留。
作者: wowtiger    时间: 2006-9-1 19:56
原帖由 D65 于 2006-8-31 15:35 发表
注册表里可以写一个VMRCRSSSTATUS。

可惜9系列驱动,NV提供的这个方法失效了。但驱动说明书里还有保留。

不僅沒用
而且還有delay bug
開了之後
系統完全像CPU的速度強制減速

GOOGLE打下去也是一堆人有這樣問題
作者: kobemc    时间: 2006-9-4 10:11
提示: 作者被禁止或删除 内容自动屏蔽
作者: zzzZZZ    时间: 2006-9-4 19:14
b、点选曲线的左下角那个小控制点,略为移动一下,然后到 In 的数值框里填入0.92,out 的数值框填入 1.00,再按“应用”按钮一下。这个步骤是把灰度为 235 的像素切成灰度为 255,即白"色"。

这个应该是错的吧?
"左下角"是不是应该改成"右上角",
因为我按照你说的左下角改的话,颜色全变了,根本不能看.
作者: Edison    时间: 2006-9-4 19:33
原帖由 zzzZZZ 于 2006-9-4 19:14 发表
b、点选曲线的左下角那个小控制点,略为移动一下,然后到 In 的数值框里填入0.92,out 的数值框填入 1.00,再按“应用”按钮一下。这个步骤是把灰度为 235 的像素切成灰度为 255,即白"色"。

这个应 ...


已经更正,是右上角。
作者: xtal    时间: 2006-9-5 16:39
提示: 作者被禁止或删除 内容自动屏蔽
作者: xtal    时间: 2006-9-5 16:49
提示: 作者被禁止或删除 内容自动屏蔽
作者: xtal    时间: 2006-9-5 17:00
提示: 作者被禁止或删除 内容自动屏蔽
作者: nabababa    时间: 2006-12-11 00:35
pc level to studio level,似乎最简单的办法就是调节显示设备亮度/对比度,当然,肯定是不精确的。
作者: mm740    时间: 2009-3-23 23:47
VMR 9 Renderless咋问题这么多:o
作者: tilong-lee    时间: 2009-3-24 01:12
进来学习了 {lol:]




欢迎光临 POPPUR爱换 (https://we.poppur.com/) Powered by Discuz! X3.4