DGDenoise
Re: DGDenoise
Oy, that last slipstream was brain-dead.
OK, I fixed the DGDenoise problem. Now I have one little issue in DGTelecide. Fixes coming soon...
Thanks for pointing this out, gonca.
OK, I fixed the DGDenoise problem. Now I have one little issue in DGTelecide. Fixes coming soon...
Thanks for pointing this out, gonca.
Re: DGDenoise
Thanks for creating the filters
Re: DGDenoise
Thanks. Of course, it would be better if they worked properly.
I just slipstreamed the fix. Heading over to the binaries thread to announce it.
I just slipstreamed the fix. Heading over to the binaries thread to announce it.
Re: DGDenoise
This works pretty good on your sample, gonca:
dgsource("sample.dgi")
dgdenoise(strength=2.0,searchw=9,chroma=true)
dgsharpen()
That's industrial strength. Reduce strength and/or searchw, or turn off chroma, if you like.
dgsource("sample.dgi")
dgdenoise(strength=2.0,searchw=9,chroma=true)
dgsharpen()
That's industrial strength. Reduce strength and/or searchw, or turn off chroma, if you like.
Re: DGDenoise
I have read the documentation but would you recommend searchw=9 or chroma+true over the defaults in general terms?
Re: DGDenoise
Generally, it's a tradeoff of speed against thoroughness (aka, "quality").
Take chroma. Make this script:
dgsource("sample.dgi")
UtoY() # visualize the chroma U plane
and compare it to this:
dgsource("sample.dgi")
grayscale() # visualize the luma plane
You will see that there is lots of noise in the luma but only a relatively small amount in the chroma. That's pretty typical. So adding chroma=true will slow things down while not doing much for the perceived result.
Regarding searchw. The bigger it is the better the smoothing but you lose some detail and it takes longer.
I usually just go with searchw=5 and chroma=false and then set the strength as desired. I don't work with very noisy sources like your sample, however. The knobs are there for you to tweak for noisier sources.
Take chroma. Make this script:
dgsource("sample.dgi")
UtoY() # visualize the chroma U plane
and compare it to this:
dgsource("sample.dgi")
grayscale() # visualize the luma plane
You will see that there is lots of noise in the luma but only a relatively small amount in the chroma. That's pretty typical. So adding chroma=true will slow things down while not doing much for the perceived result.
Regarding searchw. The bigger it is the better the smoothing but you lose some detail and it takes longer.
I usually just go with searchw=5 and chroma=false and then set the strength as desired. I don't work with very noisy sources like your sample, however. The knobs are there for you to tweak for noisier sources.
Re: DGDenoise
Thanks for the explanation and information.
I normally don't work with sources that noisy but I do have some older movies hat seem to be from the era of "Movie Grain is King"
I normally don't work with sources that noisy but I do have some older movies hat seem to be from the era of "Movie Grain is King"
Re: DGDenoise
Running an encode and it looks like its all working as it should
Re: DGDenoise
Sweet, thanks for the report and testing. I tested this version pretty well too.
Re: DGDenoise
Why is the chroma U plane view shown at half frame width? Is it because of the YV12 4.2.0 colorspace?admin wrote:Generally, it's a tradeoff of speed against thoroughness (aka, "quality").
Take chroma. Make this script:
dgsource("sample.dgi")
UtoY() # visualize the chroma U plane
and compare it to this:
dgsource("sample.dgi")
grayscale() # visualize the luma plane
Re: DGDenoise
It's also half height. Yes, it is that way because there is one U sample (and one V sample) for each block of 4 luma samples.
Y Y
Y Y
U
V
Y Y
Y Y
U
V
Re: DGDenoise
Ah, the penny dropped why I got the horizontal reduction only. My source was actually 4:2:2 rather than 4:2:0.
Thanks.
Thanks.
Re: DGDenoise
A cosmetic issue with DGDenoise:
When I set strength=0.0 I am getting an almost black picture for chroma=false, and a green picture for chroma=true.
Well, one should not set strength to zero, right?
When I set strength=0.0 I am getting an almost black picture for chroma=false, and a green picture for chroma=true.
Well, one should not set strength to zero, right?
Re: DGDenoise
Right. I'll add a check for that. Thanks for pointing it out.
Re: DGDenoise
Hello,
Sorry for asking that, but how can one access CUDA Filters packaged into DGDecodeNV?
I have been using DGDecNV for a few years and now opted for giving a try to DGDenoise to speed up my scripts feeded into x265.
Thank you in advance for the support.
Sorry for asking that, but how can one access CUDA Filters packaged into DGDecodeNV?
I have been using DGDecNV for a few years and now opted for giving a try to DGDenoise to speed up my scripts feeded into x265.
Thank you in advance for the support.
Re: DGDenoise
Just load plugin DGDecodeNV.dll and then use DGDenoise(). If you use DGSource() then you have already loaded the dll. Refer to the DGDecodeNV user manual for parameters.
Re: DGDenoise
Isn't DGDenoise Vapoursynth-compatible? I tried using it the normal way as dgdecodenv.dll is in the VS plugins autoload folder, but the function is not recognized. DGSource itself works just fine. I'd like to switch to DGDenoise as my prefiltering tool, it's much faster than KNLMeansCL even with chroma processing enabled.
Re: DGDenoise
DGDenoise is not native-Vapoursynth-enabled. You can run it in avscompat mode, however. Here is an example:
import vapoursynth as vs
core = vs.get_core()
core.avs.LoadPlugin("DGDecodeNV.dll")
core.avs.LoadPlugin("DGHDRtoSDR.dll")
clip = core.avs.DGSource("Coco.dgi",fulldepth=True)
clip = core.avs.DGHDRtoSDR(clip,fulldepth=False)
clip = core.avs.DGDenoise(clip)
clip.set_output()
I'm trying to stay away from native support, as it is a major hassle to implement and maintain two versions. If you run into any serious downsides from avscompat mode, please let me know.
BTW, you can run DGSource() in native mode with DGDenoise() in avscompat mode, but you have to load the DLL into both namespaces:
import vapoursynth as vs
core = vs.get_core()
core.std.LoadPlugin("DGDecodeNV.dll")
core.avs.LoadPlugin("DGDecodeNV.dll")
core.std.LoadPlugin("DGHDRtoSDR.dll")
clip = core.dgdecodenv.DGSource("Coco.dgi",fulldepth=True)
clip = core.dghdrtosdr.DGHDRtoSDR(clip,fulldepth=False)
clip = core.avs.DGDenoise(clip)
clip.set_output()
import vapoursynth as vs
core = vs.get_core()
core.avs.LoadPlugin("DGDecodeNV.dll")
core.avs.LoadPlugin("DGHDRtoSDR.dll")
clip = core.avs.DGSource("Coco.dgi",fulldepth=True)
clip = core.avs.DGHDRtoSDR(clip,fulldepth=False)
clip = core.avs.DGDenoise(clip)
clip.set_output()
I'm trying to stay away from native support, as it is a major hassle to implement and maintain two versions. If you run into any serious downsides from avscompat mode, please let me know.
BTW, you can run DGSource() in native mode with DGDenoise() in avscompat mode, but you have to load the DLL into both namespaces:
import vapoursynth as vs
core = vs.get_core()
core.std.LoadPlugin("DGDecodeNV.dll")
core.avs.LoadPlugin("DGDecodeNV.dll")
core.std.LoadPlugin("DGHDRtoSDR.dll")
clip = core.dgdecodenv.DGSource("Coco.dgi",fulldepth=True)
clip = core.dghdrtosdr.DGHDRtoSDR(clip,fulldepth=False)
clip = core.avs.DGDenoise(clip)
clip.set_output()
Re: DGDenoise
Thanks, I think I'll start using the avscompat mode for now. I suppose there are no big differences what comes to performance or stability of DGSource?
Re: DGDenoise
That's right, there is no significant difference performance-wise. There is a difference in autoloading but to me it is a minor matter.
Re: DGDenoise
I seem to recall something about a custom avscompat.dll for vapoursynth ... is one needed ?
I really do like it here.
Re: DGDenoise
Hello dear Donald.
Thank you for your wonderful plugins and filters, they are really useful and are used by me and many users around the world.
I ask you to refine the filter "DGDenoise", having made separate adjustment of parameters for Luma and Chroma in it, this will allow it to be used much better. In particular, I have the original video files, which for high-quality noise reduction without loss of detail, the current version of the same parameter values for Luma and Chroma in the "DGDenoise" filter is not enough.
The current option for the "DGDenoise" filter looks like this:
DGDenoise (clip c, float strength, float blend, bool chroma, int searchw, int device)
I suggest you create new additional parameters:
L_strength # Luma strength
L_blend # Luma blend
L_searchw # Luma searchw
C_strength # Chroma strength
C_blend # Chroma blend
C_searchw # Chroma searchw
At the same time, it would be nice to make compatibility with the old parameter format so that if the values of the new parameters are not specified (separately for Luma and Chroma), then the old parameters would act if their values are indicated (strength, blend, chroma, searchw).
Now I have to resort to such a trick for separately adjusting the noise reduction parameters for Luma and Chroma:
lumadenoise = DGDenoise(strength=0.10, blend=0.5, chroma=false, searchw=9, device=255)
chromadenoise = DGDenoise(strength=0.12, blend=0, chroma=true, searchw=9, device=255)
lumadenoise.MergeChroma(chromadenoise)
But I would like to achieve the same result by setting the parameters in the "DGDenoise" filter in one line, for 1 time, this would be more correct, convenient and possibly faster.
Thank you for your wonderful plugins and filters, they are really useful and are used by me and many users around the world.
I ask you to refine the filter "DGDenoise", having made separate adjustment of parameters for Luma and Chroma in it, this will allow it to be used much better. In particular, I have the original video files, which for high-quality noise reduction without loss of detail, the current version of the same parameter values for Luma and Chroma in the "DGDenoise" filter is not enough.
The current option for the "DGDenoise" filter looks like this:
DGDenoise (clip c, float strength, float blend, bool chroma, int searchw, int device)
I suggest you create new additional parameters:
L_strength # Luma strength
L_blend # Luma blend
L_searchw # Luma searchw
C_strength # Chroma strength
C_blend # Chroma blend
C_searchw # Chroma searchw
At the same time, it would be nice to make compatibility with the old parameter format so that if the values of the new parameters are not specified (separately for Luma and Chroma), then the old parameters would act if their values are indicated (strength, blend, chroma, searchw).
Now I have to resort to such a trick for separately adjusting the noise reduction parameters for Luma and Chroma:
lumadenoise = DGDenoise(strength=0.10, blend=0.5, chroma=false, searchw=9, device=255)
chromadenoise = DGDenoise(strength=0.12, blend=0, chroma=true, searchw=9, device=255)
lumadenoise.MergeChroma(chromadenoise)
But I would like to achieve the same result by setting the parameters in the "DGDenoise" filter in one line, for 1 time, this would be more correct, convenient and possibly faster.
Re: DGDenoise
Yes I can do that. There are some other pending enhancement requests. I hope to get to it soon after getting DGDemux with MVC etc. out the door. Thank you for your suggestion and welcome to the forum, zybex!
Re: DGDenoise
I really do like it here.