5
0

vivy: tv: harder debanding

This commit is contained in:
louis f 2021-04-25 09:50:00 -04:00
parent e2a47f8716
commit 2784de289a
Signed by: louis
GPG Key ID: 44D7E1DE4E23D6F2
4 changed files with 30 additions and 9 deletions

@ -1,7 +1,7 @@
import vapoursynth as vs
from vivy_common import (VivyConfig, VivySource, antialias, deband, denoise,
finalize, fsrcnnx_rescale, letterbox_edgefix)
finalize, fsrcnnx_rescale, letterbox_edgefix, regrain)
from yt_common.automation import SelfRunner
from yt_common.source import waka_replace
@ -14,6 +14,7 @@ from typing import List
import os
core = vs.core
core.num_threads = 16
EPNUM: int = int(os.path.basename(os.path.splitext(__file__)[0]))
@ -43,6 +44,7 @@ def filter_basic() -> vs.VideoNode:
waka = wakas[0]
waka, wakas = waka_replace(waka, wakas[1:], WAKA_REPLACE)
src = bounded_dehardsub(waka, ref, SIGNS_RU, wakas)
src.set_output(1)
return src
@ -52,7 +54,8 @@ def filter() -> vs.VideoNode:
den = denoise(rescale)
deb = deband(den)
aa = antialias(deb, NOAA)
edgefix = letterbox_edgefix(aa, LETTERBOX)
grain = regrain(aa)
edgefix = letterbox_edgefix(grain, LETTERBOX)
final = finalize(edgefix)
final.set_output()
return final

@ -1,2 +1,2 @@
from .filter import antialias, deband, denoise, finalize, fsrcnnx_rescale, letterbox_edgefix # noqa: F401
from .filter import antialias, deband, denoise, finalize, fsrcnnx_rescale, letterbox_edgefix, regrain # noqa: F401
from .config import VivyConfig, VivySource # noqa: F401

@ -4,11 +4,13 @@ import lvsfunc as lvf
import vardefunc as vdf
from awsmfunc import bbmod
from debandshit import f3kbilateral
from lvsfunc.types import Range
from mvsfunc import BM3D
from typing import List, Optional
from yt_common import antialiasing
from yt_common.deband import morpho_mask
import os
import vsutil
@ -38,14 +40,24 @@ def letterbox_edgefix(clip: vs.VideoNode, ranges: List[Range]) -> vs.VideoNode:
return lvf.misc.replace_ranges(clip, edgefix, ranges)
def denoise(clip: vs.VideoNode, sigma: float = 0.75) -> vs.VideoNode:
def denoise(clip: vs.VideoNode, sigma: float = 1.5) -> vs.VideoNode:
bm3d: vs.VideoNode = BM3D(clip, sigma=sigma, depth=16)
return bm3d
def deband(clip: vs.VideoNode) -> vs.VideoNode:
deb: vs.VideoNode = vdf.dumb3kdb(clip, radius=18, threshold=36, grain=[24, 0])
return deb
grad_mask, yrangebig = morpho_mask(clip.dfttest.DFTTest(sigma=14, sigma2=10, sbsize=1, sosize=0)
.rgvs.RemoveGrain(3))
y = vsutil.get_y(clip)
mask = lvf.mask.detail_mask(clip)
deband_dumb: vs.VideoNode = vdf.dumb3kdb(clip)
deband_weak: vs.VideoNode = core.std.MaskedMerge(vsutil.get_y(deband_dumb), y, mask)
deband_norm: vs.VideoNode = f3kbilateral(y, y=36)
deband_strong: vs.VideoNode = f3kbilateral(y, y=65)
deband = core.std.MaskedMerge(deband_strong, deband_norm, grad_mask)
deband = core.std.MaskedMerge(deband, deband_weak, yrangebig)
deband = core.std.ShufflePlanes([deband, deband_dumb], planes=[0, 1, 2], colorfamily=vs.YUV)
return deband
def antialias(clip: vs.VideoNode, noaa: Optional[List[Range]] = None) -> vs.VideoNode:
@ -53,6 +65,12 @@ def antialias(clip: vs.VideoNode, noaa: Optional[List[Range]] = None) -> vs.Vide
return lvf.misc.replace_ranges(clamp, clip, noaa) if noaa else clamp
def regrain(clip: vs.VideoNode) -> vs.VideoNode:
sgrain: vs.VideoNode = kgf.adaptive_grain(clip, 0.15, luma_scaling=10)
dgrain: vs.VideoNode = kgf.adaptive_grain(clip, 0.1, luma_scaling=25, static=False)
grain = dgrain.std.MergeDiff(clip.std.MakeDiff(sgrain))
return grain
def finalize(clip: vs.VideoNode) -> vs.VideoNode:
grain = kgf.adaptive_grain(clip, 0.1)
return vsutil.depth(grain, 10)
return vsutil.depth(clip, 10)

@ -1 +1 @@
x265 --input - --y4m --input-depth 10 --output-depth 10 --input-csp i420 --profile main10 --colormatrix bt709 --colorprim bt709 --transfer bt709 --preset slower --rc-lookahead 72 --keyint 360 --min-keyint 23 --subme 5 --qcomp 0.7 --crf 15 --aq-mode 3 --aq-strength 0.9 --bframes 16 --psy-rd 0.95 --psy-rdoq 1.8 --rdoq-level 1 --deblock -2:-2 --no-sao --no-open-gop --frames {frames:d} --output {filename:s}.h265
x265 --input - --y4m --input-depth 10 --output-depth 10 --input-csp i420 --profile main10 --colormatrix bt709 --colorprim bt709 --transfer bt709 --preset slower --rc-lookahead 72 --keyint 360 --min-keyint 23 --subme 5 --qcomp 0.7 --crf 15 --aq-mode 3 --aq-strength 0.9 --bframes 16 --psy-rd 2.0 --psy-rdoq 1.8 --rdoq-level 1 --deblock -2:-2 --no-sao --no-open-gop --no-wpp --frames {frames:d} --output {filename:s}.h265