vivy: tv: harder debanding
This commit is contained in:
parent
e2a47f8716
commit
2784de289a
Vivy
@ -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
|
||||
|
Loading…
x
Reference in New Issue
Block a user