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

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

2014-02-25 21:41

图就不上了,截图看得不明显,附上网盘地址:
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
### ###

头像
msg7086
帖子: 596
注册时间: 2011-02-19 0:49

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

2014-02-26 3:40

无责任推荐轰个MCTD试试
Delogo LGD Collections 各种台标下载 | Home Of VapourSynth Evolution

<回答が無い理由>
1. 誰も知らない
2. 質問文が意味不明
3. 知ってるが、お前の態度が気に入らない
4. 良いボケが思いつかない

头像
Holy
核心会员
核心会员
帖子: 228
注册时间: 2010-09-24 9:28

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

2014-02-26 12:21

不要用內建的 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 試試。
图片

alexz220
帖子: 115
注册时间: 2012-07-21 17:15

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

2014-02-26 12:33

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

头像
mawen1250
核心会员
核心会员
帖子: 670
注册时间: 2011-07-24 20:33

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

2014-02-26 16:26

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进程里。
上次由 mawen1250 在 2015-04-28 21:25,总共编辑 1 次。

alexz220
帖子: 115
注册时间: 2012-07-21 17:15

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

2014-02-26 19:14

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有没有实质意义?


alexz220
帖子: 115
注册时间: 2012-07-21 17:15

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

2014-02-26 21:11

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

gloryhussar
帖子: 23
注册时间: 2013-10-01 16:23

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

2014-03-14 18:18

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.


回到 “AviSynth”