Welcome to Doom9's Forum, THE in-place to be for everyone interested in DVD conversion. Before you start posting please read the forum rules. By posting to this forum you agree to abide by the rules. |
|
|||||||
![]() |
|
|
Thread Tools | Search this Thread | Display Modes |
|
|
#21 | Link |
|
Join Date: Mar 2006
Location: Barcelona
Posts: 5,034
|
Maybe there's something else but I know that KNLMeansCL does not work with Interface Version 5.
__________________
Groucho's Avisynth Stuff |
|
|
|
|
|
#22 | Link |
|
Join Date: Mar 2006
Location: Barcelona
Posts: 5,034
|
There's something fishy about your Avisynth.dll. It reads "linker version 10" which means that it was built with VC2010. There is no official build that was built with this compiler.
__________________
Groucho's Avisynth Stuff |
|
|
|
|
|
#23 | Link | ||
|
Registered User
Join Date: Jan 2012
Location: Mesopotamia
Posts: 2,668
|
Quote:
Quote:
__________________
See My Avisynth Stuff |
||
|
|
|
|
|
#24 | Link | |
|
Join Date: Mar 2006
Location: Barcelona
Posts: 5,034
|
Quote:
__________________
Groucho's Avisynth Stuff |
|
|
|
|
|
|
#25 | Link | |
|
Registered User
Join Date: Feb 2002
Location: California
Posts: 2,776
|
I moved a lot of the DLLs offline and got rid of the "more than 50 DLL" error. The plugin still will not load. I don't want to take this thread further OT, so as much as I'd like to try out KNLMeansCL, I don't have the time to go chasing this.
FWIW, this is the log I got after removing lots of DLLs: Quote:
|
|
|
|
|
|
|
#26 | Link | |
|
Broadcast Encoder
Join Date: Nov 2013
Location: Royal Borough of Kensington & Chelsea, UK
Posts: 3,307
|
@johnmeyer...
Quote:
Unfortunately for you, it seems that KNLMeansCL and masktools2 builds have not been statically linked. P.s side note that will make all the XP users happy: Microsoft C++ Redistributable 2017 and Intel C++ Redistributable 2017 have been released for XP as well!
|
|
|
|
|
|
|
#27 | Link |
|
Join Date: Mar 2006
Location: Barcelona
Posts: 5,034
|
@John
The problem is easily fixable. In order to avoid OT posts, create a new thread "Problem loading KNLMeansCL" or similar. A moderator will then hopefully delete all OT posts. For now, I suggest you do the following:
__________________
Groucho's Avisynth Stuff |
|
|
|
|
|
#28 | Link |
|
Registered User
Join Date: Feb 2008
Posts: 59
|
As BM3D appears to be a vapoursynth plugin, is there a way to get this to work with avisynth or specifically avisynth+
ref = core.bm3d.Basic(clp, sigma=18, block_step=1) clp = core.bm3d.Final(clp, ref, sigma=18, block_step=1) I'm aware there is a way to load avisynth plugins for use with vapoursynth that don't have the equivalent or that specific plugin in vapoursynth, but is there a way to get vapoursynth plugins/functions to work with avisynth Thanks |
|
|
|
|
|
#29 | Link | |
|
I'm Siri
Join Date: Oct 2012
Location: void
Posts: 2,633
|
Quote:
you could ask pinterf to add an API compatible layer for vaporsynth then you could use vaporsynth plugins in avisynth |
|
|
|
|
|
|
#30 | Link |
|
I'm Siri
Join Date: Oct 2012
Location: void
Posts: 2,633
|
@johnmeyer and others
removing all visible noise is an intentionally set goal only for tests and comparisons, to see how good each individual denoiser is in extreme cases (mainly to amplify the quality difference between different denoisers). generally if some denoiser is better even in the most extreme case, it should also be better in normal or less extreme cases. of course it's your own choice how much noise you'd like to remove when you're actually using the denoiser. BUT, I'll remove ALL visible noise for the testing purpose. |
|
|
|
|
|
#31 | Link |
|
The speed of stupid
Join Date: Sep 2011
Posts: 317
|
It's useful for comparing the most extreme behaviours of the denoisers, but it's not really effective for seeing how good a result you can squish out of them.
and ultimately the latter is the important part ah hah hah |
|
|
|
|
|
#33 | Link |
|
The speed of stupid
Join Date: Sep 2011
Posts: 317
|
The better result is simply the most visually pleasing result you can mix out of a given set of options.
It gets even blurrier once you start mixing denoiser outputs simply to make the interference mask out the quirks of either. But then again I treat image/video filtering exactly like one would treat audio filtering, with a lot of blending of a little bit of this and a little bit of that. |
|
|
|
|
|
#34 | Link | |
|
I'm Siri
Join Date: Oct 2012
Location: void
Posts: 2,633
|
Quote:
it's your very own business to mix whatever you like. this thread is NOT about mixing the results of different parameters it however is about which denoiser is GENERALLY better under what kind of circumstance. it won't tell you the ultimate answer but it tells you where to start. |
|
|
|
|
|
|
#35 | Link |
|
Registered User
Join Date: Oct 2014
Posts: 268
|
The best a plugin is at separating noise and real detail / real image, the better the final result will be, it's that simple. Even if you then apply 'less of the effect' or you start blending some less-strong variants in to not remove all the noise, the same scale applies so the plugin that has the best result with 100% noise reduction will have the best result with 50% noise reduction.
The only thing that comes into play here is that when you for instance compare the plugins at 50% (or less noise reduction), the differences in result comes so close that it doesn't matter which one you pick. In other words, the fact that one is better doesn't come into play then... but it still makes one better than the other. At this moment completely agree with fesity2: Comparing noise reduction should be done at 100% noise reduction. Actually using it in real life is a matter of personal taste which no one can argue about .But I do agree that it should also be looked at in motion, because the amount of temporal effect (and artifacts in that) plays a huge role. If the noise is changing and moving (well, 'different') every frame than a temporal denoiser (mdegrain?) can give results that blow every spatial denoiser out of the water . Since knmeanscl and vBM3D both have a temporal element (vBM3D adds a temporal thing to BM3D, right?) and we're talking about video-denoising and not photo-denoising here, I think we should have a movie for the target, or at least 'a movie next to the image'.On the other hand, I don't see a use in 'testing' it here. It's quite clear right? People stop using stuff besides knlmeanscl / bm3d / smdegrain (or mdegrain based stuff). Maybe as a prefilter other stuff comes in (RGTools can be handy inside of filters / functions sometimes for quick and easy removing of mosquito stuff) but otherwise all other stuff is outdated the way I see it. Doesn't remove the fact that some people just get results with plugins they like or have trouble running a newer plugin (like KNMeansCL because of the gpu stuff, or vBM3D because of the speed + ram requirements). It comes down to this I guess: To everyone using older plugins: 'everyone listen up! all denoisers except knlmeanscl / vbm3d / mdegrain are outdated! Just so you know!' To feisty2: 'To go on a mission to change people minds, or scripts or settings they've been using for a while is not worth your energy. People have their reasons to use what they use. You shouldn't (have to) care about people oblivious to newer stuff' |
|
|
|
|
|
#36 | Link |
|
I'm Siri
Join Date: Oct 2012
Location: void
Posts: 2,633
|
I just finished the video test like minutes ago.
conclusion (judging from the sample clip I picked): V-BM3D is the best among 3 in general, but it suffers from some kind of "liquefying" low frequency artifacts which does not exist in NLMeans nor MDeGrain. unlike V-BM3D that makes use of both intra-patch correlations (wavelet shrinkage, wiener, etc..) and inter-patch correlations (self-similarity), NLMeans and MDeGrain are both a member of the inter-patch correlation based family, and both suffer from certain limitations because of that, NLMeans works better with high frequency components but destroys low and medium frequency components, MDeGrain on the other hand preserves low and medium frequency components better than NLMeans but blurs out high frequency components. ranking: quality of high frequency filtering: NLMeans > V-BM3D ? MDeGrain (no idea which is better) quality of medium frequency filtering: V-BM3D > MDeGrain > NLMeans quality of low frequency filtering: MDeGrain > V-BM3D > NLMeans general quality: V-BM3D > NLMeans >(?) MDeGrain (NLMeans should be better theoretically, but the test shows each has its own cons and pros) I'll upload the processed video clips and get back later. Ground Truth screenshot: ![]() Noisy screenshot: ![]() NLMeans (spatiotemporal) screenshot: ![]() Code:
KNLMeansCL(clip, 6, 32, 3, 4.0) screenshot: ![]() Code:
msuper_args = dict(sharp=2, levels=0) manalyze_args = dict(search=3, truemotion=False, trymany=True, levels=0, badrange=-24, divide=0, dct=0) mrecalculate_args = dict(truemotion=False, search=3, smooth=1, divide=0, dct=0) mdegrain_args = dict(thscd1=16711680.0, thscd2=255.0) supersoft = core.mvsf.Super(clip, rfilter=4, pel=4, **msuper_args) vmulti = mvmulti.Analyze(supersoft, tr=6, overlap=64, blksize=128, **manalyze_args) vmulti = mvmulti.Recalculate(supersoft, vmulti, tr=6, overlap=32, blksize=64, thsad=400, **mrecalculate_args) vmulti = mvmulti.Recalculate(supersoft, vmulti, tr=6, overlap=16, blksize=32, thsad=400, **mrecalculate_args) vmulti = mvmulti.Recalculate(supersoft, vmulti, tr=6, overlap=8, blksize=16, thsad=400, **mrecalculate_args) vmulti = mvmulti.Recalculate(supersoft, vmulti, tr=6, overlap=4, blksize=8, thsad=400, **mrecalculate_args) vmulti = mvmulti.Recalculate(supersoft, vmulti, tr=6, overlap=2, blksize=4, thsad=400, **mrecalculate_args) vmulti = mvmulti.Recalculate(supersoft, vmulti, tr=6, overlap=1, blksize=2, thsad=400, **mrecalculate_args) supersharp = core.mvsf.Super(clip, rfilter=2, pel=4, **msuper_args) clip = mvmulti.DegrainN(clip, supersharp, vmulti, tr=6, thsad=2000, **mdegrain_args) supersharp = core.mvsf.Super(clip, rfilter=2, pel=4, **msuper_args) clip = mvmulti.DegrainN(clip, supersharp, vmulti, tr=6, thsad=2000, **mdegrain_args) #single pass is not strong enough to remove all visible noise supersharp = core.mvsf.Super(clip, rfilter=2, pel=4, **msuper_args) clip = mvmulti.DegrainN(clip, supersharp, vmulti, tr=6, thsad=2000, **mdegrain_args) #single pass is not strong enough to remove all visible noise screenshot: ![]() Code:
ref = core.bm3d.VBasic(clip, profile="np",radius=6,sigma=12, block_step=2).bm3d.VAggregate(6,1) clip = core.bm3d.VFinal(clip, ref, profile="np",radius=6,sigma=12, block_step=2).bm3d.VAggregate(6,1) Last edited by feisty2; 25th January 2017 at 08:00. |
|
|
|
|
|
#37 | Link |
|
Registered User
Join Date: Oct 2014
Posts: 268
|
which frame number is the screenshot you took, to compare?
ps: If you have a Ground Truth version, that means you added the noise artificially? I had (have?) a bit of trouble getting your raw files to read. I finally found a x64 compiled vsrawsource plugin on your github of all places so I can read the files in vapoursynth. But had trouble writing it out to an image sequence or something else without loosing the 32bit floating point. Best I could do was to write an EXR sequence so I get 16bit floating point, or to write any kind of TIF or PNG sequence, but since the ImageMagick in imwri is still Q16-based, it writes 16bit integer tif or PNG files. So somewhere I always end up truncating your single-precision floats to 16bit integer. Anyway, loaded it into After Effects, applied Neat Video and rendered it out to single-precision tif files. I do still want to load those tif files back into vapoursynth to use fmtconv (or zimg) to dither them down to 8bit for website viewing / posting... the dithering in After Effects is atrocious. Last edited by dipje; 25th January 2017 at 11:57. |
|
|
|
|
|
#38 | Link | |
|
I'm Siri
Join Date: Oct 2012
Location: void
Posts: 2,633
|
Quote:
you don't have to keep the 32bits precision cuz you're gonna compare the results from a monitor with your eyes, I'm sure there's no monitor, even the most high end, professional ones could do a full 32bits precision display (hell, some low end monitors are even less than 8bits), plus, even if there is such monitor, human eyes won't be able to tell the difference, just round or dither it down to 8bits (or 10bits if you have such monitor). |
|
|
|
|
![]() |
| Thread Tools | Search this Thread |
| Display Modes | |
|
|