分页: 1 / 2

求助:多pass SMD也轰不走的动态噪点

发表于 : 2014-02-25 21:41
alexz220
图就不上了,截图看得不明显,附上网盘地址:
http://pan.baidu.com/s/1c0sxbu4

龙珠Z SP1(BD),原盘噪点不好看,而且很耗码率,
所以想轰平后再加动态噪点。
用了5pass SMD,仍有一些噪点轰不掉,
而且3pass/4pass/5pass残留下来的
很碍眼的动态噪点目测数量差不多,
于是个人猜测我参数没设好,
求各位前辈赐教。

SetMemoryMax(1500)

SMDegrain(tr=2, thSAD=400, RefineMotion=true, contrasharp=False, interlaced=False, plane=4, prefilter=2, chroma=True, lsb=true, lsb_in=true, lsb_out=true, Show=False)

### prefetch: 16, 0
### lock threads to cores
### ###

SetMemoryMax(1500)

SMDegrain(tr=2, thSAD=400, RefineMotion=true, contrasharp=False, interlaced=False, plane=4, prefilter=2, chroma=True, lsb=true, lsb_in=true, lsb_out=true, Show=False)

### prefetch: 16, 0
### lock threads to cores
### ###

SetMemoryMax(1500)

SMDegrain(tr=2, thSAD=400, RefineMotion=true, contrasharp=False, interlaced=False, plane=4, prefilter=2, chroma=True, lsb=true, lsb_in=true, lsb_out=true, Show=False)

### prefetch: 16, 0
### lock threads to cores
### ###

SetMemoryMax(1500)

SMDegrain(tr=2, thSAD=400, RefineMotion=true, contrasharp=False, interlaced=False, plane=4, prefilter=2, chroma=True, lsb=true, lsb_in=true, lsb_out=true, Show=False)

### prefetch: 16, 0
### lock threads to cores
### ###

SetMemoryMax(1500)
SMDegrain(tr=2, thSAD=400, RefineMotion=true, contrasharp=False, interlaced=False, plane=4, prefilter=2, chroma=True, lsb=true, lsb_in=true, lsb_out=true, Show=False)

### prefetch: 16, 0
### lock threads to cores
### ###

Re: 求助:多pass SMD也轰不走的动态噪点

发表于 : 2014-02-26 3:40
msg7086
无责任推荐轰个MCTD试试

Re: 求助:多pass SMD也轰不走的动态噪点

发表于 : 2014-02-26 12:21
Holy
不要用內建的 MinBlur 做 prefilter,自己用 FFT3D 抹一個(例如 FFT3DFilter(sigma=6.4, sigma2=4.8, sigma3=3.2, sigma4=1.6, plane=4, bw=16, bh=16, ow=8, oh=8))餵進 SMD 試試。

Re: 求助:多pass SMD也轰不走的动态噪点

发表于 : 2014-02-26 12:33
alexz220
感谢HOLY菊苣,
请问如果不介意速度的话,
用dfttest是不是更好?
另外,本人英文不好,
读过SMD的文档,
不明白prefilter的作用原理,
请问用prefilter比单纯提高降噪强度的优势何在?

Re: 求助:多pass SMD也轰不走的动态噪点

发表于 : 2014-02-26 16:26
mawen1250
prefilter处理过的clip是用来进行Motion Estimation的,噪点会干扰ME的正常进行所以需要用一个预处理过的clip进行ME。
prefilter方式的选取就很重要,除非是特别强的噪点,一般只推荐纯spatial的降噪,因为用temporal降噪产生的blending会影响到ME结果的正确性。所以MCTD默认用的FFT3DFilter(bt=3)其实是有比较大问题的。
SMDegrain内置的prefilter=1用的是3x3的MinBlur,prefilter=2用的是自定义滤波参数而且tbsize=1的dfttest。
所以问题在于3x3的MinBlur和dfttest的预处理强度不够。
用于快速去除噪声,比起MinBlur我更推荐SBR,所以可以用GrainStabilizeMC里5x5或是7x7的GSMC_sbr()作为prefilter。

在prefilter效果足够好的时候,再调整thSAD、thSCD之类的参数,就可以只生成一个足够精确的ME结果,利用Global类型的clip在函数间传递ME结果,然后进行多重MDegrain降噪。

example
# stacked 16 bit input
pre = GSMC_sbr(2, lsb_in=True, lsb=False)

SMDegrain(tr=2, plane=4, prefilter=pre, thSAD=400, RefineMotion=True, contrasharp=False, interlaced=False, chroma=True, lsb_in=True, lsb=True, lsb_out=True, Show=False, Globals=2)
SMDegrain(tr=2, plane=4, contrasharp=False, interlaced=False, lsb_in=True, lsb=True, lsb_out=True, Show=False, Globals=1)
SMDegrain(tr=2, plane=4, contrasharp=False, interlaced=False, lsb_in=True, lsb=True, lsb_out=True, Show=False, Globals=1)
# stacked 16 bit output
需要注意的是这里用Global来传递ME的clip,mvtools2会在clip的音频中存储信息,而MP_Pipeline进程间不支持音频的传递,所以不能把这几个SMDegrain分开到不同MPP进程里。

Re: 求助:多pass SMD也轰不走的动态噪点

发表于 : 2014-02-26 19:14
alexz220
mawen1250 写了:prefilter处理过的clip是用来进行Motion Estimation的,噪点会干扰ME的正常进行所以需要用一个预处理过的clip进行ME。
prefilter方式的选取就很重要,除非是特别强的噪点,一般只推荐纯spatial的降噪,因为用temporal降噪产生的blending会影响到ME结果的正确性。所以MCTD默认用的FFT3DFilter(bt=3)其实是有比较大问题的。
SMDegrain内置的prefilter=1用的是3x3的MinBlur,prefilter=2用的是自定义滤波参数而且tbsize=1的dfttest。
所以问题在于3x3的MinBlur和dfttest的预处理强度不够。
用于快速去除噪声,比起MinBlur我更推荐SBR,所以可以用GrainStabilizeMC里5x5或是7x7的GSMC_sbr()作为prefilter。

在prefilter效果足够好的时候,再调整thSAD、thSCD之类的参数,就可以只生成一个足够精确的ME结果,利用Global类型的clip在函数间传递ME结果,然后进行多重MDegrain降噪。

example
[syntax=avisynth]
# stacked 16 bit input
pre = GSMC_sbr(2, lsb_in=True, lsb=False)

SMDegrain(tr=2, plane=4, prefilter=pre, thSAD=400, RefineMotion=True, contrasharp=False, interlaced=False, chroma=True, lsb_in=True, lsb=True, lsb_out=True, Show=False, Globals=2)
SMDegrain(tr=2, plane=4, contrasharp=False, interlaced=False, lsb_in=True, lsb=True, lsb_out=True, Show=False, Globals=1)
SMDegrain(tr=2, plane=4, contrasharp=False, interlaced=False, lsb_in=True, lsb=True, lsb_out=True, Show=False, Globals=1)
# stacked 16 bit output
[/syntax]
需要注意的是这里用Global来传递ME的clip,mvtools2会在clip的音频中存储信息,而MP_Pipeline进程间不支持音频的传递,所以不能把这几个SMDegrain分开到不同MPP进程里。
感谢前辈一次解答了几个疑惑。
另外再问一个问题,
用GSMC做prefilter的话,lsb=true有没有实质意义?

Re: 求助:多pass SMD也轰不走的动态噪点

发表于 : 2014-02-26 20:08
mawen1250
这里用的是GSMC_sbr不是GSMC,GSMC本身降噪强度很低不适合用来作为prefilter。
而MVTools2里的函数都只支持8bit输入,所以用16bit的prefilter基本没有意义,SMDegrain也只支持输入8bit的prefilter clip。

Re: 求助:多pass SMD也轰不走的动态噪点

发表于 : 2014-02-26 21:11
alexz220
mawen1250 写了:这里用的是GSMC_sbr不是GSMC,GSMC本身降噪强度很低不适合用来作为prefilter。
而MVTools2里的函数都只支持8bit输入,所以用16bit的prefilter基本没有意义,SMDegrain也只支持输入8bit的prefilter clip。
谢谢解答,我自己再研究研究。

Re: 求助:多pass SMD也轰不走的动态噪点

发表于 : 2014-03-14 18:18
gloryhussar
mawen1250 写了:prefilter处理过的clip是用来进行Motion Estimation的,噪点会干扰ME的正常进行所以需要用一个预处理过的clip进行ME。
prefilter方式的选取就很重要,除非是特别强的噪点,一般只推荐纯spatial的降噪,因为用temporal降噪产生的blending会影响到ME结果的正确性。所以MCTD默认用的FFT3DFilter(bt=3)其实是有比较大问题的。
SMDegrain内置的prefilter=1用的是3x3的MinBlur,prefilter=2用的是自定义滤波参数而且tbsize=1的dfttest。
所以问题在于3x3的MinBlur和dfttest的预处理强度不够。
用于快速去除噪声,比起MinBlur我更推荐SBR,所以可以用GrainStabilizeMC里5x5或是7x7的GSMC_sbr()作为prefilter。

在prefilter效果足够好的时候,再调整thSAD、thSCD之类的参数,就可以只生成一个足够精确的ME结果,利用Global类型的clip在函数间传递ME结果,然后进行多重MDegrain降噪。

example
[syntax=avisynth]
# stacked 16 bit input
pre = GSMC_sbr(2, lsb_in=True, lsb=False)

SMDegrain(tr=2, plane=4, prefilter=pre, thSAD=400, RefineMotion=True, contrasharp=False, interlaced=False, chroma=True, lsb_in=True, lsb=True, lsb_out=True, Show=False, Globals=2)
SMDegrain(tr=2, plane=4, contrasharp=False, interlaced=False, lsb_in=True, lsb=True, lsb_out=True, Show=False, Globals=1)
SMDegrain(tr=2, plane=4, contrasharp=False, interlaced=False, lsb_in=True, lsb=True, lsb_out=True, Show=False, Globals=1)
# stacked 16 bit output
[/syntax]
需要注意的是这里用Global来传递ME的clip,mvtools2会在clip的音频中存储信息,而MP_Pipeline进程间不支持音频的传递,所以不能把这几个SMDegrain分开到不同MPP进程里。

我发现SMD的RefineMotion好像不怎么管用啊?
我开refinemotion,用相同参数x264压出来的SSIM、PSNR值还不如不开refinemotion,眼睛也看不出来区别,但是速度慢好多。
avs:(不开refinemotion)
---[NoImage] pre = GSMC_sbr(2, lsb_in=false, lsb=False)
---[NoImage] SMDegrain(prefilter=pre, RefineMotion=false, lsb_in=false, lsb_out=false, chroma=True, Globals=2)
---[NoImage] SMDegrain(lsb_in=false, lsb_out=false, Globals=1)
---[NoImage] CSMod(chroma=false, Tlimit=false)
x264:preset=slower,crf=23,psy on.

Re: 求助:多pass SMD也轰不走的动态噪点

发表于 : 2014-03-14 18:53
mawen1250
RefineMotion是为了更精确的ME以减小错误ME导致的副作用的,不是为了提高降噪强度。
SMDegrain的RefineMotion调用的就是MRecalculate,它使用更小的blksize/overlap对MAnalyse的ME结果进行一次重运算,结合两次ME得到最终的ME结果。