版面规则
提问时请注意:尽量详细描述操作过程、AVS脚本内容等,最好能写出片名,只贴图有时无法看出问题原因。
提示:发布原创内容请尽量使用附件上传。使用网盘会出现过期失效的问题,请注意。
ldandy006
帖子: 5
注册时间: 2013-07-20 20:09

Re: GrainStabilizeMC v0.8 - 高速的时域轻度降噪脚本

AviSynth用的是2.58的,莫非只支持2.6的版本么?
alexz220
帖子: 115
注册时间: 2012-07-21 17:15

Re: GrainStabilizeMC v0.9 - 高速的时域轻度降噪脚本

mawen前辈,
GrainFL所加的噪点很难留住(已经是psy-trellis 0.25+fgo 1+crf 18+qomp 0.8)
请问是否能用GSMC来改善?例如:

GrainFL(g1str=7, g2str=5, g3str=3, g1size=1.25, g2size=1.25, g3size=1.25, g1soft=3, g2soft=3, g3soft=3, th1=24, th2=64, th3=96, th4=128)
GSMC(nrmode=3, radius=3, adapt=-1, rep=13, Y=3, U=3, V=3, lsb_in=true, lsb=true, lsb_out=true, truemotion=true)
头像
mawen1250
核心会员
核心会员
帖子: 670
注册时间: 2011-07-24 20:33

Re: GrainStabilizeMC v0.9 - 高速的时域轻度降噪脚本

1. GSMC是用来减弱/去除grain(同时保留细节)的,不是用来帮助保留噪点的。
2. 既然是你自己加上去的噪点,要处理也应该直接处理GrainFL内部只包含噪点的diff clip而不是再借助其他后处理。
3. 这个参数保留grain是没有问题的,但如果要保留dither级别的low amp噪声可能需要关mbtree或是用更高的fgo,所以比较合适的做法是提高gxstr。
alexz220
帖子: 115
注册时间: 2012-07-21 17:15

Re: GrainStabilizeMC v0.9 - 高速的时域轻度降噪脚本

mawen1250 写了:1. GSMC是用来减弱/去除grain(同时保留细节)的,不是用来帮助保留噪点的。
2. 既然是你自己加上去的噪点,要处理也应该直接处理GrainFL内部只包含噪点的diff clip而不是再借助其他后处理。
3. 这个参数保留grain是没有问题的,但如果要保留dither级别的low amp噪声可能需要关mbtree或是用更高的fgo,所以比较合适的做法是提高gxstr。
感谢解答。继续试验去~
头像
mawen1250
核心会员
核心会员
帖子: 670
注册时间: 2011-07-24 20:33

Re: GrainStabilizeMC v0.9 - 高速的时域轻度降噪脚本

如果要按上面那个思路处理的话,最佳方案是直接处理GrainFL内部噪点的diff clip,但如果不想改脚本的话也可以直接这样(GrainFL的lsb_in和lsb默认为False),相比于改脚本就是多了一次Dither_add16和一次Dither_sub16的运算:
[syntax=avisynth]# stacked 16bit input

src16 = last

GrainFL(lsb_in=True, lsb=True)
last.GSMC(src16, radius=2, Y=3, U=2, V=2, lsb_in=True, lsb=True, lsb_out=True)

# stacked 16bit output[/syntax]

这里只是演示一种处理方式,但是对于自己加噪点的情况,这样的处理手段有需要注意的地方:
1. 自己生成的噪点clip与源视频画面是完全独立的,所以如果要做temporal soften通常都没有使用MC的意义(除非你需要根据源画面的动态情况来改变噪点的属性),直接使用TemporalSoften()、FluxSmooth()一类的纯temporal滤镜即可,例如GrainStabilize()使用的是TemporalSoften()。
2. 如果直接用TemporalSoften()这类简单的时域稳定滤镜处理噪点diff clip,我不觉得这和减小加噪点的强度有什么区别,所以这种处理我也看不出有什么意义。
3. GrainFL有gxsoft的参数,而其实质就是在Dither_gen_grain_internal里,根据soft的值,生成不同帧数不同强度的噪点diff clip,然后通过TemporalSoften()对生成的噪点clip进行不同radius的时域稳定,再用ConvertFPS()和Trim()转换到源clip的帧数——与直接用temporal滤镜后处理有所不同,主要是用于噪点的时域变化率的调整。
头像
mawen1250
核心会员
核心会员
帖子: 670
注册时间: 2011-07-24 20:33

Re: GrainStabilizeMC v1.0 - 高速的时域轻度降噪脚本

v1.0
由于O16mod对于PC Range下CbCr的改动,相应地改动Bit Depth转换函数——将CbCr表达式超界的部分通过线性缩放限制在对应Bit Depth的上界,防止CbCr降低Bit Depth且输出为PC Range时导致Overflow。
修正在adapt=-1时指定Lmaskl clip时并没有进行mask merge的问题。
alexz220
帖子: 115
注册时间: 2012-07-21 17:15

Re: GrainStabilizeMC v1.0 - 高速的时域轻度降噪脚本

mawen前辈能否给GSMC加入Dither_bilateral16,最近发现这个对线条的保护比sbr要好不少。
头像
mawen1250
核心会员
核心会员
帖子: 670
注册时间: 2011-07-24 20:33

Re: GrainStabilizeMC v1.0 - 高速的时域轻度降噪脚本

alexz220 写了:mawen前辈能否给GSMC加入Dither_bilateral16,最近发现这个对线条的保护比sbr要好不少。
Bilateral是原理十分简单,用于分离噪点、纹理、背景也很有效的kernel(但是直接implement原型以及其各种快速算法的话依旧会很慢很慢),的确适合用作denoise的prefilter。
但是一是它的可调参数比较多,加上Dither_bilateral16用的是box spatial weighting,需要多个级联来近似Gaussian spatial weighting,内嵌于脚本不适合自由调整;二是我已经转投VS了,不想再碰AVS的东西了。所以直接自己用GSMC的第二个clip参数指定Bilateral降噪后的clip就好了。

回到 “AviSynth”