def filterchain() -> Union[vs.VideoNode, Tuple[vs.VideoNode, ...]]: """Regular VapourSynth filterchain""" import lvsfunc as lvf import vardefunc as vdf from vsutil import depth, get_y src, *_ = trim() src_CR = JP_CR.clip_cut src_NCOP, src_NCED = YT_NCOP.clip, YT_NCED.clip b = core.std.BlankClip(src, length=1) # OP/ED stack comps to check that it lines up op_scomp = lvf.scomp(src[opstart:opstart + src_NCOP.num_frames - 1] + b, src_NCOP[:-op_offset] + b) # noqa ed_scomp = lvf.scomp(src[edstart:edstart + src_NCED.num_frames - 1] + b, src_NCED[:-ed_offset] + b) # noqa # Blurring clips blur_src = core.bilateral.Gaussian(src, sigma=2.5) blur_NCOP = core.bilateral.Gaussian(src_NCOP, sigma=2.5) blur_NCED = core.bilateral.Gaussian(src_NCED, sigma=2.5) # Masking credits op_mask = vdf.dcm( blur_src, blur_src[opstart:opstart+src_NCOP.num_frames-op_offset], blur_NCOP[:-op_offset], start_frame=opstart, thr=28, prefilter=False) if opstart is not False \ else get_y(core.std.BlankClip(src)) ed_mask = vdf.dcm( blur_src, blur_src[edstart:edstart+src_NCED.num_frames-ed_offset], blur_NCED[:-ed_offset], start_frame=edstart, thr=25, prefilter=False) if edstart is not False \ else get_y(core.std.BlankClip(src)) credit_mask = core.std.Expr([op_mask, ed_mask], expr='x y +') credit_mask = depth(credit_mask, 16).std.Binarize() src = depth(src, 16) line_mask = vdf.mask.FDOG().get_mask(get_y(src)) src_merge = core.std.MaskedMerge(src, depth(src_CR, 16), line_mask) src_y = get_y(src_merge) denoise_y = flt.bm3d_ref(src_y, bm3d_sigma=1, dec_sigma=8, dec_min=192 << 8) denoise_y = core.std.MaskedMerge(denoise_y, src_y, line_mask) merged = vdf.misc.merge_chroma(denoise_y, src) dehalo = flt.bidehalo(merged, sigma=1, mask_args={'brz': 0.25}) cmerged = core.std.MaskedMerge(dehalo, src, credit_mask) deband = flt.masked_f3kdb(cmerged, thr=20, grain=12, mask_args={'brz': (1500, 3500)}) grain = flt.default_grain(deband) return grain # type: ignore
def wraw_filterchain() -> vs.VideoNode: """Workraw filterchain with minimal filtering""" from vsutil import depth src, *_ = trim() src = depth(src, 16) deband = flt.masked_f3kdb(src, thr=30, grain=16, mask_args={'brz': (1500, 3500)}) grain = flt.default_grain(deband) return grain # type: ignore
def filterchain() -> Union[vs.VideoNode, Tuple[vs.VideoNode, ...]]: """Regular VapourSynth filterchain""" import lvsfunc as lvf import vardefunc as vdf from vsutil import depth, get_y src, *_ = trim() src_CR = JP_CR.clip_cut src_NCOP, src_NCED = YT_NCOP.clip, YT_NCED.clip b = core.std.BlankClip(src, length=1) # OP/ED stack comps to check that it lines up op_scomp = lvf.scomp(src[opstart:opstart + src_NCOP.num_frames - 1] + b, src_NCOP[:-op_offset] + b) # noqa ed_scomp = lvf.scomp(src[edstart:edstart + src_NCED.num_frames - 1] + b, src_NCED[:-ed_offset] + b) # noqa # Blurring clips blur_src = core.bilateral.Gaussian(src, sigma=2.5) blur_NCOP = core.bilateral.Gaussian(src_NCOP, sigma=2.5) blur_NCED = core.bilateral.Gaussian(src_NCED, sigma=2.5) # Masking credits op_mask = vdf.dcm( blur_src, blur_src[opstart:opstart+src_NCOP.num_frames-op_offset], blur_NCOP[:-op_offset], start_frame=opstart, thr=28, prefilter=False) if opstart is not False \ else get_y(core.std.BlankClip(src)) ed_mask = vdf.dcm( blur_src, blur_src[edstart:edstart+src_NCED.num_frames-ed_offset], blur_NCED[:-ed_offset], start_frame=edstart, thr=25, prefilter=False) if edstart is not False \ else get_y(core.std.BlankClip(src)) credit_mask = core.std.Expr([op_mask, ed_mask], expr='x y +') credit_mask = depth(credit_mask, 16).std.Binarize() # This time, AoD has better lines but worse gradients (over-debanded + super grained), # but only on certain dark and texture-heavy (but low-motion) scenes, but ugh effort src = depth(src, 16) line_mask = vdf.mask.FDOG().get_mask(get_y(src)) src_merge = core.std.MaskedMerge(depth(src_CR, 16), src, line_mask) src_merge = lvf.rfs(src, src_merge, [(2637, 2722), (10933, 10978), (11388, 11479), (13058, 13406), (13539, 14029), (14052, 14300), (14422, 14560)]) src_merge = depth(src_merge, 16) src_y = get_y(src_merge) denoise_y = flt.bm3d_ref(src_y, bm3d_sigma=1, dec_sigma=8, dec_min=192 << 8) denoise_y = core.std.MaskedMerge(denoise_y, src_y, line_mask) merged = vdf.misc.merge_chroma(denoise_y, src) dehalo = flt.bidehalo(merged, sigma=1, mask_args={'brz': 0.25}) cmerged = core.std.MaskedMerge(dehalo, src, credit_mask) deband = flt.masked_f3kdb(cmerged, thr=20, grain=12, mask_args={'brz': (1500, 3500)}) grain = flt.default_grain(deband) return grain # type: ignore