分页: 1 / 2

AdaptDBMC - Luma/Fade/Blue自适应debanding脚本(公测,各种待优化)

发表于 : 2011-12-15 14:26
06_taro
EP向,没有双路Xeon的请勿尝试……
参数说明啥的还没时间写……

Y/Cb/Cr/ditherY/ditherC含义见f3kdb,其他参数用f3k_param来加,譬如
f3k_param="""range=20, random_algo_dither=2"""

Luma_Cpst是Luma补偿因子,越高对暗场的补偿就越高
Fade_Cpst是Fade补偿加成,越高对渐变的加成就越高
Blue_Cpst是Blue补偿加成,越高对蓝色的加成就越高
注意这三个都是float,要自定义请以小数为单位改,后两个可以想象一下x264里fade compensate和Haali's AQ的参数,别一下子几十几十地动,默认的1其实差不多能对应大部分情况……Luma_Cpst的单位相对来说保险一些,修改个0.5左右差距也不会太大,但是要注意Luma_Cpst同时也会对Fade判定有一定影响。

Fade_Cpst为0时,不做MC(因为不需要),否则通过MC来防止scenecut/平移等被错误识别为fade,当然此时速度会很疼很疼,虽然没怎么实验不过估计抹平f3kdb和QTGMC(preset="placebo")的差距压力不大,靠降低MVtools的那些参数可以稍微加快些,需要的自己调整。

其他各种用法可以靠 info=true 开启画面计算结果显示来调整。会显示当前画面对应的三个factor以及它们的乘积,还有画面复杂度。Y/Cb/Cr/ditherY/ditherC在当前帧实际使用的参数是它们各自设置的值与Final factor(= Luma adaptive factor x Fade adaptive factor x Blue adaptive factor)的积,因此预设的值比f3kdb低很多,因为乘以补偿因子后会变大。

补充说明:因为MVTools2的原因,输入必须是8bit的,输出不限,需要16bit输出的自己用f3k_param="""output_depth=16, output_mode=1/2"""来改。理论上可以放到MCTD、LumaDBL之类的工具内部使用,如果真有必要的话……
我脑残了……ScriptClip前后分辨率必须一样。嘛要支持16bit输出也不是没办法,预定下一个版本支持……

图片

图片

图片

图片

需要的插件:f3kdb、mvtools2、RemoveGrain,其中RemoveGrain是用来辅助判定画面复杂度的,复杂度高的deband强度会降低(只影响fade补偿加成)

下载:AdaptDBMC_beta.rar
► 显示剧情透露 或者自行将下面的代码保存成avsi

Re: AdaptDBMC - Luma/Fade/Blue自适应debanding脚本(公测,各种待优化)

发表于 : 2011-12-15 14:37
-o-o-304-o-o-
\taro大/\taro大/\taro大/

额,水就到此为止了,这帖子毕竟还是测试目的,还是说正事吧

简单测试的结果
测试平台
2630QM(2.0Ghz, TB 1t@2.8Ghz max,2t@2.7Ghz max,4t@2.6Ghz max)
win7 x64
测试片段 hunter TV ffv1
测试用参数
AdaptDBMC(Y=24, Cb=24, Cr=24, ditherY=24, ditherC=24, Luma_Cpst=2, Fade_Cpst=1, Blue_Cpst=1, radius=2)

avs2avi(laa)测试结果
TV720 24p
setmemorymax 1024:1.75fps@2.7Ghz
setmemorymax 2048:1.76fps@2.7Ghz
setmemorymax 3072:1.76fps@2.7Ghz

TV1080 24p
setmemorymax 1024:0.91fps@2.7Ghz
setmemorymax 2048:0.92fps@2.7Ghz
setmemorymax 3072:0.92fps@2.7Ghz

对比QTGMC默认参数的速度
TV720 24p
setmemorymax 3072:1.69fps@2.7Ghz

TV1080
setmemorymax 3072:0.77fps@2.7Ghz

小小的吐个槽…………
MC真不愧是内存占用大户,跟MC沾边的没一个省内存的(拖),给多少吃多少囧(继续拖)
速度上比预想的快了不少,默认参数比QTGMC默认参数快对于EP党来说完全能接受吧(大雾
期待优化了(继续,\taro大/…………

Re: AdaptDBMC - Luma/Fade/Blue自适应debanding脚本(公测,各种待优化)

发表于 : 2011-12-15 15:59
rshadow
\taro大/\taro大/\taro大/

Re: AdaptDBMC - Luma/Fade/Blue自适应debanding脚本(公测,各种待优化)

发表于 : 2011-12-15 16:21
mawen1250
\taro大/\taro大/\taro大/

Re: AdaptDBMC - Luma/Fade/Blue自适应debanding脚本(公测,各种待优化)

发表于 : 2011-12-15 18:08
ikamusume
\taro大/\taro大/\taro大/

很明確看到這片是柯南M15 {:cat_17}

Re: AdaptDBMC - Luma/Fade/Blue自适应debanding脚本(公测,各种待优化)

发表于 : 2011-12-15 18:20
xiao7
\taro大/\taro大/\taro大/



速度应该会很美 嗯,纯支持高科技 {:cat_5}

Re: AdaptDBMC - Luma/Fade/Blue自适应debanding脚本(公测,各种待优化)

发表于 : 2011-12-15 20:08
mickoo
EP向,没有双路Xeon的请勿尝试……
我单路Xeon怎么办

Re: AdaptDBMC - Luma/Fade/Blue自适应debanding脚本(公测,各种待优化)

发表于 : 2011-12-15 20:22
mawen1250
mickoo 写了:EP向,没有双路Xeon的请勿尝试……
我单路Xeon怎么办
没关系,我X4 635都用MCTD,这种带MC的其实也就这样了,而且关键的是AVS是单线程的。

Re: AdaptDBMC - Luma/Fade/Blue自适应debanding脚本(公测,各种待优化)

发表于 : 2011-12-16 7:15
angelcat
I7 980X開TESA RC250 SUBME=11的表示此腳本好快 記憶體占據不多 {:cat_3}

Re: AdaptDBMC - Luma/Fade/Blue自适应debanding脚本(公测,各种待优化)

发表于 : 2011-12-16 14:23
histamine
简单改了改,牺牲一点准确度,速度会快一些(每次GetFrame时,ScriptClip中不需要重新创建一个f3kdb滤镜实例)
(info=true时速度还能优化提升,嘛,感觉没必要)

代码: 全选

--- AdaptDBMC_beta.avsi	2011-12-15 05:49:50.000000000 +0800
+++ AdaptDBMC_beta_Mod.avsi	2011-12-16 14:18:57.000000000 +0800
@@ -128,16 +128,40 @@
 ### Mix all factors and calculate final factor of strength
 global strFact   = "( " + AdaptLuma + " * ( 1 + " + AdaptFade + " ) * ( 1 + " + AdaptBlue + " ) )"
 
-global f3kdb_eval = "f3kdb( Y=int("+String(Y)+"*"+strFact+
-\                       "), Cb=int("+String(Cb)+"*"+strFact+
-\                       "), Cr=int("+String(Cr)+"*"+strFact+
-\                       "), ditherY=int("+String(ditherY)+"*"+strFact+
-\                       "), ditherC=int("+String(ditherC)+"*"+strFact+
+global f3kdb_eval = "f3kdb( Y=int("+String(Y)+"*f3kdb_rfact"+
+\                       "), Cb=int("+String(Cb)+"*f3kdb_rfact"+
+\                       "), Cr=int("+String(Cr)+"*f3kdb_rfact"+
+\                       "), ditherY=int("+String(ditherY)+"*f3kdb_rfact"+
+\                       "), ditherC=int("+String(ditherC)+"*f3kdb_rfact"+
 \                           ( Defined(f3k_param) ? "), "+f3k_param+" )"
-\                                                : ") )" )
+\                                                : ") )" ) +
+\                           ( Info ? """.Subtitle("Real Final factor: "+String(f3kdb_rfact), x = 8, y = 28)""" : "")
 
-Info ? ScriptClip( f3kdb_eval+""".Subtitle( "Final factor: "+String( Eval(strFact) ), x=8, y=8 ).Subtitle( "Luma adaptive factor: "+String( Eval(AdaptLuma) ), x=8, y=38 ).Subtitle( "Fade adaptive factor: "+String( 1+Eval(AdaptFade) ), x=8, y=58 ).Subtitle( "Blue adaptive factor: "+String( 1+Eval(AdaptBlue) ), x=8, y=78 ).Subtitle( "Frame complexity: "+String( Eval(c_Complex) ), x=8, y=108 )""" )
-\    : ScriptClip( f3kdb_eval )
+global f3kdb_rfact = 1.00
+global f3kdb1 =  Eval(f3kdb_eval)
+
+global f3kdb_rfact = 1.33
+global f3kdb2 =  Eval(f3kdb_eval)
+
+global f3kdb_rfact = 1.67
+global f3kdb3 =  Eval(f3kdb_eval)
+
+global f3kdb_rfact = 2.00
+global f3kdb4 =  Eval(f3kdb_eval)
+
+global f3kdb_rfact = 2.33
+global f3kdb5 =  Eval(f3kdb_eval)
+
+global f3kdb_rfact = 2.66
+global f3kdb6 = Eval(f3kdb_eval)
+
+global f3kdb_rfact = 3.00
+global f3kdb7 = Eval(f3kdb_eval)
+
+global f3kdb_eval2 = """vStrFact = Eval(strFact)""" + chr(13)+"""(vStrFact < 1.33) ? f3kdb1:(vStrFact < 1.66) ? f3kdb2:(vStrFact < 2.0) ? f3kdb3:(vStrFact < 2.33) ? f3kdb4:(vStrFact < 2.66) ? f3kdb5: (vStrFact < 3) ? f3kdb6 : f3kdb7"""
+                                                                                                                                        
+Info ? ScriptClip( f3kdb_eval2+chr(13)+"""Subtitle( "Final factor: "+String( Eval(strFact) ), x=8, y=8 ).Subtitle( "Luma adaptive factor: "+String( Eval(AdaptLuma) ), x=8, y=58 ).Subtitle( "Fade adaptive factor: "+String( 1+Eval(AdaptFade) ), x=8, y=78 ).Subtitle( "Blue adaptive factor: "+String( 1+Eval(AdaptBlue) ), x=8, y=98 ).Subtitle( "Frame complexity: "+String( Eval(c_Complex) ), x=8, y=128 )""" )
+\       :ScriptClip( f3kdb_eval2 )
 
 return SelectEvery( 1 + radius * 2, radius)
 }