This forum uses cookies
This forum makes use of cookies to store your login information if you are registered, and your last visit if you are not. Cookies are small text documents stored on your computer; the cookies set by this forum can only be used on this website and pose no security risk. Cookies on this forum also track the specific topics you have read and when you last read them. Please confirm whether you accept or reject these cookies being set.

A cookie will be stored in your browser regardless of choice to prevent you being asked this question again. You will be able to change your cookie settings at any time using the link in the footer.

Esxi running macos For selur
You're right about dependencies making things a bit complicated, is there a list of plugins that have external dependencies?  I'll see what I can figure out to make it easier.
Reply
No clue whether color matrix handling is totally broken or works, but I uploaded my current dev version to GoogleDrive.
Mainly did some cosmetic changes.

Cu Selur
Reply
Thanks selur!!!
Reply
Ugh i made a dumb mistake, started encoding a file with just enough space for the .264 file, but not enough to mux the dang thing. Had to restart it because i accidentally hit the play button in jobs. And it began reencoding LOL

Lesson learned. Pick a drive with more space LOL
Reply
To make sure you still have XY MB free use "Config->Internals->Handling->Minimum size in MB which is required to start a job" Wink
Reply
Next time it happens i will mux the .x264 with mkvtoolnix.

When people use qtgmc on avisynt  qtgmc for noise reduction and they say sigma 8.0
Is sigma the amount of noise reduction? Does it translate for qtgmc for vapoursynth?
Reply
Looking at the QTGMC interface in Avisynth:
function QTGMC( clip Input, string "Preset", int "TR0", int "TR1", int "TR2", int "Rep0", int "Rep1", int "Rep2", string "EdiMode", bool "RepChroma", \
                    int "NNSize", int "NNeurons", int "EdiQual", int "EdiMaxD", string "ChromaEdi", int "EdiThreads", clip "EdiExt", float "Sharpness", \
                    int "SMode", int "SLMode", int "SLRad", int "SOvs", float "SVThin", int "Sbb", int "SrchClipPP", int "SubPel", int "SubPelInterp", \
                    int "BlockSize", int "Overlap", int "Search", int "SearchParam", int "PelSearch", bool "ChromaMotion", bool "TrueMotion", int "Lambda", \
                    int "LSAD", int "PNew", int "PLevel", bool "GlobalMotion", int "DCT", int "ThSAD1", int "ThSAD2", int "ThSCD1", int "ThSCD2", \
                    int "SourceMatch", string "MatchPreset", string "MatchEdi", string "MatchPreset2", string "MatchEdi2", int "MatchTR2", \
                    float "MatchEnhance", int "Lossless", int "NoiseProcess", float "EZDenoise", float "EZKeepGrain", string "NoisePreset", string "Denoiser", \
                    int "FftThreads", bool "DenoiseMC", int "NoiseTR", float "Sigma", bool "ChromaNoise", val "ShowNoise", float "GrainRestore", \
                    float "NoiseRestore", string "NoiseDeint", bool "StabilizeNoise", int "InputType", float "ProgSADMask", int "FPSDivisor", \
                    int "ShutterBlur", float "ShutterAngleSrc", float "ShutterAngleOut", int "SBlurLimit", bool "Border", bool "Precise", string "Tuning", \
                    bool "ShowSettings", string "GlobalNames", string "PrevGlobals", int "ForceTR", \
                    val "BT", val "DetailRestore", val "MotionBlur", val "MBlurLimit", val "NoiseBypass", float "Str", float "Amp", bool "TV_range", bool "useEdiExt", int "DftDither", bool "lsbd", bool "lsb", bool "n16", bool "keep_tv_range", String "device_type", int "device_id" )
source: https://github.com/realfinder/AVS-Stuff/...QTGMC.avsi

and QTGMC in Vapoursynth:
def QTGMC(Input, Preset='Slower', TR0=None, TR1=None, TR2=None, Rep0=None, Rep1=0, Rep2=None, EdiMode=None, RepChroma=True, NNSize=None, NNeurons=None, EdiQual=1, EdiMaxD=None, ChromaEdi='',
          EdiExt=None, Sharpness=None, SMode=None, SLMode=None, SLRad=None, SOvs=0, SVThin=0.0, Sbb=None, SrchClipPP=None, SubPel=None, SubPelInterp=2, BlockSize=None, Overlap=None, Search=None,
          SearchParam=None, PelSearch=None, ChromaMotion=None, TrueMotion=False, Lambda=None, LSAD=None, PNew=None, PLevel=None, GlobalMotion=True, DCT=0, ThSAD1=640, ThSAD2=256, ThSCD1=180, ThSCD2=98,
          SourceMatch=0, MatchPreset=None, MatchEdi=None, MatchPreset2=None, MatchEdi2=None, MatchTR2=1, MatchEnhance=0.5, Lossless=0, NoiseProcess=None, EZDenoise=None, EZKeepGrain=None,
          NoisePreset='Fast', Denoiser=None, FftThreads=1, DenoiseMC=None, NoiseTR=None, Sigma=None, ChromaNoise=False, ShowNoise=0.0, GrainRestore=None, NoiseRestore=None, NoiseDeint=None,
          StabilizeNoise=None, InputType=0, ProgSADMask=None, FPSDivisor=1, ShutterBlur=0, ShutterAngleSrc=180, ShutterAngleOut=180, SBlurLimit=4, Border=False, Precise=None, Tuning='None',
          ShowSettings=False, ForceTR=0, TFF=None, pscrn=None, int16_prescreener=None, int16_predictor=None, exp=None, alpha=None, beta=None, gamma=None, nrad=None, vcheck=None, opencl=False, device=None):
source: https://github.com/Selur/VapoursynthScri...avsfunc.py

I would say: Yes, 'Sigma' in Avisynth and Vapoursynth should do the same thing and yes Sigma is basically used as denoising strengh (not the denoising threshold), note that depending on the denoiser used Sigma might get changed internally.
-> so without knowing the rest of the used parameters 'Sigma' on it's own doesn't really help.

And before you ask: No, Hybrid does not offer to overwrite the value of Sigma.
(Personally I don't use QTGMC for filtering, I prefer to use the filters separately.)

Cu Selur
Reply
I am trying to implement something similar to an  aviscript for qtgmc and it looks like i need to do a sigma of 8.0 and a noiserestore of 0.3

On hybrid vapoursynth if i click on ezdenoise=8, which i am assuming is the sigma, i cant click on ezgrain which i am assuming is the noiserestore. 
(nevermind ezgrain is in another section) i don’t see noiserestore or grain restore customization on hybrid for qtgmc.
Am i missing something or is this going to require me to customize.

Just wondering.
Reply
Quote:On hybrid vapoursynth if i click on ezdenoise=8, which i am assuming is the sigma, i cant click on ezgrain which i am assuming is the noiserestore.
EZDenoise -> automatic setting to denoise source.
EZKeepGrain -> automatic setting to retain source grain/detail.

You can't use EZDenoise and EZKeepGrain together. Smile

If you try QTGMC will throw an error:
"QTGMC: EZDenoise and EZKeepGrain cannot be used together"

In QTGMC, if Sigma isn't set, it will be adjusted by:
if Sigma is None:
        if EZDenoise is not None and EZDenoise > 0:
            Sigma = EZDenoise
        elif EZKeepGrain is not None and EZKeepGrain > 0:
            Sigma = 4.0 * EZKeepGrain
        else:
            Sigma = 2.0
and then used in the denoiser:
if Denoiser == 'dfttest':
            dnWindow = noiseWindow.dfttest.DFTTest(sigma=Sigma * 4, tbsize=noiseTD, planes=CNplanes)
        elif Denoiser == 'knlmeanscl':
            if ChromaNoise and not isGray:
                dnWindow = KNLMeansCL(noiseWindow, d=NoiseTR, h=Sigma)
            else:
                dnWindow = noiseWindow.knlm.KNLMeansCL(d=NoiseTR, h=Sigma)
        else:
            if hasattr(core, 'neo_fft3d'):
              dnWindow = noiseWindow.neo_fft3d.FFT3D(sigma=Sigma, planes=CNplanes, bt=noiseTD)
            else:
              dnWindow = noiseWindow.fft3dfilter.FFT3DFilter(sigma=Sigma, planes=CNplanes, bt=noiseTD)

DFTTest Sigma: sigma can be anywhere from 1.0 to 256.0 and beyond; denoising "strength" seems proportional to the square root of sigma.
KNLMeansCL h (Sigma): Controls the strength of the filtering. Larger values will remove more noise.
FFT3D: sigma - given noise value for all (or highest) frequencies (float>0, default=2.0)

When GrainRestore is not overwritten, it is set by:
if GrainRestore is None:
        if EZDenoise is not None and EZDenoise > 0:
            GrainRestore = 0.0
        elif EZKeepGrain is not None and EZKeepGrain > 0:
            GrainRestore = 0.3 * math.sqrt(EZKeepGrain)
        else:
            GrainRestore = [0.0, 0.7, 0.3][NoiseProcess]
but might be overwritten to 0 if NoiseProcess > 0.

-> If you want to understand the options your best bet is probably trying to read the QTGMC script itself, since it's decent documented in the script.

Quote:Am i missing something or is this going to require me to customize.
Not really knowing what you want to do, you probably need to write your own script. Smile

Cu Selur
Reply
Lol, 
Will try to read the instructions. 

I wish i could tell you, even i don’t know what im doing lol
Reply


Forum Jump:


Users browsing this thread: 9 Guest(s)