fnscar
帖子: 34
注册时间: 2014-08-31 10:53

【已解决】如何在DeHalo时利用mask进行保护?

因为片子有挺重的halo,所以想用haf.DeHalo_alpha处理。虽然可以有效去除halo,但是直接轰似乎对整个画面的细节有很大的杀伤。于是,想用TCanny生成mask对非edge部分保护一下,但最后得到的画面中halo又回来了。。。
无mask:
图片
使用mask:
图片

我的vpy是这样写的:
import vapoursynth as vs
import havsfunc as haf
core = vs.get_core()
src = core.d2v.Source(r'H:\How.Mononoke.Hime.Was.Born\disc1\VTS_01_1.d2v')
src = core.tcomb.TComb(src)
src = haf.QTGMC(src,Preset='Medium',TFF=True)
src = core.std.CropRel(src,6,10,0,0)
mask = core.tcanny.TCanny(src)
edge = haf.DeHalo_alpha(src,ry=4)
final = core.std.MaskedMerge(src,edge,mask)
final.set_output()

我猜可能是TCanny生成的edge mask范围不够大,没有把halo罩住,但我不知道怎么把mask的范围弄大些。
于是只好来请教:
有没有什么办法让TCanny生成的mask能罩住halo?或者如何利用mask保护非edge部分?
上次由 fnscar 在 2015-10-13 10:29,总共编辑 1 次。
fnscar
帖子: 34
注册时间: 2014-08-31 10:53

Re: 如何在DeHalo时利用mask进行保护?

mawen1250 写了:可以用HQDeringmod的mask(把dehalo后的clip作为自定义的filtered clip输入)
我改成这样:
filtered = haf.DeHalo_alpha(src,rx=4,ry=4)
final = haf.HQDeringmod(src,p=filtered,mrad=4,minp=4)
试着调整HQDeringmod中关于mask的几个参数,但是并不起作用。
feve
帖子: 2
注册时间: 2014-06-14 6:22

Re: 如何在DeHalo时利用mask进行保护?

要扩大MASK的话.
mask = core.tcanny.TCanny(src)
mask = core.std.Maximum(mask , planes=[0])
mask = core.std.Maximum(mask , planes=[0])#想要再大点再加多个..

mask.set_output()

但我估计你也应该知道了.HALO在边缘附近抹的.你扩大MASK之后你懂的..
依然是杀杀细节的.特别3次元片子.所以在处理3次元片子时.要自己权衡下HALO干掉还是不干掉..
头像
feisty2
帖子: 274
注册时间: 2012-08-05 10:03

Re: 如何在DeHalo时利用mask进行保护?

minblur --> NLMeans

回到 “VapourSynth”