vivy: tv: harder debanding
This commit is contained in:
parent
e2a47f8716
commit
2784de289a
@ -1,7 +1,7 @@
|
|||||||
import vapoursynth as vs
|
import vapoursynth as vs
|
||||||
|
|
||||||
from vivy_common import (VivyConfig, VivySource, antialias, deband, denoise,
|
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.automation import SelfRunner
|
||||||
from yt_common.source import waka_replace
|
from yt_common.source import waka_replace
|
||||||
@ -14,6 +14,7 @@ from typing import List
|
|||||||
import os
|
import os
|
||||||
|
|
||||||
core = vs.core
|
core = vs.core
|
||||||
|
core.num_threads = 16
|
||||||
|
|
||||||
|
|
||||||
EPNUM: int = int(os.path.basename(os.path.splitext(__file__)[0]))
|
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[0]
|
||||||
waka, wakas = waka_replace(waka, wakas[1:], WAKA_REPLACE)
|
waka, wakas = waka_replace(waka, wakas[1:], WAKA_REPLACE)
|
||||||
src = bounded_dehardsub(waka, ref, SIGNS_RU, wakas)
|
src = bounded_dehardsub(waka, ref, SIGNS_RU, wakas)
|
||||||
|
src.set_output(1)
|
||||||
return src
|
return src
|
||||||
|
|
||||||
|
|
||||||
@ -52,7 +54,8 @@ def filter() -> vs.VideoNode:
|
|||||||
den = denoise(rescale)
|
den = denoise(rescale)
|
||||||
deb = deband(den)
|
deb = deband(den)
|
||||||
aa = antialias(deb, NOAA)
|
aa = antialias(deb, NOAA)
|
||||||
edgefix = letterbox_edgefix(aa, LETTERBOX)
|
grain = regrain(aa)
|
||||||
|
edgefix = letterbox_edgefix(grain, LETTERBOX)
|
||||||
final = finalize(edgefix)
|
final = finalize(edgefix)
|
||||||
final.set_output()
|
final.set_output()
|
||||||
return final
|
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
|
from .config import VivyConfig, VivySource # noqa: F401
|
||||||
|
@ -4,11 +4,13 @@ import lvsfunc as lvf
|
|||||||
import vardefunc as vdf
|
import vardefunc as vdf
|
||||||
|
|
||||||
from awsmfunc import bbmod
|
from awsmfunc import bbmod
|
||||||
|
from debandshit import f3kbilateral
|
||||||
from lvsfunc.types import Range
|
from lvsfunc.types import Range
|
||||||
from mvsfunc import BM3D
|
from mvsfunc import BM3D
|
||||||
from typing import List, Optional
|
from typing import List, Optional
|
||||||
|
|
||||||
from yt_common import antialiasing
|
from yt_common import antialiasing
|
||||||
|
from yt_common.deband import morpho_mask
|
||||||
|
|
||||||
import os
|
import os
|
||||||
import vsutil
|
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)
|
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)
|
bm3d: vs.VideoNode = BM3D(clip, sigma=sigma, depth=16)
|
||||||
return bm3d
|
return bm3d
|
||||||
|
|
||||||
|
|
||||||
def deband(clip: vs.VideoNode) -> vs.VideoNode:
|
def deband(clip: vs.VideoNode) -> vs.VideoNode:
|
||||||
deb: vs.VideoNode = vdf.dumb3kdb(clip, radius=18, threshold=36, grain=[24, 0])
|
grad_mask, yrangebig = morpho_mask(clip.dfttest.DFTTest(sigma=14, sigma2=10, sbsize=1, sosize=0)
|
||||||
return deb
|
.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:
|
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
|
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:
|
def finalize(clip: vs.VideoNode) -> vs.VideoNode:
|
||||||
grain = kgf.adaptive_grain(clip, 0.1)
|
return vsutil.depth(clip, 10)
|
||||||
return vsutil.depth(grain, 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